Linux文件权限管理与ACL配置
一、文件属性解读
示例: drwxr-xr-x. 3 root root 16 May 28 09:28 home
字段 | 含义 |
---|
d | 文件类型(目录) |
rwx | 所有者权限(读、写、执行) |
r-x | 所属组权限(读、执行) |
r-x | 其他用户权限(读、执行) |
3 | 引用计数(硬链接计数) |
root | 所有者 |
root | 所属组 |
16 | 大小(字节) |
May 28 09:28 | 最后修改时间 |
home | 文件/目录名 |
二、权限表示方法
三、修改文件权限 (chmod)
1. 数字模式
chmod 777 test1 # 所有者、组、其他用户均赋予 rwx 权限
chmod 644 file.txt # 所有者:rw-,组和其他:r--
2. 字符模式
常用命令:
chmod o+w test2 # 其他用户添加写的权限
chmod go-rw test3 # 所属组和其他用户移除读写权限
chmod a-rw test4 # 所有的用户移除读写权限
chmod u+x script.sh # 允许所有者执行脚本
chmod -R g+w /home/test5/ # 递归为目录下所有的文件和目录的所属组添加写的权限
四、修改所有者/组 (chown/chgrp)
chown linux /home/test6 # 修改所有者
chown linux:linux /home/test7 # 同时修改所有者和所属组
chgrp linux /home/test8 # 修改所属组
chgrp -R linux /home/test9/ # 递归修改目录下所有文件的所属组
五、特殊权限
权限 | 作用场景 | 设置方法 | 数字标识 |
---|
SUID | 二进制文件 | chmod u+s /usr/bin/mkdir | 4xxx (如 4755) |
SGID | 二进制文件/目录 | chmod g+s /tmp/test | 2xxx (如 2770) |
Sticky | 目录(防误删) | chmod o+t /tmp/test | 1xxx (如 1777) |
说明:
- SUID:应用于二进制文件,调用二进制文件的所有者的身份来执行。
- SGID:应用于二进制文件或者目录,当作用在目录的时候,拥有继承权限。
- Sticky:应用于目录,对目录使用了sticky权限,对该目录具有写入权限
的任何用户(root用户除外)仅能删除自己为属主的文件或目录。
六、默认权限与 umask
用户类型 | 新建目录权限 | 新建文件权限 | 默认 umask |
---|
root | 755 (rwxr-xr-x) | 644 (rw-r–r–) | 0022 |
普通用户 | 775 (rwxrwxr-x) | 664 (rw-rw-r–) | 0002 |
计算示例:
- root 用户创建文件:
666 - 022 = 644
- 普通用户创建目录:
777 - 002 = 775
七、ACL 高级权限控制
1. 设置 ACL (setfacl)
setfacl -m u:admin:rw a # 只允许 admin 用户对文件 a 有读写权限setfacl -m g:lisi:rw a # 只允许 lis i组对文件 a 有读写权限
setfacl -m u:admin:rwx b/ # 只允许 admin 用户对目录 b/ 有读写权限
setfacl -m g:lisi:rwx b/ # 只允许 lisi 组队目录 b/ 有读写权限
2. 继承 ACL(默认权限)
setfacl -m u:admin:rwx b/ # 需先设置目录本身的 ACL
setfacl -m d:u:admin:rwx b/ # 只允许 admin 用户对目录 b/ 有读写权限,且在目录b/下新建的文件或目录
继承目录b/的权限
3. 删除 ACL
setfacl -k b/ # 删除目录 b/ 的 default 权限(删除继承)
setfacl -b a # 删除文件 a 的 acl 权限
总结命令速查
功能 | 命令示例 |
---|
数字修改权限 | chmod 755 file |
递归修改组 | chgrp -R dev /project/ |
设置 SUID | chmod u+s /usr/bin/file |
设置 SGID 目录 | chmod g+s /shared/ |
设置 ACL 继承 | setfacl -m d:g:dev:rwx /shared/ |