chmod 命令

用途

更改文件方式。

语法

以符号更改文件方式

奇莫德 [ -R ] [ - ] [ -f ] [ [ ] [ G ] [ ] | [ A. ] ] { { - | + | = } [ R ] [ ] [ X ] [ X ] [ S ] [ ] } { 文件 ... | 目录 ... }

以数字更改文件方式

chmod [ -R ] [ -h ] [ -f ] PermissionCode { 文件... | 目录... }

描述

chmod 命令修改方式位和指定文件或目录的扩展访问控制表(ACL)。 可以用符号或用数字定义方式(完全方式)。

当遇到符号链接而您未指定 -h 标志时,chmod 命令更改通过链接指向的文件或目录的方式,而非链接本身的方式。 如果指定 -h 标志,那么 chmod 命令防止此方式更改。

如果指定 -h 标志和 -R 标志,chmod 命令递归地降序指定的目录,并且在遇到符号链接时,不更改链接指向的文件或目录的方式。

标志

描述
-f 禁止所有错误报告(除了无效权限和用法语句)。
-h 禁止遇到的符号链接指向的文件或目录的方式更改。

注:由于不能在符号链接上设置方式位,所以此行为与 chgrpchown 命令上的 -h 标志的行为略有不同。

-R 只递归地降序目录,如同模式 File...|Directory... 指定。 -R 标志更改匹配指定模式的每个目录和所有文件的文件方式位。 请参阅示例 6。

当遇到符号链接并且链接指向目录时,更改该目录的文件方式位,但不进一步遍历目录。

符号方式

要以符号格式指定方式,必须指定三个标志集。

注: 请勿使用空格分隔标志。

第一个标志集指定对谁授权或对谁拒绝指定的许可权,如下所述:

描述
u 文件所有者。
g 与文件组相关的组和扩展 ACL 条目。
o 所有其他条目。
a 用户、组和所有其他条目。 a 标志具有与一起指定 ugo 标志相同的效果。 如果不指定这些标志,那么缺省值为 a 标志,并应用文件创建掩码(umask)。

第二个标志集指定是否要除去、应用或设置许可权:

描述
- 除去指定的许可权。
+ 应用指定的许可权。
= 清除选定的许可权字段并将其设置为指定的许可权。 如果不指定 = 之后的许可权,chmod 命令从选定的字段除去所有许可权。

第三个标志集指定要除去、应用或设置的许可权:

描述
R 读许可权。
w 写许可权。
X 对于文件的执行许可权;对于目录的搜索许可权。
X 如果当前的(未修改的)方式位设置了至少一个用户、组或其他执行位,那么执行文件的许可权。 如果指定了 File 参数并且未在当前方式位中设置任何执行位,那么将忽略 X 标志。

搜索目录的许可权。

如果指定或隐含 u 标志,那么设置执行时的用户标识许可权。 如果指定或隐含 g 标志,那么设置执行时的组标识许可权。
t 对于目录,它表示只有文件所有者可以链接或取消链接指定目录中的文件。 对于文件,它设置 save-text 属性。

数字或完全方式

chmod 命令还允许您对该方式使用八进制表示法。 数字方式是一个或多个以下值的摘要:

描述
4000 设置执行时的用户标识。
2000 设置执行时的组标识。
1000 对于目录设置链接许可权或对于文件设置 save-text 属性。
0400 允许所有者读。
0200 允许所有者写。
0100 允许所有者执行或搜索。
0040 允许组读。
0020 允许组写。
0010 允许组执行或搜索。
0004 允许其他人读。
0002 允许其他人写。
0001 允许其他人执行或搜索。
注意:
  1. 以数字方式指定方式将禁用任何扩展 ACL。 请参阅 操作系统和设备管理 中的 "访问控制表" 以获取更多信息。
  2. 用符号更改组访问许可权还会影响 AIXC ACL 条目。 与文件的所有组相同的 ACL 中的组条目拒绝从方式除去的任何许可权。 请参阅 操作系统和设备管理 中的 "访问控制表" 以获取更多信息。
  3. 可以指定用逗号分开的多个符号方式。 按照它们从左到右的出现顺序执行操作。
  4. 当从目录除去设置执行时的组标识许可权时,必须用符号指定该方式或使用 4 字符八进制,并且行距为零(例如 0755)。
  5. 对于非 AIXC ACL 相关联文件系统对象,导致操作以位方式更改库许可权位数(rwxrwxrwx)的任何请求(符号的或数字的)都会使用此位方式替换现有 ACL。
  6. save-text 属性只能由 root 用户设置,但可以由常规用户除去。

