Linux权限管理详解
Linux权限管理详解
权限的基本概念
Linux采用严格的权限控制机制,每个文件和目录都有所有者(owner)、所属组(group)和其他用户(others)三种权限类别。
权限类型
| 权限 | 文件 | 目录 |
|---|---|---|
| 读(r) | 查看文件内容 | 列出目录内容 |
| 写(w) | 修改文件内容 | 在目录中创建/删除文件 |
| 执行(x) | 执行文件 | 进入目录 |
查看权限
ls -l filename
# 输出示例:-rwxr-xr-- 1 user group 4096 Jan 1 12:00 filename
# 第1位:文件类型
# 第2-4位:所有者权限
# 第5-7位:所属组权限
# 第8-10位:其他用户权限
修改权限
数字模式
权限可以用数字表示:r=4, w=2, x=1
# 设置权限为 rwxr-xr-- (754)
chmod 754 filename
# 递归修改目录权限
chmod -R 755 directory/
符号模式
# 使用符号设置权限
chmod u+x filename # 给所有者添加执行权限
chmod g-w filename # 移除组的写权限
chmod o=r filename # 设置其他用户为只读
chmod a+r filename # 所有用户添加读权限
# 组合使用
chmod u=rwx,g=rx,o=r filename
特殊权限
SUID(Set User ID)
当文件设置了SUID位,执行该文件时会以文件所有者的身份运行。
# 设置SUID
chmod u+s /usr/bin/passwd
# 或数字方式
chmod 4755 /usr/bin/passwd
SGID(Set Group ID)
目录设置SGID后,其中新建的文件会继承目录的组。
# 设置SGID
chmod g+s directory/
# 或数字方式
chmod 2755 directory/
Sticky Bit
目录设置Sticky Bit后,只有文件所有者才能删除其中的文件。
# 设置Sticky Bit
chmod +t /tmp
# 或数字方式
chmod 1777 /tmp
所有权管理
# 修改文件所有者
chown username filename
# 同时修改所有者和组
chown username:groupname filename
# 递归修改
chown -R username:groupname directory/
ACL(访问控制列表)
当基本权限无法满足需求时,可以使用ACL进行更精细的控制:
# 设置ACL
setfacl -m u:username:rwx filename
# 查看ACL
getfacl filename
# 移除ACL
setfacl -x u:username filename
最佳实践
- 避免使用
chmod 777,这会带来安全风险 - 对于敏感文件,使用最小权限原则
- 定期检查系统中的SUID/SGID文件
- 使用
find命令查找异常权限文件:
# 查找SUID文件
find / -type f -perm -4000 2>/dev/null
# 查找全局可写目录
find / -type d -perm -0002 2>/dev/null
总结
权限管理是Linux安全的基础。合理设置权限可以有效保护系统资源,防止未授权访问。理解并正确使用各种权限机制,是每个运维工程师的必备技能。