linux的文件权限解析
以下是 Linux 文件权限的深度解析,结合权限模型、管理命令及安全实践整理:
一、权限基础模型
用户分类
Linux 权限基于三类用户划分:
• 所有者(User):文件创建者,拥有最高控制权。• 所属组(Group):与所有者同组的用户,共享部分权限。
• 其他用户(Others):系统内的其他非关联用户。
示例:
-rwxr-xr--
表示所有者可读/写/执行,同组用户可读/执行,其他用户仅可读。权限类型
每个用户类别分配三种权限:
• 读(r):文件可查看内容,目录可列出文件列表。• 写(w):文件可修改内容,目录可创建/删除文件。
• 执行(x):文件可运行程序,目录可进入访问。
注意:目录的写权限需配合执行权限才能生效。
二、权限表示方法
符号模式
使用r
、w
、x
表示权限,通过u
(所有者)、g
(组)、o
(其他用户)指定操作对象:chmod u+x file.txt # 为所有者添加执行权限 chmod go-w file.txt # 移除组和其他用户的写权限
1
2数字模式
将权限转换为八进制数字(r=4,w=2,x=1),组合后三位数分别对应所有者、组、其他用户:
•755
→rwxr-xr-x
•
644
→rw-r--r--
示例:
chmod 755 script.sh
赋予所有者完全权限,其他用户仅可读/执行。
三、特殊权限位
SetUID(suid)
• 作用:执行文件时继承所有者权限(如/usr/bin/passwd
)。• 设置:
chmod u+s file
或数字模式前缀4
(如4755
)。SetGID(sgid)
• 作用:目录下新建文件继承父目录的组权限(常用于共享项目)。• 设置:
chmod g+s dir
或数字模式前缀2
(如2775
)。Sticky Bit(粘滞位)
• 作用:目录内文件仅所有者可删除(如/tmp
目录)。• 设置:
chmod o+t dir
或数字模式前缀1
(如1777
)。
四、权限管理命令
chmod
修改文件或目录权限:
•-R
:递归修改目录及子内容权限。chmod -R 755 /opt/app # 递归设置目录权限
1chown
修改文件所有者及所属组:chown user:group file # 同时修改所有者和组 chown -R root:admin /data # 递归修改目录归属
1
2chgrp
仅修改文件所属组:chgrp developers project/ # 将目录组设为developers
1umask
控制新建文件/目录的默认权限:
• 文件默认权限:666 - umask
(如 umask=022 → 文件权限644)。• 目录默认权限:
777 - umask
(如 umask=022 → 目录权限755)。配置:通过
umask 027
临时修改,或写入/etc/profile
永久生效。
五、安全实践建议
最小权限原则
• 避免滥用777
权限,优先赋予精确权限(如755
或750
)。• 敏感文件(如 SSH 密钥)应设置为
600
,仅所有者可读写。特殊权限谨慎使用
• SetUID 程序需严格审核,防止提权漏洞(如恶意脚本拥有 root 权限)。• Sticky Bit 用于共享目录(如
/var/tmp
)防止用户误删他人文件。定期审计权限
• 使用find
命令扫描异常权限文件:find / -perm -4000 # 查找所有SetUID文件 find / -perm -o+w # 查找全局可写文件
1
2
六、权限查看与调试
ls -l
输出解析
• 示例:-rwxr-xr-- 1 root dev 4096 Apr 24 10:00 script.sh
◦ 文件类型:
-
普通文件,d
目录,l
符号链接。◦ 权限位:第2-4位所有者,5-7位组,8-10位其他用户。
调试权限问题
• 若无法访问目录,检查是否缺少x
权限。• 使用
getfacl
查看扩展 ACL 权限(如 NFS 共享场景)。
通过合理配置权限,可有效提升系统安全性。建议结合具体场景选择权限策略,并定期审查关键目录(如 /etc
、/var/log
)的权限设置。