权限位说明
-rwxr-xr-- 1 user group 文件名
├─┤├─┤├─┤
│ │ └── 其他用户 (other)
│ └───── 所属组 (group)
└───────── 所有者 (user/owner)| 字符 | 数字 | 含义 |
|---|---|---|
r | 4 | 读取 |
w | 2 | 写入 |
x | 1 | 执行(目录为进入) |
- | 0 | 无权限 |
常见权限数字
| 数字 | 权限 | 说明 |
|---|---|---|
777 | rwxrwxrwx | 所有人完全权限(慎用) |
755 | rwxr-xr-x | 所有者完全,其他人读+执行 |
750 | rwxr-x--- | 所有者完全,组读+执行 |
700 | rwx------ | 仅所有者完全权限 |
644 | rw-r—r— | 所有者读写,其他人只读 |
640 | rw-r----- | 所有者读写,组只读 |
600 | rw------- | 仅所有者读写 |
555 | r-xr-xr-x | 所有人读+执行 |
444 | r—r—r— | 所有人只读 |
chmod 命令
数字模式
chmod 755 文件名
chmod 644 文件名
chmod -R 755 目录名 # 递归修改符号模式
# 添加权限
chmod u+x file # 所有者添加执行权限
chmod g+w file # 组添加写权限
chmod o-r file # 其他人移除读权限
chmod a+r file # 所有人添加读权限
# 设置精确权限
chmod u=rwx,g=rx,o=r file
# 常用组合
chmod +x script.sh # 添加执行权限
chmod -w file.txt # 移除写权限对象:u=所有者,g=组,o=其他,a=所有人
操作:+=添加,-=移除,==设置
chown 命令
# 修改所有者
sudo chown 用户名 文件名
# 修改所有者和组
sudo chown 用户名:组名 文件名
# 仅修改组
sudo chown :组名 文件名
# 或使用 chgrp
chgrp 组名 文件名
# 递归修改
sudo chown -R 用户名:组名 目录名特殊权限位
SUID (Set User ID) - 4xxx
文件以所有者身份执行,而非运行者身份。
chmod u+s file
chmod 4755 file
# 示例:passwd 命令使用 SUID
ls -la /usr/bin/passwd
# -rwsr-xr-x 1 root root ...SGID (Set Group ID) - 2xxx
目录中新建的文件继承目录的组。
chmod g+s directory
chmod 2755 directorySticky Bit - 1xxx
目录中的文件只有所有者可以删除(如 /tmp)。
chmod +t directory
chmod 1777 directory
ls -la /tmp
# drwxrwxrwt ... # 注意末尾的 t默认权限 (umask)
# 查看当前 umask
umask
# 常见值:0022
# umask 计算:
# 文件默认权限 = 666 - umask = 644
# 目录默认权限 = 777 - umask = 755
# 临时修改
umask 027 # 文件 640,目录 750
# 永久修改:写入 ~/.bashrc
echo "umask 027" >> ~/.bashrcACL 扩展权限
当基本权限不够灵活时:
# 安装 ACL 工具
sudo apt install acl
# 为特定用户设置权限
setfacl -m u:用户名:rwx 文件名
# 为特定组设置权限
setfacl -m g:组名:rx 文件名
# 设置默认 ACL(新建文件自动继承)
setfacl -d -m u:用户名:rwx 目录名
# 查看 ACL
getfacl 文件名
# 移除所有 ACL
setfacl -b 文件名用户与组管理
# 查看当前用户信息
id
# 查看用户所属的组
groups 用户名
# 添加用户到组
sudo usermod -aG 组名 用户名
# 新建组
sudo groupadd 组名
# 常用系统组
# sudo - 管理员权限
# docker - Docker 操作
# video - 摄像头/GPU 访问
# audio - 音频设备
# dialout - 串口设备
# plugdev - 可插拔设备常见场景权限设置
# Web 目录
sudo chown -R www-data:www-data /var/www/html
sudo chmod -R 755 /var/www/html
# SSH 密钥
chmod 700 ~/.ssh
chmod 600 ~/.ssh/id_rsa
chmod 644 ~/.ssh/id_rsa.pub
# 共享目录(组内可读写)
sudo mkdir /shared
sudo chown :共享组 /shared
sudo chmod 2775 /shared
# 脚本文件
chmod 755 script.sh # 所有人可执行
chmod 700 script.sh # 仅自己可执行Last updated on