一、权限基础概念
权限分类
文件权限:
读(r):查看文件内容。
写(w):修改文件内容。
执行(x):运行文件作为程序。
目录权限:
读(r):查看目录内文件列表。
写(w):创建/删除/重命名目录内文件。
执行(x):进入目录或访问其内容。
权限归属
每个文件/目录的权限分为三组:
所有者(user):文件创建者。
所属组(group):文件所属用户组。
其他用户(others):系统所有其他用户。
二、权限查看与修改
- 查看权限
命令:ls -l 文件名
输出示例:
-rw-r–r-- 1 user group 1234 Jan 1 00:00 file.txt
第1字符表示文件类型(-为普通文件,d为目录)。
后9字符分三组表示所有者、组、其他用户的权限。 - 修改权限
数字表示法:
r=4, w=2, x=1,组合如 755(所有者rwx,组r-x,其他r-x)。
示例:chmod 755 file.txt。
符号表示法:
u(所有者)、g(组)、o(其他)、a(所有)。
操作符:+(添加)、-(移除)、=(赋值)。
示例:chmod u+x script.sh(为所有者添加执行权限)。 - 修改所有者与组
命令:
chown newuser:newgroup file.txt(同时修改所有者和组)。
chown root file.txt(仅修改所有者)。
三、特殊权限与高级配置
SUID(Set User ID)
作用:执行文件时,用户临时获得文件所有者的权限(如passwd命令)。
设置:chmod u+s executable。
SGID(Set Group ID)
作用:目录下新建文件继承目录的组权限(如共享开发目录)。
设置:chmod g+s shared_dir。
粘滞位(Sticky Bit)
作用:仅允许文件所有者、目录所有者或root删除目录内文件(如/tmp)。
设置:chmod +t directory。
ACL(访问控制列表)
作用:细粒度权限控制,支持为特定用户/组分配权限。
命令:
setfacl -m u:user:rwx file.txt(为用户添加权限)。
getfacl file.txt(查看ACL配置)。
四、目录权限的特殊性
执行权限(x)
目录的x权限决定能否进入目录或访问其内容。
示例:无x权限时,ls directory会报错。
写权限(w)
目录的w权限允许删除/重命名目录内文件,即使文件本身权限受限。
示例:
chmod 755 dir # 所有者可删除dir内文件
chmod 750 dir # 组用户无法删除
五、实际应用案例
保护敏感文件
chmod 600 /etc/shadow # 仅所有者(root)可读写
共享开发目录
mkdir project && chmod 2770 project # SGID + 组用户可写
chgrp dev_team project
Web服务器目录配置
chmod 755 /var/www/html # 所有者可执行(运行Web服务)
chown -R www-data:www-data /var/www/html # 设置Web用户组
六、注意事项
权限不足的错误
现象:Permission denied。
排查:
检查文件/目录的权限与所有者是否匹配。
使用namei -l 路径查看路径上各节点的权限。
路径与绝对路径
相对路径(如./file)可能因当前目录变化导致权限失效,建议使用绝对路径(如/home/user/file)。
安全风险
避免滥用777权限,尤其是对敏感目录(如/etc)。
定期审查权限:find / -perm -o=w -ls查找可写文件。
七、完整权限对照表
权限类型 读(r) 写(w) 执行(x) 数字表示 典型场景
文件 查看内容 修改内容 运行文件 4/2/1 普通文件、脚本
目录 列出文件 添加/删除文件 进入目录 4/2/1 系统目录、共享目录