chmod [ -R ] [ -h ] [ -f ] [ [ u ] [ g ] [ o ] | [ a ] ] { { - | + | = } [ r ] [ w ] [ x ] [ X ] [ s ] [ t ] } { File ... | Directory ... }
chmod [ -R ] [ -h ] [ -f ] PermissionCode { File ... | Directory ... }
chmod 命令修改方式位和指定文件或目录的扩展访问控制表(ACL)。可以用符号或用数字定义方式(完全方式)。
当遇到符号链接而您未指定 -h 标志时,chmod 命令更改通过链接指向的文件或目录的方式,而非链接本身的方式。如果指定 -h 标志,则 chmod 命令防止此方式更改。
如果指定 -h 标志和 -R 标志,chmod 命令递归地降序指定的目录,并且在遇到符号链接时,不更改链接指向的文件或目录的方式。
要以符号格式指定方式,必须指定三个标志集。
注:不要使用空格分隔标志。
第一个标志集指定对谁授权或对谁拒绝指定的许可权,如下所述:
u | 文件所有者。 |
g | 文件组固有的组和扩展 ACL 条目。 |
o | 所有其它条目。 |
a | 用户、组和所有其它条目。a 标志具有与一起指定 ugo 标志相同的效果。如果不指定这些标志,则缺省值为 a 标志,并应用文件创建掩码(umask)。 |
第二个标志集指定是否要除去、应用或设置许可权:
- | 除去指定的许可权。 |
+ | 应用指定的许可权。 |
= | 清除选定的许可权字段并将其设置为指定的许可权。如果不指定 = 之后的许可权,chmod 命令从选定的字段除去所有许可权。 |
第三个标志集指定要除去、应用或设置的许可权:
chmod 命令还允许您对该方式使用八进制表示法。数字方式是一个或多个以下值的摘要:
4000 | 设置执行时的用户标识。 |
2000 | 设置执行时的组标识。 |
1000 | 对于目录设置链接许可权或对于文件设置 save-text 属性。 |
0400 | 允许所有者读。 |
0200 | 允许所有者写。 |
0100 | 允许所有者执行或搜索。 |
0040 | 允许组读。 |
0020 | 允许组写。 |
0010 | 允许组执行或搜索。 |
0004 | 允许其他人读。 |
0002 | 允许其他人写。 |
0001 | 允许其他人执行或搜索。 |
注:
访问控制:此程序应该作为“可信计算基”中的正常用户程序安装。
只有文件的所有者或 root 用户可以更改文件的方式。
该命令返回以下出口值:
0 | 已成功执行完命令并已执行所有请求的更改。 |
>0 | 发生错误。 |
chmod g+w chap1 chap2
这将组成员的写权限添加到文件 chap1 和 chap2。
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
chmod u=rwx,go= cmd
这授权文件(u=rwx)所有者读、写和执行许可权。它还拒绝组和其他人以任何方式(go=)访问 cmd 的许可权。
如果具有执行 cmd shell 命令文件的许可权,则可以通过输入以下命令运行它:
cmd
注:取决于 PATH shell 变量,可能需要指定 cmd 文件的全路径。
chmod ug+s cmd
在执行 cmd 命令时,有效的用户标识和组标识设置为那些拥有 cmd 文件的所有者。只更改与运行 cmd 命令的子进程关联的有效标识。 shell 会话的有效标识保留不更改。
此功能允许您可以访问受限制的文件。假定 cmd 程序启用了“设置用户标识(Set-User-ID)方式”并为名为 dbms 的用户所拥有。实际上,用户 dbms 不是一个人,但可能与数据库管理系统关联。用户 betty 不具有访问任何 dbms 的数据文件的许可权。然而,她具有执行 cmd 命令的许可权。当她这样做时,她的有效用户标识临时更改为 dbms,因此 cmd 程序可以访问用户 dbms 拥有的数据文件。
这种方式下,用户 betty 可以使用 cmd 命令访问数据文件,但她不会在使用标准 shell 命令的过程中意外地破坏它们。
chmod 644 text
这设置所有者的读和写许可权,并且它对组和其他用户设置只读方式。这还除去可能与文件关联的所有扩展 ACL。
./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 命令。 |
acledit 命令、aclget 命令、aclput 命令、chown 命令、chgrp 命令和 ls 命令。
《AIX 5L V5.2 系统用户指南:操作系统与设备》中的『文件所有权与用户组』介绍文件所有权及访问文件和目录的许可权。
AIX 5L Version 5.2 System Management Concepts: Operating System and Devices 中的 Security Administration 描述系统安全性。
《AIX 5L V5.2 安全指南》中的『安装与配置可信计算基』。