引言
在Linux系统中,文件权限是保障数据安全和系统稳定的核心机制。合理的权限管理不仅能防止未授权访问,还能优化多用户协作。本文将深入解析文件权限的基础概念、特殊权限(SUID/SGID/Sticky)及ACL高级控制,并结合实战示例,助你全面掌握Linux权限管理的精髓。
一、基本权限:rwx详解
Linux文件的三种基本权限:
-
读(r):查看文件内容或列出目录中的文件。
-
写(w):修改文件内容或在目录中创建/删除文件。
-
执行(x):运行可执行文件或进入目录。
1. 权限对文件与目录的影响
权限 | 文件示例 | 目录示例 |
---|---|---|
r | cat file.txt | ls /home |
w | echo "test" >> file.txt | touch /home/newfile |
x | ./script.sh | cd /home |
2. 默认权限与umask
-
默认权限计算:
-
目录:
777 - umask
-
文件:
666 - umask
(默认无执行权限)
-
-
查看与修改umask:
umask # 查看当前umask值(如0022) umask 027 # 临时修改umask为027
全局配置:修改
/etc/profile
或/etc/bashrc
中的umask值。
3. 常见umask值与权限对应表
umask | 目录权限 | 文件权限 |
---|---|---|
022 | 755 | 644 |
027 | 750 | 640 |
002 | 775 | 664 |
二、特殊权限:SUID/SGID/Sticky
1. SUID(冒险位)
-
作用:允许用户以文件所有者的权限执行命令。
-
典型应用:
/usr/bin/passwd
(普通用户可修改自己的密码)。 -
设置SUID:
chmod u+s /usr/bin/less # 符号模式 chmod 4755 /usr/bin/less # 数字模式(4表示SUID)
2. SGID(强制位)
-
作用:目录中新创建的文件继承目录的组权限。
-
典型应用:团队协作目录。
-
设置SGID:
chmod g+s /home/team # 符号模式 chmod 2755 /home/team # 数字模式(2表示SGID)
3. Sticky(粘滞位)
-
作用:目录中的文件仅所有者可删除。
-
典型应用:
/tmp
目录。 -
设置Sticky:
chmod o+t /home/share # 符号模式 chmod 1777 /home/share # 数字模式(1表示Sticky)
三、文件ACL:精细化权限控制
ACL(访问控制列表)用于为特定用户或组分配额外权限,突破传统权限模型的限制。
1. 设置ACL权限
-
添加用户权限:
setfacl -m u:zhangsan:rw file.txt # 赋予zhangsan读写权限
-
添加组权限:
setfacl -m g:devteam:rx directory/
2. 查看与删除ACL
-
查看ACL:
getfacl file.txt
-
删除ACL:
setfacl -x u:zhangsan file.txt # 删除用户权限 setfacl -b file.txt # 删除所有ACL权限
3. ACL标志符
-
文件权限末尾的
+
表示启用了ACL:-rw-rw-r--+ 1 root root 0 Feb 6 10:00 file.txt
四、实战建议与安全准则
-
避免过度开放权限:
-
禁止随意设置
777
或666
权限。 -
使用
chmod
时明确指定用户(如chmod u=rwx,g=rx,o= file
)。
-
-
定期审计权限:
find / -type d -perm /1777 -ls # 查找所有Sticky目录 find / -perm -4000 -ls # 查找所有SUID文件
-
结合ACL与特殊权限:
-
在需要精细控制的场景(如共享目录)优先使用ACL。
-
五、总结
Linux文件权限管理是系统安全的重要防线:
-
基本权限:通过rwx控制基础访问。
-
特殊权限:SUID/SGID/Sticky解决特定场景需求。
-
ACL:实现灵活的多用户权限分配。