← 返回首页
🔐

Linux权限管理详解

📂 devops ⏱ 1 min 175 words

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

最佳实践

  1. 避免使用chmod 777,这会带来安全风险
  2. 对于敏感文件,使用最小权限原则
  3. 定期检查系统中的SUID/SGID文件
  4. 使用find命令查找异常权限文件:
# 查找SUID文件
find / -type f -perm -4000 2>/dev/null

# 查找全局可写目录
find / -type d -perm -0002 2>/dev/null

总结

权限管理是Linux安全的基础。合理设置权限可以有效保护系统资源,防止未授权访问。理解并正确使用各种权限机制,是每个运维工程师的必备技能。