Linux Chapter05——用户身份与文件权限
用户分类
- 管理员 UID为0
- 系统用户 UID 为1~999
- 普通用户 UID从1000
id
id命令用户显示用户的详细信息
id 用户名
useradd
useradd用于创建新用户
useradd[参数] 用户名
- -d 指定用户的家目录
- -e 账户的到期时间
- -u 指定该用户的默认UID
- -g 指定一个初始的用户基本组
- -G 指定一个或多个扩展用户组
- -N 不创建与用户同名的基本用户组
- -s 指定该用户的默认Shell解释器
[root@linuxprobe ~]# useradd linuxcool
[root@linuxprobe ~]# id linuxcool
uid=1007(linuxcool) gid=1007(linuxcool) groups=1007(linuxcool
groupadd
groupadd用于创建新的用户组
groupadd[参数] 群组名
usermod
usermod用于修改用户的属性
usermod[参数] 用户名
- -c 填写用户账户的备注信息
- -d -m 可重新指定用户的家目录并自动把旧的数据转移过去
- -e 设置账户的到期时间
- -g 变更所属用户组
- -G 变更扩展用户组
- -L 锁定用户禁止其登录系统
- -U 解锁用户,允许其登录系统
- -s 变更默认终端
- -u 修改用户的UID
passwd
passwd用于修改用户密码、过期时间
passwd[参数] 用户名
- 普通用户只能使用passwd命令修改自己的系统密码
- root管理员则有权限修改其他所有人的密码,并且root管理员在Linux系统中修改自己或他人的密码时不需要验证旧密码
- -l 锁定用户 禁止其登录
- -u 解除锁定
- --stdin 通过标准输入修改用户密码
- -d 使该用户可用空密码登录系统
- -e 强制用户在下次登录时修改密码
- -S 显示用户的密码是否被锁定,以及密码所采用的加密算法名称
userdel
userdel命令用于删除已有的用户账户
userdel[参数]用户名
- -f 强制删除用户
- -r 同时删除用户及用户家目录
文件权限与归属
Linux系统中,每个文件都有归属的所有者和所属组,并且规定了文件的所有者、所属组以及其他人对文件所拥有的可读(r)、可写(w)、可执行(x)等权限
文件的可读、可写、可执行权限r、w、x可分别用数字4、2、1
来表示,文件所有者、文件所属组及其他用户
- 7:可读、可写、可执行(4+2+1)
- 6:可读、可写
- 4:可读
排在权限前面的减号-是文件类型,减号表示普通文件。常见的文件类型为 - 普通文件
- d 目录文件
- l 链接文件
- p 管道文件
- b 块设备文件
- c 字符设备文件
文件的特殊权限
SUID
SUID是一种对二进制程序进行设置的特殊权限,能够让二进制程序的执行者临时拥有所有者的权限(仅对拥有执行权限的二进制程序有效)
在查看passwd命令属性时发现所有者的权限由rwx变成了rws,其中x变成了s就意味着该文件被赋予了SUID权限。如果原本的权限是rw-,如果原先权限位上没有x执行权限,那么被赋予特殊权限后将变成大写的S
SGID
SGID特殊权限有两种应用场景:
- 当对二进制程序进行设置时,能够让执行者临时获取文件所属组的权限。当对目录进行设置时,让目录内新创建的文件自动继承该目录原有用户组的名称
chmod
chmod命令用于设置文件的一般权限和特殊权限
chmod[参数] 文件名
chown
chown命令用于设置文件的所有者和所有组
chown 所有者:所有组 文件名
- -R 表示针对目录的递归操作
SBIT
SBIT特殊权限可确保用户只能删除自己的文件,不能删除其他用户的文件
当模流被设置为SBIT特殊权限位红藕,文件的其他用户权限部分的x执行权限就会被替换成t和T(原本有x执行权限则会写成t,原本没有x执行权限则会写成T)
SUID、SGID、SBIT权限设置参数
- u+s 设置SUID权限
- u-s 取消SUID权限
- g+s 设置SGID权限
- g-s 取消SGID权限
- o+t 设置SBIT权限
- o-t 取消SBIT权限
文件的隐藏属性
Linux系统中的文件除了一般的特殊权限之外,还有一种隐藏权限。即被隐藏起来的权限默认情况下不能直接被用户发觉
隐藏的权限用常规的ls
是无法被查看的,查看隐藏权限的专用设置命令是chattr
,专用查看命令是lsattr
chattr
chattr用于设置文件的隐藏权限
chattr[参数]文件名称
如果想要把某个隐藏哦功能添加到文件上,则需要在命令后面追加"+参数",如果想要把某个隐藏功能移出文件,则需要追加"-参数"
- i 无法对文件进行修改,若对目录设置了该参数,则仅能修改其中的子文件内容而不能新建或删除文件
- a 仅允许补充(追加)内容,无法覆盖/删除内容
- S 文件内容在变更后立即同步到硬盘
- s 彻底从硬盘中删除,不可恢复
- A 不再修改这个文件或目录的最后访问时间
- b 不再修改文件或目录的存取时间
- D 检查压缩文件中的错误
- d 使用dump命令备份时忽略本文件
- c 默认将文件或目录进行压缩
- u 当删除该文件后依然保留其在硬盘中的数据,便于恢复
- t 让文件系统支持尾部合并
- x 可以直接访问压缩文件中的内容
案例
- 先创建一个普通文件,然后尝试删除这个文件
[root@linuxprobe ~]# echo "it's test" > linuxprobe
[root@linuxprobe ~]# rm linuxprobe
rm: remove regular file 'linuxprobe'? y
[root@linuxprobe ~]# ls
发现可以直接删除
- 再创建一个文件,并为其设置"不允许删除与覆盖+a参数"
[root@linuxprobe ~]# echo "it's test" > linuxprobe
[root@linuxprobe ~]# chattr +a linuxprobe
[root@linuxprobe ~]# rm linuxprobe
rm: remove regular file 'linuxprobe'? y
rm: cannot remove 'linuxprobe': Operation not permitted
lsattr
lsattr命令用于查看文件的隐藏权限。
lsattr[参数]文件名称
[root@linuxprobe ~]# lsattr linuxprobe
-----a------------ linuxprobe
文件访问控制列表ACL
如果希望对某个指定的用户进行单独的权限控制,就需要用到文件的访问控制列表ACL,针对指定的用户或用户组设置文件或目录的操作权限,更加精准地派发权限
- 如果针对某个目录设置ACL,则目录中的文件会继承其ACL权限
- 如果针对文件设置ACL,则文件不再继承其所在目录的ACL权限
setfacl
setfacl用于管理文件的ACL权限规则
setfacl[参数]文件名称
- -R 递归子目录
- -m 修改权限
- -b 删除全部权限
- -x 删除某个权限
getfacl
getfacl用于查看文件的ACL权限
getfacl [参数] 文件名
坑:相关东西以后再补
su命令与sudo服务
su使得当前用户在不退出登录的情况下,顺畅地切换到其他用户
- 完全切换到新用户,把环境变量信息也变为新用户的相应信息
sudo用于给普通用户提供额外的权限 sudo[参数] 用户名
- 完全切换到新用户,把环境变量信息也变为新用户的相应信息
sudo
sudo命令用于给普通用户提供额外的权限
sudo[参数]用户名