退出状态

本命令返回以下退出值:

描述
重大安全事件数量 命令执行成功并已执行所有请求的更改。
> 0 发生错误。

安全性

访问控制

此程序应该作为“可信计算库”中的正常用户程序安装。

只有文件的所有者或 root 用户可以更改文件的方式。

RBAC 用户注意: 此命令可以执行特权操作。 只有特权用户才能执行特权限定的操作。 有关权限与特权的更多信息,请参阅安全性中的“特权限定的命令数据库”。 有关与该命令相关联的特权和权限的列表,请参阅 lssecattr 命令或 getcmdattr 子命令。

示例

  1. 要向多个文件添加某种类型的许可权,请执行以下操作:
    chmod  g+w  chap1  chap2
    这会将组成员的写许可权添加到文件中chap1chap2.
  2. 要一次进行若干许可权更改:
    chmod  go-w+x  mydir
    这将拒绝组成员和其他人员在其中创建或删除文件的许可权mydir(go-w) 并允许组成员和其他人员搜索mydir或在路径名中使用 (go + x)。 这等价于命令序列:
    chmod  g-w  mydir
    chmod  o-w  mydir
    chmod  g+x  mydir
    chmod  o+x  mydir
  3. 要仅允许所有者将 shell 过程用作命令:
    chmod  u=rwx,go= cmd
    这授权文件(u=rwx)所有者读取、写入和执行许可权。 它还拒绝该组和其他人员访问cmd以任何方式 (go=)。

    如果您有权执行cmdshell 命令文件,然后可以通过输入以下命令来运行该文件:

    cmd

    注: 根据 PATH shell 变量,您可能需要指定到cmd中。

  4. 要使用 Set-ID 方式:
    chmod  ug+s  cmd
    如果在请求中未找到cmd执行命令,将有效用户和组标识设置为拥有这些标识的用户和组标识。cmd中。 仅与运行该子进程的子进程关联的有效标识cmd命令已更改。 shell 会话的有效标识保留不更改。

    此功能允许您可以访问受限制的文件。 假设cmd程序已启用 Set-User-ID 方式,并且由被调用的用户拥有dbms. 用户dbms实际上不是人员,但可能与数据库管理系统相关联。 用户betty无权访问任何dbms数据文件。 但是,她确实有权执行cmd指令返回给FTP客户的IP地址。 执行此操作时,她的有效用户标识将临时更改为dbms,这样cmd程序可以访问用户拥有的数据文件dbms.

    这样用户betty可以使用cmd用于访问数据文件的命令,但她不能使用标准 shell 命令意外损坏这些文件。

  5. 要使用 chmod 命令的绝对方式格式:
    chmod  644  text
    这设置所有者的读和写许可权,并且它对组和其他用户设置只读方式。 这还除去可能与文件关联的所有扩展 ACL。
  6. 要在给定树结构的情况下以递归方式下降目录并更改文件和目录许可权:

    ./dir1/dir2/file1

    ./dir1/dir2/file2

    ./dir1/file1

    请输入此命令序列:

    chmod -R 777 f*
    这将更改 ./dir1/file1 的许可权。

    但对于以下树结构:

    ./dir1/fdir2/file1

    ./dir1/fdir2/file2

    ./dir1/file3

    命令序列:

    chmod -R 777 f*
    将更改以下内容的许可权:

    ./dir1/fdir2

    ./dir1/fdir2/file1

    ./dir1/fdir2/file2

    ./dir1/file3

文件

描述
/usr/bin/chmod 包含 chmod 命令。