rwx 权限控制文件的访问。但在部分场景下,单一的 rwx 权限可能不够灵活,还会用到特殊权限 s。例如,/etc/shadow 文件存储了系统中所有用户的加密密码,因此不能直接授予所有用户对该文件的访问。但是普通用户确实会有变更密码的需求,此时便可引入 SUID 权限,以允许用户更改自己的密码。/etc/shadow 文件的权限,而是通过 /usr/bin/passwd 进行操作,因此需要先赋予 SetUID(简称 SUID)权限。ls 查看可知:ls -l /usr/bin/passwd
-rwsr-xr-x. 1 root root 31984 Mar 31 23:51 /usr/bin/passwd
rws,而不是 rwx。当 s 出现在 x 的位置上时,即可称之为 SetUID Bits 或 SUID。其特点如下:/usr/bin/passwd 时,会短暂获得 root 权限进而执行该指令,完成密码的修改访问。chmod u+s filename # 符号方式,+ 表增加该权限chmod 4755 filename # 数字方式,对应数字 4
chmod u-s filename # 符号方式,- 表取消该权限chmod 755 filename # 数字方式
ls -ld 命令查看目录的 SGID 权限。以下示例中,目录 /shared/project 已通过 chmod 2755 设置了 SGID 权限:ls -ld /shared/project
drwxr-sr-x. 2 root root 4096 May 6 15:03 /shared/project
r-s,s 出现在用户组执行权限 x 的位置上,表明该目录已被设置 SGID 权限。chmod g+s dirname # 符号方式,+ 表增加该权限chmod 2755 dirname # 数字方式,对应数字 2
chmod g-s dirname # 符号方式,- 表取消该权限chmod 755 dirname # 数字方式
/tmp 目录:ls -ld /tmp/
drwxrwxrwt. 7 root root 140 May 6 15:03 /tmp/
t,表明该目录被设置了 SBIT 权限。此时,当用户在该目录下创建新文件或目录时,仅有自己和 root 才有权限删除,防止他人的删除操作。chmod o+t dirname # 符号方式,+ 表增加该权限chmod 1755 dirname # 数字方式,对应数字 1
chmod o-t dirname # 符号方式,- 表取消该权限chmod 755 dirname # 数字方式
umask 查看当前系统的默认 umask 值:umask
0022
umask 0037 # 临时生效
/etc/bashrc,修改其中已有的 umask 行,或在文件末尾添加 umask 设置(对所有用户生效)。以将 umask 值修改为 0037 为例,在 /etc/bashrc 末尾添加:umask 0037
~/.bashrc 文件末尾添加同样的设置。修改完成后,重新登录或执行以下命令使配置立即生效:source /etc/bashrc
/etc/profile 修改只在用户第一次登录时被执行,而 /etc/bashrc 修改则在用户每次登录加载 shell 时执行。rwx 权限。ACL 在此基础上,为每个文件和目录添加了一组更细粒度的访问控制规则,允许您为不同的用户和组设置不同的访问权限。sudo dnf install acl
getfacl 命令。例如,要查看 file1 的 ACL 设置:getfacl file1
# file: file1# owner: root# group: rootuser::rw-group::r--other::r--
setfacl 命令。例如,要给用户 opencloudos 添加对 file1 的读写和执行权限:sudo setfacl -m u:opencloudos:rwx file1
file1 的 ACL:getfacl file1
# file: file1# owner: root# group: rootuser::rw-user:opencloudos:rwxgroup::r--mask::rwxother::r--
user:opencloudos:rwx 行已添加,表示用户 opencloudos 拥有对 file1 的读写和执行权限。同时,ACL 会自动生成一个 mask 条目,表示 ACL 中所有用户和组的最大有效权限。devteam 组添加读写权限:sudo setfacl -m g:devteam:rw file1
sudo setfacl -x u:opencloudos file1
sudo setfacl -b file1
sudo setfacl -d -m u:opencloudos:rx /shared/project
/shared/project 目录下新建的文件,用户 opencloudos 将自动获得读取和执行权限。sudo setfacl -R -m u:opencloudos:rwx /shared/project
文档反馈