Linux 权限管理详解:从基础权限到 ACL 与 sudo 授权
Linux 系统的安全性很大程度上依赖于严格的权限管理机制。通过控制文件和目录的访问权限,可确保用户仅能操作其被授权的资源。本文将系统讲解 Linux 权限的查看、修改、ACL 高级权限及 sudo 授权等核心内容。
权限的查看与含义
使用 ls -l 命令可查看文件或目录的权限信息,输出结果的第一个字段包含 10 个字符,分别代表文件类型和权限。
权限字段解析
以 ls -l 的输出为例:
1 | -rw-------. 1 root root 946 Feb 14 16:13 anaconda-ks.cfg |
第 1 个字符:文件类型
-:普通文件d:目录l:软链接c:字符设备(如键盘)b:块设备(如硬盘)p:管道文件s:套接字文件
第 2-10 个字符:权限位(9 位,每 3 位一组)
分为三组,分别对应所有者(u)、所属组(g)、其他人(o) 的权限:r(读权限,4):可查看文件内容或列出目录文件。w(写权限,2):可修改文件内容或增删目录文件。x(执行权限,1):可执行文件或进入目录。
示例解析:
rw-------:所有者有读、写权限,所属组和其他人无权限。rwxr-xr-x:所有者有读、写、执行权限,所属组和其他人有读、执行权限。
权限修改:chmod 命令
chmod 用于修改文件或目录的权限,支持符号模式和数字模式两种方式。
符号模式(直观易懂)
基本语法
1 | chmod [对象][±=][权限] 文件名 |
- 对象:
u(所有者)、g(所属组)、o(其他人)、a(所有人,默认)。 - 操作符:
+(添加权限)、-(移除权限)、=(设置权限,覆盖原有)。 - 权限:
r、w、x。
示例
1 | # 给所有者添加执行权限 |
数字模式(高效简洁)
将权限转换为数字(r=4、w=2、x=1),每组权限为三个数字的和(0-7)。
基本语法
1 | chmod [所有者权限][所属组权限][其他人权限] 文件名 |
常见权限组合
| 数字 | 权限含义 | 适用场景 |
|---|---|---|
| 777 | rwxrwxrwx(所有权限) |
测试文件(不推荐生产环境) |
| 755 | rwxr-xr-x |
可执行文件、目录 |
| 644 | rw-r--r-- |
普通文件(如文档、配置) |
| 600 | rw------- |
敏感文件(如密码文件) |
示例
1 | # 设置所有者可读/写/执行,所属组和其他人可读/执行 |
所有者与所属组修改
修改所有者:chown 命令
1 | # 基本语法 |
修改所属组:chgrp 命令
1 | # 基本语法 |
高级权限:ACL(访问控制列表)
传统权限仅支持所有者、所属组、其他人三类身份,ACL(Access Control List)可对单个用户或组设置精细化权限,解决权限管理灵活性不足的问题。
确认 ACL 支持
1 | # 检查分区是否开启 ACL(以根分区为例) |
若未开启,临时启用:
1 | mount -o remount,acl / # 重新挂载根分区并启用 ACL |
永久启用需修改 /etc/fstab,在对应分区的挂载选项中添加 acl,然后执行 mount -a。
ACL 核心命令
(1)查看 ACL 权限:getfacl
1 | getfacl file.txt # 输出示例: |
(2)设置 ACL 权限:setfacl
1 | # 基本语法 |
-m:添加或修改 ACL 规则。-x:删除指定用户 / 组的 ACL 规则(如setfacl -x u:test1 file.txt)。-b:清除所有 ACL 规则。
sudo 授权:普通用户的管理员权限
sudo 允许普通用户以 root 权限执行特定命令,避免直接使用 root 账号的安全风险。
配置 sudo 权限
通过 visudo 命令编辑 /etc/sudoers 文件(自动检查语法错误,避免配置失误):
1 | visudo |
常见配置格式
1 | # 用户 主机=(可切换的用户) 允许执行的命令 |
ALL=(ALL) ALL:允许在所有主机以所有用户身份执行所有命令。NOPASSWD::执行命令时无需输入密码(谨慎使用)。
使用 sudo 命令
1 | # 以 root 权限执行单条命令 |
实战案例:权限配置场景
Web 服务器文件权限:
1
2
3
4
5# 网站目录给 apache 用户读写权限,其他用户只读
chown -R apache:apache /var/www/html
chmod -R 755 /var/www/html
# 对上传目录额外开放写权限
chmod 775 /var/www/html/uploads团队协作目录权限:
1
2
3
4
5
6# 创建共享目录,所属组为 dev
mkdir /project
chgrp dev /project
# 允许组内用户读写,新增文件自动继承组权限
chmod 770 /project
setfacl -d -m g:dev:rwx /project # 默认 ACL 确保新文件可写
v1.3.10