在 CentOS 系统中,chmod 命令用于修改文件或目录的权限,核心是控制用户(Owner)、组(Group) 和其他用户(Others) 的访问权限(读 r、写 w、执行 x)。以下是针对用户(u)和组(g)权限的详细用法及示例:
一、权限基础概念
- 用户(u):文件所有者。
- 组(g):文件所属用户组。
- 权限类型: r(读):查看文件内容 / 列出目录内容。 w(写):修改文件 / 在目录中创建/删除文件。 x(执行):运行程序 / 进入目录。
二、字母表示法(符号模式)
通过 u(用户)、g(组)配合 +(添加)、-(移除)、=(设置)操作权限。
添加权限
chmod u+w file.txt 用户增加写权限。如图1所示chmod g+x script.sh 组增加执行权限。如图2所示移除权限
chmod u-w file.txt 用户移除写权限。如图3所示chmod g-r conf.cfg 组移除读权限。如图4所示设置精确权限
chmod u=rw,g=r,o= file.txt 用户可读写,组只读,其他无权限。如图5所示组合操作
chmod u+rwx,g+rx,o-rwx class/ 用户加读写执行,组加读执行,其他移除所有权限。如图6所示同步用户组权限
chmod g=u file.txt 组权限与用户权限相同。如图7所示三、数字表示法(八进制模式)
用三位数字分别表示 用户、组、其他 的权限,每位数值由 r(4) + w(2) + x(1) 组合而成。
用户读写执行,组读执行
chmod 750 script.sh #u=rwx,g=rx,o= 脚本文件(用户可运行,组可查看)如图8所示用户读写,组只读
chmod 640 config.cfg #u=rw,g=r,o= 配置文件(组内只读)如图9所示用户读写执行,组无权限
chmod 700 class/ #u=rwx,g=,o= 私有目录(仅用户访问)如图10所示用户读写,组读写
chmod 660 conf.cfg #u=rw,g=rw,o= 共享日志文件(组内可修改)如图11所示四、递归修改目录权限(-R 选项)
递归修改目录及其内部所有文件和子目录的权限。
# 示例:目录及内容设为用户读写执行,组读执行,其他无权限如图12所示
chmod -R 750 user1/# 等效字母操作如图13所示
chmod -R u=rwx,g=rx,o= user1/五、特殊权限设置
- SUID(Set User ID)
用户执行文件时临时拥有文件所有者权限(常用于系统命令):如图14所示
chmod u+s /home/backup.sh # 设置SUID
chmod 4755 /home/backup.sh1 # 数字模式(4开头的四位数字)- SGID(Set Group ID)
目录中新文件自动继承目录的组权限(用于协作目录):如图15所示
chmod g+s team_shared/ # 设置SGID
chmod 2770 team_shared/ # 数字模式(2开头的四位数字)六、实用场景示例
- 脚本可执行如图16所示
chmod u+x deploy.sh # 用户添加执行权限
./deploy.sh # 运行脚本- 配置文件保护
chmod 640 deploy.sh # 用户读写,组只读,其他无权限如图17所示- 共享目录权限如图18所示
chmod 770 ./deploy.sh/ # 用户和组有完全权限,其他无权限
chown -R admin:devs ./deploy.sh/ # 同时修改所有者和组(需配合`chown`)- 锁定敏感文件
chmod 400 secret.key # 用户只读,组和其他无任何权限如图19所示综合权限参考表
权限类型 | 字母表示法示例 | 数字表示法 | 适用场景 |
用户完全控制 | u=rwx | 7xx | 脚本、私有目录 |
组可读不可改 | g=r | x4x | 配置文件 |
组协作读写 | g=rw | x6x | 共享日志 |
严格私有 | u=rw,go= | 600 | 密钥文件 |
用户与组同步权限 | g=u | 自动同步 | 简化组权限管理 |
掌握 chmod 的核心在于明确 谁(u/g/o) 和 什么权限(r/w/x),结合数字模式快速设置或字母模式精细调整。实际操作时,建议先通过 ls -l 确认当前权限,再结合需求修改 。
