Linux学习之用户身份与文件权限

1 用户身份及能力

Linux系统的管理员之所以是root,并不是因为其名叫root,而是该用户身份号码数值(UID)为0.

  管理员UID为0:系统的管理员用户

  系统用户UID为1-999:Linux系统为了避免因某个服务程序出现漏洞而被黑客提权至整个服务器,默认服务程序会有独立的系统用户负责运行,进而有效控制被破坏范围。

  普通用户UID从1000开始:是由管理员创建的用于日常工作的用户。

在Linux系统中创建每个用户时,将自动创建一个同名的基本用户组,且该用户组只有用户一个人。如果该用户以后被归纳入其他用户组,则这个其他用户组称为扩展用户组。一个用户只有一个基本用户组,但可以有多个扩展用户组。

  1.1 useradd命令

  用于创建新的用户,格式为“useradd [选项] 用户名”

  常用参数及作用

  -d  指定用户的家目录(默认为/home/username)

  -e  账户的到期时间,格式为“2018-10-01”

  -u  指定该用户的默认UID

  -g  指定一个初始的用户基本组(必须已存在)

  -G  指定一个或多个扩展用户组

  -N  不创建与用户同名的基本用户组

  -s  指定该用户的默认shell解释器

   % useradd -d /home/linux -u -s /sbin/nologin linuxprobe #一旦用户的解释器被设置为nologin,则代表该用户不能登录到系统中。

  1.2 groupadd命令

  用于创建用户组,格式为“groupadd [选项] 群组名”


Linux中没有直接根据组名查询GID的命令

可用如下方法

% grep eric /etc/group #群组文件放置在/etc/group中


  1.3 usermod 命令

  用于修改创建用户组,格式为“usermod [选项] 用户名”

  常用参数及作用:

  -c  填写用户账户的备注信息

  -d -m  参数-m与-d连用,可重新指定用户的家目录并自动把旧的数据转移过去

  -e  账户的到期时间,格式为“2018-10-01”

  -g  变更所属用户组

  -G  变更扩展用户组

  -L  锁定用户禁止其登录系统

  -U  解锁用户,允许其登录系统

  -s  变更默认终端

  -u  修改用户的UID

  1.4 passwd命令

  用于修改用户密码、过期时间、认证信息等,格式为“passwd [选项] [用户名]”

普通用户只能使用此命令修改自己的密码,而root则有权限修改其他所有人的密码

  常用参数及作用:

  -l  锁定用户,禁止其登录

  -u  解除锁定,允许用户登录

  --stdin  允许通过标准输入修改用户密码,如'echo "NewPassWord" | passwd --stdin Username'

  -d  使该用户可用空密码登录系统

  -e  强制用户在下次登录时修改密码

  -S  显示用户的密码是否被锁定,以及密码所采用的加密算法名称

  1.5 userdel 命令

  用于删除用户,格式为“userdel [选项] 用户名”

  常用参数及作用:

  -f  强制删除用户

  -r  同时删除用户及用户家目录

  2 文件权限及归属

  Linux文件类型:

  -   普通文件

  d  目录文件

  l   链接文件

  b  块设备文件

  c  字符设备文件

  p  管道文件

对于目录文件来说,“可读”表示能够读取目录内的文件列表,“可写”表示能够在目录内新增、删除、重命名文件,“可执行”则表示能够进入该目录。

  r—4   w—2    x—1

  权限:rwxrw-r--  764  #必须对应权限项,无权限位置用-

1          2                3      4          5            6                 7                                8

1:文件类型

2:文件访问权限

3:文件数

4:文件拥有者

5:文件所属组

6:文件大小

7:文件修改时间

8:文件名


输出第N列信息

例:上文中依据组名查询GID,只输出GID

原输出为: eric:x::

% grep eric /etc/group | awk -F: '{print $3}' #-F参数是用来分割原字符串,后加分割标识符,后面{print $3}必须加大括号

输出为10000


 3 文件的特殊权限

  3.1 SUID

  SUID是一种对二进制程序进行设置的特殊权限,可以让二进制程序的执行者临时拥有属主的权限(仅对拥有执行权限的二进制程序有效)。

  设置SUID:(u+s)

% chmod u+s filename

设置SUID后,执行位x替换为s,若无执行权限,则该位为S

  3.2 SGID

  主要实现两种功能:一是让执行者临时拥有属组的权限(对拥有执行权限的二进制程序进行设置);二是在某个目录中创建的文件自动继承该目录的用户组(只可以对目录进行设置,如部门的共享目录)。SGID的第一种功能是参考SUID设计的,不同点在于执行程序的用户获取的不再是文件所有者的临时权限,而是获取到文件所属组的权限。

  设置SGID:(g+s)

% chmod -Rf g+s filename    # -R  递归处理    -f  不显示错误信息

  3.3 chmod命令

  用于设置文件或目录的权限,格式为“chmod [参数] 权限”

  3.4 chown命令

  用于设置文件或目录的所有者和所属组,格式为“chown [参数] 所有者:所属组 文件或目录名称”

