在 Linux 中,权限控制是保障系统安全的基础。通过 chmod
、chown
、chgrp
等命令,用户可以对文件和目录进行精细的读、写、执行控制。
🧩 一、基础概念
每个文件或目录都属于:
一个用户(user)
一个用户组(group)
并分别对三类对象设定权限:
u:用户(user)
g:用户组(group)
o:其他人(others)
a:所有人(all,等同于
ugo
)
三种权限类型:
r:读(read)
w:写(write)
x:执行(execute)
🛠️ 二、chmod
修改权限
1. 数字方式(最常用)
格式:
chmod [权限数字] [文件或目录]
权限数字说明(r=4, w=2, x=1):
示例:
chmod 755 script.sh # u=rwx, g=rx, o=rx(常用于脚本/目录)
chmod 644 readme.txt # u=rw, g=r, o=r(常用于文本文件)
chmod 777 /tmp/test.log # 所有人可读写执行(极开放,仅限测试)
2. 符号方式(适合增删权限)
格式:
chmod [ugoa][+|-|=][rwx] [文件]
示例:
chmod u+x run.sh # 给文件拥有者增加执行权限
chmod g-w data.log # 移除群组的写权限
chmod o=r index.html # 设置其他人只读
chmod a+rx public/ # 所有人可读可执行(对目录常用
🔁 三、递归修改权限(目录及子内容)
加上 -R
参数,可以对整个目录树递归操作:
chmod -R 755 /var/www/html
👤 四、chown
修改文件拥有者
格式:
chown [新用户]:[新用户组] [文件]
示例:
chown root:root file.conf
chown -R 1000:1000 /data/es_data # 修改整个目录拥有者为 UID 为 1000 的用户(Docker 常见)
👥 五、chgrp
修改文件所属组
格式:
chgrp [选项] <用户组> <文件或目录>
<用户组>:目标 group 名称(也可以使用 group 的 GID)
<文件或目录>:要修改所属组的对象
示例:
chgrp www-data /var/www/index.html #将 index.html 的所属用户组改为 www-data。
⚠️ 六、安全建议
🧪 七、常见检查命令
ls -l # 查看权限
stat file # 查看详细状态(含属主/属组)
✅ 总结
掌握这些命令可以在系统管理、开发部署、Docker 使用中灵活处理权限问题。