Skip to content

chmod(Change Mode)是Unix和类Unix系统(如Linux和macOS)中用于更改文件或目录权限的命令。通过chmod,你可以设置文件的读(read)、写(write)和执行(execute)权限,以控制不同用户类别(所有者、所属组、其他人)对文件的访问权限。

权限基础

在Unix-like系统中,每个文件都有三种用户类别及其对应的权限:

  1. 所有者(User):文件的所有者。
  2. 所属组(Group):文件所属的用户组。
  3. 其他人(Others):既不是所有者,也不属于所属组的其他用户。

每种用户类别都有三种权限:

读(Read, r):查看文件内容或列出目录内容。 • 写(Write, w):修改文件内容或在目录中创建、删除、重命名文件。 • 执行(Execute, x):执行文件或进入目录。

权限可以用符号表示(如rwx)或数字表示(如755)。

使用符号方式赋予权限

符号方式通过指定用户类别、操作符和权限来更改权限。

语法

bash
chmod [ugoa...][+-=][rwx...] 文件名

用户类别: • u:所有者 • g:所属组 • o:其他人 • a:所有用户(等同于ugo

操作符: • +:添加权限 • -:移除权限 • =:设置权限

权限: • r:读 • w:写 • x:执行

示例

  1. 给所有者添加执行权限

    bash
    chmod u+x script.sh

    这条命令为script.sh文件的所有者添加了执行权限。

  2. 移除所属组的写权限

    bash
    chmod g-w script.sh

    这条命令移除了script.sh文件所属组的写权限。

  3. 为所有用户设置读和执行权限

    bash
    chmod a=rx script.sh

    这条命令将script.sh文件的所有用户的权限设置为只读和执行,移除了写权限。

使用数字方式赋予权限

数字方式通过为每种权限分配一个数值,并将这些数值相加来设置权限。

权限对应的数值

• 读(Read):4 • 写(Write):2 • 执行(Execute):1

可以将这些数值相加来表示多种权限。例如:

rwx = 4 + 2 + 1 = 7 • rw- = 4 + 2 = 6 • r-x = 4 + 1 = 5

语法

bash
chmod [数字权限] 文件名

数字权限可以针对所有者、所属组和其他人分别设置,使用三位数表示。例如,755表示所有者有读、写、执行权限,所属组和其他人有读和执行权限。

示例

  1. 设置文件为所有者可读、写、执行,所属组和其他人可读、执行

    bash
    chmod 755 script.sh

    解析: • 所有者:rwx = 7 • 所属组:r-x = 5 • 其他人:r-x = 5

  2. 设置文件为所有者可读、写,所属组和其他人只读

    bash
    chmod 644 document.txt

    解析: • 所有者:rw- = 6 • 所属组:r-- = 4 • 其他人:r-- = 4

  3. 设置文件为所有者可读、写、执行,所属组可读、执行,其他人无权限

    bash
    chmod 750 script.sh

    解析: • 所有者:rwx = 7 • 所属组:r-x = 5 • 其他人:--- = 0

递归更改权限

如果你需要更改目录及其所有子目录和文件的权限,可以使用-R选项进行递归操作。

示例

bash
chmod -R 755 /path/to/directory

这条命令将/path/to/directory目录及其所有子目录和文件的权限设置为755

特殊权限

除了基本的读、写、执行权限外,Unix-like系统还支持一些特殊权限,如SetuidSetgidSticky Bit。这些权限可以通过在数字权限前添加额外的位来设置。

示例

  1. 设置Setuid权限

    bash
    chmod 4755 script.sh

    解析: • 4表示设置Setuid位。 • 755表示基本权限。

  2. 设置Setgid权限

    bash
    chmod 2755 directory/

    解析: • 2表示设置Setgid位。 • 755表示基本权限。

  3. 设置Sticky Bit

    bash
    chmod 1777 /tmp

    解析: • 1表示设置Sticky Bit。 • 777表示基本权限。

注意:特殊权限的使用需要谨慎,因为它们可能带来安全风险。

总结

chmod命令通过符号方式或数字方式为文件和目录设置权限,帮助你控制不同用户类别对文件的访问权限。理解并正确使用chmod对于系统安全和文件管理至关重要。

常用示例回顾

赋予所有者完全权限,所属组和其他人只读权限

bash
chmod 644 file.txt

赋予所有者读、写、执行权限,所属组和其他人读、执行权限

bash
chmod 755 script.sh

递归赋予目录及其内容读、写、执行权限

bash
chmod -R 755 /path/to/directory