% chown root:bin test

  3.5 SBIT(粘滞位或保护位)

  SBIT特殊权限可以确保用户只能删除自己的文件,而不能删除其他用户的文件。换句话说,设置了SBIT,该目录中的文件就只能被其所有者执行删除操作了。设置了SBIT后,执行位x替换为t,若无执行权限则为T。

  设置SBIT(o+t)

   % chmod -R o+t /root

特殊权限更多内容:https://www.jianshu.com/p/b390688a7af8

  4 文件的隐藏属性

  4.1 chattr命令

  用于设置文件的隐藏权限,格式为“chattr [参数] 文件”。添加隐藏功能,需“+参数”,移除隐藏功能,则为“-参数”。

  常用参数及作用:

  i  无法对文件进行修改;若对目录设置了该参数,则仅能修改其中的子文件内容而不能新建或删除文件。

  a  仅允许补充(追加)内容,无法覆盖/删除内容(Append Only)

  S  文件内容在变更后立即同步到硬盘(sync)感觉类似于flush

    s  彻底从硬盘中删除,不可恢复(用0填充原文件所在硬盘区域)

  A  不再修改这个文件或目录的最后访问时间(atime)

  b  不再修改文件或目录的存取时间

  D  检查压缩文件中的错误

  d  使用dump命令备份时忽略本文件/目录

  c  默认将文件或目录进行压缩

  u  当删除文件后依然保留其在硬盘中的数据,方便日后恢复

  t  让文件系统支持尾部合并(tail-merging)

  X  可以直接访问压缩文件中的内容

  4.2 lsattr命令

  用于显示文件的隐藏权限,格式为“lsattr [参数] 文件”,Linux系统中隐藏权限必须用lsattr查看。

  5 文件访问控制列表(ACL)

  一般权限、特殊权限、隐藏权限共性:针对某一类用户

  文件访问控制列表:针对某一个用户

  若对某个目录设置了ACL,该目录内文件会继承其ACL;若对文件设置了ACL,则文件不再继承其所在目录的ACL。

  5.1 setfacl命令

  用于管理文件的ACL规则,格式为“setfacl [参数] 文件名称”。文件的ACL提供的是在所有者、所属组、其他人的rwx权限之外的特殊权限控制,使用setfacl命令可以针对单一用户或用户组、单一文件或目录来进行rwx权限的控制。

  常用参数及作用:

  -R  对目录进行递归设置ACL

  -m  对普通文件设置ACL

  -b  删除某个文件/目录的ACL  

   % setfacl -Rm u:linuxprobe:rwx /root   #u为user的简写,也可写user、g(group)、mask、other

ACL要素:

ACL_USER_OBJ:相当于Linux里file_owner的permission
ACL_USER:定义了额外的用户可以对此文件拥有的permission
ACL_GROUP_OBJ:相当于Linux里group的permission
ACL_GROUP:定义了额外的组可以对此文件拥有的permission
ACL_MASK:定义了ACL_USER, ACL_GROUP_OBJ和ACL_GROUP的最大权限
ACL_OTHER:相当于Linux里other的permission

  5.2 getfacl命令

  用于显示文件上设置的ACL信息,格式为“getfacl 文件名称”,可加--omit-header省略掉前三行。

[root@localhost ~]# getfacl ./test.txt
# file: test.txt
# owner: root
# group: admin
user::rw-  #1
user:john:rw-  #2
group::rw-  #3
group:dev:r--  #4
mask::rw- other::r--  #5

1:文件拥有者权限,ACL_USER_OBJ

2:用户john权限,ACL_USER

3:文件所属组权限,ACL_GROUP_OBJ

4:用户组dev权限,ACL_GROUP

5:MASK权限(ACL中最大权限,其他用户/用户组权限均不得大于此,否则按此权限执行)

设置ACL后 ls查看文件权限的最后一位由“.”变成了“+”

见到设置了ACL的文件/目录,不能单单依靠ls查看所有者、所属组及其他人的权限,如设置ACL时定义了MASK,则MASK权限替代GROUP权限显示,需使用getfacl命令查看。

  6 su命令与sudo服务

  6.1 su命令

  用于切换用户身份,格式为“su - 用户名”,-表示完全切换到新用户,即把环境变量信息也变更为新用户。

  6.2 sudo命令

  用于给普通用户提供额外的权限来完成原本root管理员才能完成的任务(指定提权),格式为“sudo [参数] 命令名称”。

  主要参数及作用:

  -h  列出帮助信息

  -l  列出当前用户可执行的命令

  -u用户名或UID值  以指定的用户身份执行命令

  -k  清空密码的有效时间,下次执行sudo时需要再次进行密码验证

  -b  在后台执行指定的命令

  -p  更改询问密码的提示语

  6.3 visudo命令

  类似于vim,用于配置用户权限,此命令执行时将禁止多个用户同时修改sudoers配置文件,还可以对配置文件内的参数进行语法检查,并在发现参数错误时进行报错。只有root管理员才可以用visudo命令编辑sudo服务的配置文件。

  填写规则:

  谁可以使用 允许使用的主机=(以谁的身份) 可执行命令列表(命令必须为绝对路径,用whereis查看)

  例 在99行加入:linuxprobe ALL=(ALL) ALL  #linuxprobe可执行root权限的所有命令

    在99行加入:linuxprobe    ALL=(root) /usr/bin/cat  #linuxprobe可查看/root(root管理员家目录)中的文件信息

   % sudo cat /etc/shadow

  linuxprobe ALL=NOPASSWD:  /usr/sbin/poweroff  #“NOPASSWD:”参数使得用户执行sudo命令时不需密码验证,不要忘了:否则报错

