11.Linux 权限管理,控制对文件的访问(ACL)
Linux : 权限管理,控制对文件的访问(ACL)
一、基础文件属性
drwxr-xr-x. 3 root root 16 May 28 09:28 home
- 文件类型:首位字符(d=目录,-=文件,l=链接,c=字符,b=块设备)
- 权限组:
rwx
:所有者权限(读/写/执行)r-x
:所属组权限r-x
:其他用户权限
- 元数据:
3
:引用计数(如果目标是目录,代表子目录个数;如果目标是文件,则是硬链接个数-1)root
:所有者root
:所属组16
:文件大小(字节)May 28 09:28
:最后修改时间
二、权限表示法
类型 | 读® | 写(w) | 执行(x) |
---|---|---|---|
字符 | r | w | x |
数字 | 4 | 2 | 1 |
三、权限管理
-
数字模式:
chmod(change mode)
-作用:修改文件或目录的访问权限
-权限类型:包括读(r)、写(w)、执行(x)三种基本权限,分别对应数字 4、2、1
-适用对象:文件所有者(user)、所属组(group)、其他用户(others)
-示例:chmod 755 file.txt 表示所有者拥有读 / 写 / 执行权限,所属组和其–他用户拥有读 / 执行权限
chown(change owner)
-作用:修改文件或目录的所有者(可以同时修改所属组)
-只有超级用户(root)可以修改文件的所有者
-示例:chown user1 file.txt 将文件所有者改为 user1;chown user1:group1 file.txt 同时将所有者改为 user1,所属组改为 group1
chgrp(change group)
-作用:专门修改文件或目录的所属组
-用户必须是目标组的成员才能修改文件的所属组(除非是 root 用户)
-示例:chgrp group1 file.txt 将文件的所属组改为 group1chmod 777 file # 所有用户拥有rwx权限 chmod 644 file1 # 所有者rw,其他用户只读
-
符号模式:
使用字母来改变文件的权限
-----参数设置
a 所有用户
u 创建者
g 同组用户
o 除去创建者和同组用户之外的用户
+ 增加权限
- 清除权限
= 设置唯一权限
-----常用设置
g+w – 增加组用户的写权限
o-rwx – 清除其他用户的全部访问权限
u+x – 允许文件属主执行文件
a+rw – 允许所有用户读和写文件
ug+r – 允许文件属主和属组用户读文件
g=rx – 设置属组用户只能读和执行文件chmod u+x file # 给所有者增加执行权限 chmod g-w,o-r file.txt # 移除组写权限和其他读权限 chmod a=rw file # 所有用户设为读写 chmod -R g+w /data/ # 递归设置目录内所有文件
四、所有权管理
chown user:group file.txt # 同时修改所有者和所属组
chown -R admin /project/ # 递归修改目录所有者
chgrp devteam /src/ # 修改目录所属组
五、特殊权限
权限 | 符号 | 数字 | 作用场景 | 示例 |
---|---|---|---|---|
SUID | u+s | 4xxx | 二进制文件 | chmod 4755 /usr/bin/mkdir |
SGID | g+s | 2xxx | 目录/二进制文件 | chmod 2770 /shared/ |
Sticky | o+t | 1xxx | 目录 | chmod 1777 /tmp/ |
- SUID:以文件所有者身份执行(如
passwd
命令) - SGID:目录中新文件继承父目录组权限
- Sticky:仅允许所有者删除自己的文件(如
/tmp
)
六、ACL高级权限控制
-
设置ACL:
# 用户权限 setfacl -m u:misa:rw file #只允许用户misa对文件有读写权限 setfacl -m u:misa:rwx -R /dir/ # 递归设置 setfacl -m d:u:misa:rwx /dir/ # 设置默认ACL(新文件继承)# 组权限 setfacl -m g:devs:r-- project.doc
-
查看ACL:
getfacl file.txt # 输出示例: # file: file.txt # owner: root # group: misa user::rw- user:misa:rwx # 用户misa有rwx权限 group::r-- group:note:r-- # 组note有读权限 mask::rwx other::r--
-
删除ACL:
setfacl -x u:lisi file.txt # 删除单条ACL setfacl -b file.txt # 删除文件ACL权限 setfacl -k /dir/ # 删除目录的default权限(删除继承)
七、默认权限规则
用户类型 | 目录权限 | 文件权限 | Umask值 |
---|---|---|---|
root | 755 (rwxr-xr-x) | 644 (rw-r–r–) | 022 |
普通用户 | 775 (rwxrwxr-x) | 664 (rw-rw-r–) | 002 |
-
Umask计算:
默认权限 - umask = 实际权限
-
修改Umask:
umask 022 # 设置当前会话umask