当前位置:首页>Linux>Linux命令每日一清单015:chmod--修改文件权限命令速查表

Linux命令每日一清单015:chmod--修改文件权限命令速查表

  • 2026-09-19 10:52:32
Linux命令每日一清单015:chmod--修改文件权限命令速查表

chmod(change mode)是Linux/Unix系统中用于修改文件和目录权限的核心命令。在Linux安全模型中,每个文件和目录都有三组权限(所有者、所属组、其他用户)和三种基本权限(读、写、执行),chmod正是管理这些权限的工具。

chmod既支持直观的符号模式(如u+x),也支持简洁的数字模式(如755),能够精细控制文件和目录的访问权限。正确的权限设置是系统安全的基础,掌握chmod对于保护敏感文件、确保程序正常运行、管理多用户环境至关重要。

1. 基本语法

命令说明
chmod MODE FILE
chmod通用语法
chmod 644 file.txt
使用数字模式设置权限
chmod u+x script.sh
为所有者添加执行权限
chmod g-w file.txt
移除组的写权限
chmod o=r file.txt
将其他用户权限设置为只读
chmod a+x script.sh
为所有用户(所有者、组、其他)添加执行权限

2. 数字权限模式

权限说明
600
所有者读写,组和其他无权限(私密文件)
644
所有者读写,组和其他只读(标准文件)
640
所有者读写,组只读,其他无权限
664
所有者读写,组读写,其他只读(协作文件)
700
所有者完全控制,组和其他无权限
755
所有者完全控制,组和其他读和执行(标准目录、可执行文件)
750
所有者完全控制,组读和执行,其他无权限
775
所有者完全控制,组完全控制,其他读和执行
777
所有用户完全控制(危险,应避免)
444
所有用户只读
555
所有用户读和执行

3. 符号权限模式

命令说明
chmod u+x file
为所有者添加执行权限
chmod g-w file
移除组的写权限
chmod o-rwx file
移除其他用户的所有权限
chmod ug+rw file
为所有者和组添加读写权限
chmod a+r file
为所有用户添加读权限
chmod a-x file
移除所有用户的执行权限
chmod u=rw,go=r file
所有者读写,组和其他只读(等价于644)
chmod u=rwx,go=rx dir/
所有者完全控制,组和其他读和执行(等价于755)
chmod go= file
移除组和/or的所有权限

符号模式说明:

  • 用户标识:u(所有者)、g(组)、o(其他)、a(所有)
  • 操作符:+(添加)、-(移除)、=(精确设置)
  • 权限:r(读)、w(写)、x(执行)

4. 文件和目录的典型权限

命令说明
chmod 644 file.txt
标准文件权限(所有者读写,其他人只读)
chmod 755 script.sh
可执行脚本权限
chmod 755 directory/
标准目录权限(可进入、列出内容)
chmod u=rw,go=r file.txt
644的符号模式
chmod u=rwx,go=rx directory/
755的符号模式
chmod +x script.sh
快速使脚本可执行(保留其他权限)
chmod -x file.txt
移除所有用户的执行权限

5. 递归更改权限

命令说明
chmod -R 755 project/
递归设置目录及所有内容为755
chmod -R u+rwX project/
递归添加读写和智能执行权限
find project -type f -exec chmod 644 {} +
只将文件设置为644
find project -type d -exec chmod 755 {} +
只将目录设置为755
chmod -R g-w shared/
递归移除组的写权限
chmod -R a+r public/
递归添加所有用户的读权限

智能执行(X)说明:大写的X表示仅当目标是目录或已有执行权限时才添加执行权限,对普通文件不会意外添加执行权限。

6. 特殊权限位

命令说明
chmod 4755 /usr/local/bin/tool
设置SUID(4),以文件所有者身份执行
chmod 2755 /srv/shared
设置SGID(2),新文件继承组
chmod 1777 /tmp/mytmp
设置粘滞位(1),仅所有者可删除
chmod u+s file
符号方式添加SUID
chmod g+s directory
符号方式添加SGID
chmod +t directory
符号方式添加粘滞位
chmod -s file
移除SUID/SGID

特殊权限说明:

  • **SUID (4)**:执行时以文件所有者身份运行(如/usr/bin/passwd)
  • **SGID (2)**:目录中新建文件继承目录的组
  • **Sticky Bit (1)**:目录中仅文件所有者可删除(如/tmp)

7. 安全操作模式

命令说明
chmod 600 ~/.ssh/id_ed25519
设置SSH私钥安全权限
chmod 700 ~/.ssh
设置SSH目录安全权限
chmod 644 ~/.ssh/id_ed25519.pub
公钥权限(可公开)
chmod 750 /var/www/app
限制Web根目录访问
chmod 755 script.sh
脚本权限(比777安全)
chmod 600 .pgpass
数据库密码文件权限
chmod 400 backup.key
备份密钥只读权限

8. 实用组合模式

命令说明
chmod -R 755 public_html/ && find public_html -type f -exec chmod 644 {} +
目录755,文件644(标准网站配置)
chmod 600 config.yml && chmod +x deploy.sh
配置文件安全,部署脚本可执行
chmod -R u+rwX,go+rX project/
保留所有者完全控制,其他人可读和智能执行
chmod 2770 /srv/teamproject && chmod g+s /srv/teamproject
协作目录设置
chmod -R --silent 755 /path 2>/dev/null
静默执行,忽略错误

9. 常用选项速查

选项完整名称说明
-R
--recursive
递归更改目录及其内容
-v
--verbose
显示详细处理信息
-c
--changes
仅在发生更改时显示信息
-f
--silent, --quiet
静默模式,抑制错误信息
--reference=RFILE
-
使用参考文件的权限

10. 权限验证命令

命令说明
ls -l file.txt
查看文件详细权限
ls -ld directory/
查看目录权限
stat file.txt
显示文件的完整状态信息
namei -l /path/to/file
查看路径中所有目录的权限
getfacl file.txt
查看文件ACL权限(扩展权限)

11. 故障排查

问题解决方法
Operation not permitted
检查文件所有权:ls -l;使用sudo或以文件所有者身份执行
Permission still denied after chmod
父目录可能缺少执行权限(需要x才能进入);检查ACL:getfacl
Cannot chmod symlinkchmod
默认作用于符号链接的目标文件,而非链接本身
递归模式破坏了应用文件
使用find分别处理文件和目录,而非单一的-R
更改在挂载分区上无效
检查挂载选项(如noexec、nosuid)和文件系统类型
umask导致新文件权限不符预期
检查umask设置:umask;在脚本中设置适当umask
粘滞位没有生效
确认目录是否有t标志:ls -ld /tmp

温馨提示: 权限设置遵循最小权限原则——只授予必要的权限。常用模式牢记于心:文件644/640,目录755/750,私密文件600,可执行脚本755。使用-R递归时要格外谨慎,避免破坏系统文件。对于生产环境,建议先测试更改,或使用find精确控制文件和目录的不同权限。

本文PDF格式下载:

  关注公众号(haopython),请回复: CHMOD

最新文章

随机文章