chmod命令

chmod 命令 #

chmod命令(change mode)用于更改文件或目录的权限模式。在 Linux 系统中,每个文件和目录都有一组权限,决定了谁可以读取、写入或执行它们。

语法 #

chmod [选项] 模式 文件...

常用选项 #

选项 描述
-c, --changes 只报告已更改的文件
-f, --silent, --quiet 不显示大多数错误消息
-v, --verbose 显示每个处理的文件的详细信息
-R, --recursive 递归更改文件和目录
--reference=参考文件 使用指定的参考文件的模式而不是指定的模式值

权限模式 #

权限可以通过两种方式指定:

1. 符号模式 #

[ugoa...][[+-=][rwxXst...]...]
  • u - 文件所有者
  • g - 文件所属组
  • o - 其他用户
  • a - 所有用户(默认)
  • + - 添加指定权限
  • - - 移除指定权限
  • = - 设置指定权限,移除未指定的权限
  • r - 读权限
  • w - 写权限
  • x - 执行权限
  • X - 如果文件是目录或已有执行权限,则设置执行权限
  • s - 设置用户或组 ID
  • t - 设置粘滞位

2. 八进制模式 #

使用三位或四位八进制数表示权限:

  • 第一位(可选):特殊权限
    • 4 - 设置用户 ID
    • 2 - 设置组 ID
    • 1 - 粘滞位
  • 第二位:所有者权限
    • 4 - 读
    • 2 - 写
    • 1 - 执行
  • 第三位:组权限
    • 4 - 读
    • 2 - 写
    • 1 - 执行
  • 第四位:其他用户权限
    • 4 - 读
    • 2 - 写
    • 1 - 执行

常见用法 #

1. 使用八进制模式设置权限 #

chmod 755 file.txt

这将设置所有者拥有读、写、执行权限(7=4+2+1),组和其他用户拥有读和执行权限(5=4+1)。

2. 使用符号模式添加权限 #

chmod u+x script.sh

这将为文件所有者添加执行权限。

3. 使用符号模式移除权限 #

chmod o-w file.txt

这将移除其他用户的写权限。

4. 使用符号模式设置多个权限 #

chmod u+rwx,g+rx,o+r file.txt

这将为所有者添加读、写、执行权限,为组添加读和执行权限,为其他用户添加读权限。

5. 递归更改目录及其内容的权限 #

chmod -R 755 directory/

6. 设置与参考文件相同的权限 #

chmod --reference=reference_file.txt target_file.txt

7. 只为目录设置执行权限 #

chmod -R u+X directory/

这将只为目录添加执行权限,不会更改文件的执行权限。

8. 设置粘滞位 #

chmod +t directory/

这将设置目录的粘滞位,只有文件所有者、目录所有者或 root 用户可以删除或重命名目录中的文件。

9. 设置 SUID 位 #

chmod u+s executable_file

这将设置 SUID 位,使文件在执行时具有所有者的权限。

10. 设置 SGID 位 #

chmod g+s directory/

这将设置 SGID 位,在该目录中创建的新文件将继承目录的组所有权。

常见权限组合 #

八进制 符号 描述
777 rwxrwxrwx 所有人都有完全权限(通常不推荐)
755 rwxr-xr-x 所有者有完全权限,组和其他人可读和执行
700 rwx------ 只有所有者有完全权限
644 rw-r--r-- 所有者可读写,组和其他人只能读
600 rw------- 只有所有者可读写
444 r--r--r-- 所有人都只能读
1777 rwxrwxrwt 所有人都有完全权限,带粘滞位(通常用于/tmp)
2775 rwxrwsr-x 所有者有完全权限,组可读写执行(带 SGID),其他人可读执行
4755 rwsr-xr-x 所有者有完全权限(带 SUID),组和其他人可读执行

提示 #

  • 使用ls -l命令可以查看文件的当前权限
  • 更改文件权限需要您是文件的所有者或具有管理员权限
  • 为脚本添加执行权限是使其可执行的必要步骤
  • 设置正确的目录权限对于安全性和功能都很重要
  • 在 Web 服务器环境中,正确设置文件权限对于安全性至关重要
  • 使用chmod -R时要小心,它会递归更改所有文件和子目录的权限
  • 在共享环境中,使用组权限可以有效管理文件访问
  • SUID 和 SGID 权限应谨慎使用,因为它们可能导致安全风险
  • 在生产环境中,通常应遵循最小权限原则