在 Linux 系统中,chmod(全称 change mode)是用于修改文件或目录权限的核心命令。它通过控制“谁可以读、写或执行”来保障系统安全与协作效率。无论是脚本执行、日志访问,还是团队共享目录,都离不开对 chmod 的精准使用。
chmod [选项] <权限模式> <文件或目录名>选项(可选):如 -R(递归)、--help 等
权限模式:支持 八进制数字(如 755)或 符号表示法(如 u+x)
文件 / 目录名:目标对象
每个文件有三类用户角色:
Owner(所有者)
Group(所属组)
Others(其他用户)
每类用户拥有三种权限:
权限值 = 各位之和(如
rwx= 4+2+1 = 7)
数字表示法
三位数字分别对应:所有者 · 组 · 其他人
示例:chmod 745 newfile.txt
$ ls -l newfile.txt
-rwxr--r-x 1 user group 0 Nov 4 10:00 newfile.txt常见权限组合速查表
推荐实践:
脚本 →
chmod 755 script.sh配置文件 →
chmod 644 config.conf敏感数据 →
chmod 600 password.txt
更灵活地针对特定用户修改权限。
语法:
chmod [ugoa][+-=][rwx] 文件名u = 用户(所有者)
g = 组
o = 其他用户
a = 所有人(等同于 ugo)
+ = 添加权限
- = 移除权限
= = 设为指定权限
实战示例:
# 给所有者添加执行权限
$ chmod u+x deploy.sh
# 移除其他用户的写和执行权限
$ chmod o-wx data.log
# 设置组和其他人只有读权限
$ chmod go=r report.pdf
# 同时操作多类用户
$ chmod ug+rw,o-rwx shared.txt技巧:
chmod +x file是最常用的快捷方式,为当前用户添加执行权。
chmod 本身没有“撤销”功能,但可通过重新设置正确权限实现“回滚”。
场景:将文件恢复为标准只读配置(644)
# 查看当前权限
$ ls -l a.txt
-rwxrwxrwx 1 user group 100 Nov 4 09:00 a.txt # 错误:权限过大!
# 恢复为安全默认值
$ chmod 644 a.txt
# 验证
$ ls -l a.txt
-rw-r--r-- 1 user group 100 Nov 4 09:05 a.txt建议:重要系统文件的权限应记录备份,便于快速恢复。
Linux 不会自动运行无执行权限的脚本。以下是完整流程:
$ cd ~/projects/scripts/$ ls -l example.sh
-rw-r--r-- 1 alice dev 200 Nov 4 10:00 example.sh
# 注意:无 'x',无法直接运行$ chmod +x example.sh
# 或精确指定:chmod 755 example.sh$ ls -l example.sh
-rwxr-xr-x 1 alice dev 200 Nov 4 10:05 example.sh
# 现在所有者、组、其他人都有 'x'$ ./example.sh
Hello, World!注意:必须使用
./显式指定当前目录,否则系统会在$PATH中查找。
# 修改整个项目目录权限
$ chmod -R 755 /var/www/html/警告:慎用
-R,可能意外开放敏感文件。
umask 控制默认权限新创建文件的默认权限受 umask 影响:
$ umask # 查看当前掩码(通常为 022)
$ touch test.txt
$ ls -l test.txt # 权限为 644(即 666 - 022)可借助在线工具或手动计算:
目标:所有者 rw-(6),组 rwx(7),其他人 r--(4)
命令:chmod 674 myfile
为什么 chmod 777 file 被认为是高风险操作?在什么极端场景下才可接受?
如果一个目录权限是 drwxr-x---,而其中某个文件权限是 -rw-rw-rw-,其他用户能否读取该文件?为什么?
如何用一条 chmod 命令实现:“所有者保留当前权限,组获得与所有者相同的权限,其他人无任何权限”?
掌握 chmod 不仅是 Linux 用户的基本功,更是系统安全的第一道防线。通过合理设置权限,你既能保护数据隐私,又能高效协作。记住:最小权限原则——只授予完成任务所必需的最低权限。