用户身份与文件权限
5.1 用户身份与能力
管理员UID为0:系统的管理员用户。
系统用户UID为1~999: Linux系统为了避免因某个服务程序出现漏洞而被黑客提权至整台服务器,默认服务程序会有独立的系统用户负责运行,进而有效控制被破坏范围。
普通用户UID从1000开始:是由管理员创建的用于日常工作的用户。
管理员 0 root
系统用户 5/6 1-499
7/8 1-999
普通用户 5/6 500-65535
7/8 1000-
1. useradd命令
表5-1 useradd命令中的用户参数以及作用
参数 | 作用 |
-d | 指定用户的家目录(默认为/home/username) |
-e | 账户的到期时间,格式为YYYY-MM-DD. |
-u | 指定该用户的默认UID |
-g | 指定一个初始的用户基本组(必须已存在) |
-G | 指定一个或多个扩展用户组 |
-N | 不创建与用户同名的基本用户组 |
-s | 指定该用户的默认Shell解释器 |
2. groupadd命令
groupadd命令用于创建用户组,格式为“groupadd [选项] 群组名”。
3. usermod命令
usermod命令用于修改用户的属性,格式为“usermod [选项] 用户名”。
表5-2 usermod命令中的参数及作用
参数 | 作用 |
-c | 填写用户账户的备注信息 |
-d -m | 参数-m与参数-d连用,可重新指定用户的家目录并自动把旧的数据转移过去 |
-e | 账户的到期时间,格式为YYYY-MM-DD |
-g | 变更所属用户组 |
-G | 变更扩展用户组 |
-L | 锁定用户禁止其登录系统 |
-U | 解锁用户,允许其登录系统 |
-s | 变更默认终端 |
-u | 修改用户的UID |
4. passwd命令
passwd命令用于修改用户密码、过期时间、认证信息等,格式为“passwd [选项] [用户名]”。
表5-3 passwd命令中的参数以及作用
参数 | 作用 |
-l | 锁定用户,禁止其登录 |
-u | 解除锁定,允许用户登录 |
--stdin | 允许通过标准输入修改用户密码,如echo "NewPassWord" | passwd --stdin Username |
-d | 使该用户可用空密码登录系统 |
-e | 强制用户在下次登录时修改密码 |
-S | 显示用户的密码是否被锁定,以及密码所采用的加密算法名称 |
5. userdel命令
userdel命令用于删除用户,格式为“userdel [选项] 用户名”。
表5-4 userdel命令的参数以及作用
参数 | 作用 |
-f | 强制删除用户 |
-r | 同时删除用户及用户家目录 |
5.2 文件权限与归属
-:普通文件。
d:目录文件。
l:链接文件。
b:块设备文件。
c:字符设备文件。
p:管道文件。
文件权限的字符与数字表示
r: read 读
w:write 写
x:execute 执行
5.3 文件的特殊权限
特殊权限是对一般权限功能的补充
1. SUID 让程序的执行者临时拥有了所有着的权限
查看passwd命令属性时发现所有者的权限由rwx变成了rws,其中x改变成s就意味着该文件被赋予了SUID权限。
-rwsr-xr-x
前三位
rwx ---- rws
rw- ---- rwS
2. SGID 目录内新建的文件,继承上级目录所有组的名称
SGID主要实现如下两种功能:
让执行者临时拥有属组的权限(对拥有执行权限的二进制程序进行设置);
在某个目录中创建的文件自动继承该目录的用户组(只可以对目录进行设置)。
-r-xr-sr-x
中间三位
rwx ---- rws
rw- ---- rwS
3. SBIT 让目录内的文件只能够被自己删除
当目录被设置SBIT特殊权限位后,文件的其他人权限部分的x执行权限就会被替换成t或者T,原本有x执行权限则会写成t,原本没有x执行权限则会被写成T。
drwxrwxrwt
后三位
rwx ---- rwt
rw- ---- rwT
chmod
能够用来设置文件或目录的权限,格式为“chmod [参数] 权限 文件或目录名称”
chmod [-R] 674 文件名
chown
设置文件或目录的所有者和所属组,这里使用的命令为chown,其格式为“chown [参数] 所有者:所属组 文件或目录名称”。
chown 所有者:所有组
特殊权限的数字算法 s是4 S是2 t是1
rws rwS r--
先写成一般权限 :rwx rw- r-- 764
特殊权限是s4 S2 4+2=6
最后的数字权限为 6 764
5164
先写成一般权限 164 --x rw- r--
5 是s和T --s rw- r-T
5.4 文件的隐藏属性
Linux系统中的文件除了具备一般权限和特殊权限之外,还有一种隐藏权限,即被隐藏起来的权限,默认情况下不能直接被用户发觉。
1. chattr命令 设置文件的隐藏权限,格式为“chattr [参数] 文件”。
表5-6 chattr命令中用于隐藏权限的参数及其作用
参数 | 作用 |
i | 无法对文件进行修改;若对目录设置了该参数,则仅能修改其中的子文件内容而不能新建或删除文件 |
a | 仅允许补充(追加)内容,无法覆盖/删除内容(Append Only) |
S | 文件内容在变更后立即同步到硬盘(sync) |
s | 彻底从硬盘中删除,不可恢复(用0填充原文件所在硬盘区域) |
A | 不再修改这个文件或目录的最后访问时间(atime) |
b | 不再修改文件或目录的存取时间 |
D | 检查压缩文件中的错误 |
d | 使用dump命令备份时忽略本文件/目录 |
c | 默认将文件或目录进行压缩 |
u | 当删除该文件后依然保留其在硬盘中的数据,方便日后恢复 |
t | 让文件系统支持尾部合并(tail-merging) |
x | 可以直接访问压缩文件中的内容 |
2. lsattr命令 用于显示文件的隐藏权限,格式为“lsattr [参数] 文件”
chattr +权限 文件名 追加(设置)
chattr -权限 文件名 移除(取消)
lsattr 文件名(查看)
红帽考题:删除文件名
rm rm-f 无法直接删除
① 查看隐藏权限 lsattr 文件名
② 删除隐藏权限 chattr -a 文件名
③ 删除文件 rm 文件名
[root@linuxprobe ~]# lsattr linuxprobe -----a---------- linuxprobe [root@linuxprobe ~]# chattr -a linuxprobe [root@linuxprobe ~]# lsattr linuxprobe ---------------- linuxprobe [root@linuxprobe ~]# rm linuxprobe rm: remove regular file ‘linuxprobe’? y |
5.5 文件访问控制列表
1. setfacl命令
2. getfacl命令
setfacl -m u:用户名:权限 文件名 进行读写执行权限的控制
setfacl -b 取消某个文件的ACL
getfacl 文件名 显示文件上设置的ACL信息
[root@linuxprobe ~]# ls -ld /root
dr-xrwx---+ 14 root root 4096 May 4 2017 /root
文件的权限最后一个点(.)变成了加号(+),这就意味着该文件已经设置了ACL了。
5.6 su命令与sudo服务
su 切换用户
su - 用户名称
su命令与用户名之间有一个减号(-),这意味着完全切换到新的用户,即把环境变量信息也变更为新用户的相应信息,而不是保留原始的信息。强烈建议在切换用户身份时添加这个减号(-)。
sudo命令用于给普通用户提供额外的权限来完成原本root管理员才能完成的任务,格式为“sudo [参数] 命令名称”
visudo命令来配置用户权限。
谁可以使用 允许使用的主机=(以谁的身份) 可执行命令的列表
如果需要让某个用户只能使用root管理员的身份执行指定的命令,切记一定要给出该命令的绝对路径,否则系统会识别不出来。我们可以先使用whereis命令找出命令所对应的保存路径,然后把配置文件第99行的用户权限参数修改成对应的路径即可:
每次执行sudo命令都要输入一次密码其实也挺麻烦的,这时可以添加NOPASSWD参数,使得用户执行sudo命令时不再需要密码验证
©著作权归作者所有:来自51CTO博客作者米朵?的原创作品,如需转载,请注明出处,否则将追究法律责任