Linux学习之用户身份与文件权限的更多相关文章

  1. 《Linux就该这么学》培训笔记_ch05_用户身份与文件权限

    <Linux就该这么学>培训笔记_ch05_用户身份与文件权限 文章最后会post上书本的笔记照片. 文章主要内容: 用户身份与能力 文件权限与归属 文件的特殊权限 文件的隐藏属性 文件访 ...

  2. Linux常用命令--用户管理,文件权限,打包命令等

    幕布链接 Linux常用命令--用户管理,文件权限,打包命令等

  3. 6Linux用户身份与文件权限

    3类用户身份: (1)管理员UID为0,root (2)系统用户UID为1-999:nologin不能登录系统,老版本5.6中是1-499 (3)普通用户UID为1000开始,老版本5.6中是1000 ...

  4. Linux用户身份与文件权限学习笔记

    用户身份 管理员UID为0:系统的管理员用户 系统用户UID为1~999:服务程序会有独立的系统用户负责运行:防止被黑客入侵进行提权,并有效控制被破坏的范围 普通用户UID从1000开始:是由管理员创 ...

  5. linux用户身份和文件权限

    1.用户身份与能力 root管理员是linux 的超级用户,他拥有系统的所有权,能够管理系统的各项功能,如添加/删除用户,启动/关闭服务进程,开启/禁用硬件设备…… "Linux系统中的管理 ...

  6. linux用户身份与文件权限

    用户 useradd [ 参数 ] 用户名 添加用户 sudo useradd -d /home/test -u 1001 -s /bin/bash name usermod [选项] 用户名 更改用 ...

  7. linux 学习7 用户管理相关文件 r

    7.1.用户配置文件 7.2.用户管理相关文件 7.3.用户管理命令 7.4.用户组管理命令 删除用户userdel [root@localhost ~]# userdel [-r] 用户名 //一定 ...

  8. Linux学习《第五章 用户身份与文件权限》

  9. Linux 用户身份与进程权限

    在学习 Linux 系统权限相关的主题时,我们首先关注的基本都是文件的 ugo 权限.ugo 权限信息是文件的属性,它指明了用户与文件之间的关系.但是真正操作文件的却是进程,也就是说用户所拥有的文件访 ...

随机推荐

  1. SQLServer之创建Transact-SQL游标

    什么是游标 结果集,结果集就是select查询之后返回的所有行数据的集合. 游标则是处理结果集的一种机制吧,它可以定位到结果集中的某一行,多数据进行读写,也可以移动游标定位到你所需要的行中进行操作数据 ...

  2. Linq语法常见普通语法

    闲言碎语 近期比较忙,但还是想写点什么,就分享一些基础的知识给大家看吧,希望能帮助一些linq新手,如果有其它疑问,可以进右上角群,进行交流探讨,谢谢. 开门见山 读这篇文章之前,我先说下,每一种搜索 ...

  3. Webstorm 2018 激活破解

    本文最后更新于 2018-5-4 可能会因为没有更新而失效.如已失效或需要修正,请留言! 问题 激活 webstorm 2018 最新版 解决步骤 License server:http://hb5. ...

  4. June. 25th 2018, Week 26th. Monday

    Change in all things is sweet. 有改变就会有美好. From Aristole. Change is always good, but embracing change ...

  5. asyncio 基础用法

    asyncio 基础用法 python也是在python 3.4中引入了协程的概念.也通过这次整理更加深刻理解这个模块的使用 asyncio 是干什么的? asyncio是Python 3.4版本引入 ...

  6. ARTS打卡第三周

    Algorithm 题目描述 Given an array of integers, find if the array contains any duplicates. Your function ...

  7. Shell 全局变量、环境变量和局部变量

    Shell 变量的作用域(Scope),就是 Shell 变量的有效范围(可以使用的范围). 在不同的作用域中,同名的变量不会相互干涉,就好像 A 班有个叫小明的同学,B 班也有个叫小明的同学,虽然他 ...

  8. [十二省联考2019]D1T1异或粽子

    嘟嘟嘟 做这题之前,强烈推荐先把这道题切了P1631序列合并. 这两道题思路基本一模一样. 首先把异或处理成前缀异或,然后维护一个大根堆,每一次取出堆顶加到答案里面,然后把堆顶所在元素的次大的异或值放 ...

  9. html与ios交互方法 WebViewJavascriptBridge

    WebViewJavascriptBridge 1.html调用ios的方法 <!DOCTYPE html> <html lang="en"> <he ...

  10. 初识Haskell

    在COMP30026 Models of Computation中接触了新的编程语言Haskell,一个之前听都没有听过的语言,在此记录关于Haskell的一些最基本概念. 1.Haskell是一个函 ...