Linux权限管理进阶:文件归属、特殊权限与ACL详解
一、文件归属管理:chown
命令
1. 基础语法与作用
chown
命令用于修改文件或目录的 属主(Owner) 和 属组(Group),是Linux权限管理中调整资源归属的核心工具。
chown [选项] 新属主:新属组 文件/目录
-
常用选项:
-
-R
:递归修改目录及其子内容。 -
-v
:显示操作详情。
-
2. 典型应用场景
-
修改属主和属组:
chown alice:developers file.txt # 文件属主设为alice,属组设为developers
-
仅修改属主:
chown bob /data # 目录属主设为bob(不改变属组)
-
仅修改属组:
chown :admins file.log # 文件属组设为admins(等价于`chgrp`命令)
-
递归处理目录:
chown -R www-data:web /var/www # 递归修改/var/www及其子内容属主和属组
二、特殊权限:SUID/SGID与粘滞位
1. SUID(Set User ID)
-
作用:允许普通用户执行文件时 临时继承文件属主权限(通常为root)。
-
典型应用:
ls -l /usr/bin/passwd # 输出:-rwsr-xr-x 1 root root ...(s表示SUID)
普通用户执行
passwd
命令时,可修改/etc/shadow
(需root权限)。 -
设置方法:
chmod u+s /path/to/file # 符号法 chmod 4755 /path/to/file # 数字法(4表示SUID,755为基本权限)
2. SGID(Set Group ID)
-
作用:
-
文件:执行时继承文件属组权限。
-
目录:新建文件的属组自动继承目录的属组。
-
-
设置方法:
chmod g+s /path/to/dir # 符号法 chmod 2770 /path/to/dir # 数字法(2表示SGID,770为基本权限)
3. 粘滞位(Sticky Bit)
-
作用:限制目录中文件的删除权限(仅文件所有者、目录所有者或root可删除)。
-
典型应用:共享目录
/tmp
。ls -ld /tmp # 输出:drwxrwxrwt ...(t表示粘滞位)
-
设置方法:
chmod o+t /path/to/dir # 符号法 chmod 1777 /path/to/dir # 数字法(1表示粘滞位,777为基本权限)
三、ACL访问控制:精细化权限管理
1. 为什么需要ACL?
传统Linux权限(属主、属组、其他用户)无法满足复杂场景:
-
多用户/组独立授权:需为不同用户或组单独设置权限。
-
权限继承:目录下新建文件需自动继承复杂规则。
2. ACL核心命令
-
查看ACL权限:
getfacl /data/logs
-
设置ACL权限:
setfacl -m u:user1:rwx file.txt # 为用户user1添加rwx权限 setfacl -m g:dev-team:rx dir/ # 为组dev-team添加rx权限
-
递归设置默认ACL(目录继承):
setfacl -d -m u:user1:rwx dir/ # 新文件自动继承user1的rwx权限
-
删除ACL权限:
setfacl -x u:user1 file.txt # 删除user1的ACL权限 setfacl -b dir/ # 清除所有ACL规则
3. 实战案例:运维部门共享目录权限
需求:
-
运维组(
ops-team
)完全控制/data/logs
。 -
开发组(
dev-team
)可查看但不可修改。 -
临时审计员(
audit-user
)拥有7天读写权限。 -
其他用户禁止访问。
实现步骤:
# 创建目录并设置属组 mkdir -p /data/logs chown :ops-team /data/logs chmod 770 /data/logs # 设置ACL权限 setfacl -m g:dev-team:rx /data/logs # 开发组可读执行 setfacl -m u:audit-user:rwx /data/logs # 审计员可读写执行 # 设置默认ACL规则(继承) setfacl -d -m g:ops-team:rwx /data/logs setfacl -d -m g:dev-team:rx /data/logs setfacl -d -m u:audit-user:rw /data/logs
验证效果:
-
运维用户:可创建、删除文件。
-
开发用户:可查看文件,但无法修改或删除。
-
审计用户:可读写文件。
-
其他用户:无权访问。
四、总结与最佳实践
1. 权限管理原则
-
最小权限原则:用户仅拥有完成任务所需的最小权限。
-
定期审计:检查敏感文件权限(如
/etc/shadow
)。 -
慎用特殊权限:SUID/SGID可能引入安全风险。
2. 命令速查表
操作 | 命令示例 | 说明 |
---|---|---|
修改文件属主和属组 | chown user:group file | 同时修改属主和属组 |
设置SUID权限 | chmod u+s /usr/bin/script | 普通用户执行时继承root权限 |
设置粘滞位 | chmod 1777 /shared | 限制目录内文件删除权限 |
添加ACL权限 | setfacl -m u:user:rwx /data | 为用户单独设置读写执行权限 |
删除ACL权限 | setfacl -x u:user /data | 移除特定用户的ACL权限 |