Linux命令之chmod(修改文件权限)

chmod命令

用途

更改文件方式。

语法

要用符号更改文件方式

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命令递归地降序指定的目录,并且在遇到符号链接时,不更改链接指向的文件或目录的方式。

标志

-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标志。

搜索目录的许可权。

s

如果指定或隐含 u标志,则设置执行时的用户标识许可权。如果指定或隐含g标志,则设置执行时的组标识许可权。

t

对于目录,它表示只有文件所有者可以链接或取消链接指定目录中的文件。对于文件,它设置save-text属性。

数字或完全方式

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

4000

设置执行时的用户标识。

2000

设置执行时的组标识。

1000

对于目录设置链接许可权或对于文件设置save-text 属性。

0400

允许所有者读。

0200

允许所有者写。

0100

允许所有者执行或搜索。

0040

允许组读。

0020

允许组写。

0010

允许组执行或搜索。

0004

允许其他人读。

0002

允许其他人写。

0001

允许其他人执行或搜索。

注:

1.用数字方式指定禁用任何扩展ACL。请参考《AIX5L V5.2系统用户指南:操作系统与设备》中的『访问控制列表』以获取更多信息。

2.用符号更改组访问权限还影响扩展ACL 条目。与文件的所有组相同的ACL中的组条目拒绝从方式除去的任何许可权。请参考『访问控制表』以获取更多信息。

3.可以指定用逗号分开的多个符号方式。按照它们从左到右的出现顺序执行操作。

4.当从目录除去设置执行时的组标识许可权时,必须用符号指定该方式或使用4字符八进制,并且行距为零(例如0755)。

安全性

访问控制:此程序应该作为“可信计算基”中的正常用户程序安装。

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

退出状态

该命令返回以下出口值:

0

已成功执行完命令并已执行所有请求的更改。

>0

发生错误。

示例

1.要将许可权类型添加到几个文件:

chmod g+w chap1 chap2

这将组成员的写权限添加到文件chap1chap2

2.要立即进行几个许可权更改:

chmod go-w+x mydir

这拒绝组成员和其他人创建或删除mydirgo-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)所有者读、写和执行许可权。它还拒绝组和其他人以任何方式(go=)访问cmd的许可权。

如果具有执行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命令的许可权。当她这样做时,她的有效用户标识临时更改为dbms,因此cmd程序可以访问用户dbms拥有的数据文件。

这种方式下,用户betty可以使用cmd命令访问数据文件,但她不会在使用标准shell命令的过程中意外地破坏它们。

5.要使用 chmod命令的完全方式格式:

chmod 644 text

这设置所有者的读和写许可权,并且它对组和其他用户设置只读方式。这还除去可能与文件关联的所有扩展ACL

6.要递归地降序目录并更改给予树结构的文件和目录许可权:

./dir1/dir2/file1

./dir1/dir2/file2

./dir1/file1

请输入此命令序列:

chmod -R 777f*

这将更改./dir1/file1的许可权。

但对于以下树结构:

./dir1/fdir2/file1

./dir1/fdir2/file2

./dir1/file3

命令序列:

chmod -R 777f*

将更改以下内容的许可权:

./dir1/fdir2

./dir1/fdir2/file1

./dir1/fdir2/file2

./dir1/file3

文件

/usr/bin/chmod

包含 chmod 命令。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值