改变权限位
对于属于你的文件,可以按照自己的需要改变其权限位的设置。在改变文件权限位设置
之前,要仔细地想一想有哪些用户需要访问你的文件(包括你的目录)。可以使用c h m o d命令来
改变文件权限位的设置。这一命令有比较短的绝对模式和长一些的符号模式。我们先来看一
看符号模式。
1 符号模式
chmod命令的一般格式为:
chmod [who] operator [permission] filename
who的含义是:
u 文件属主权限。
g 同组用户权限。
o 其他用户权限。
a 所有用户(文件属主、同组用户及其他用户)。
operator的含义:
+ 增加权限。
- 取消权限。
= 设定权限。
permission的含义:
r 读权限。
w 写权限。
x 执行权限。
s 文件属主和组s e t - I D。
t 粘性位*。
l 给文件加锁,使其他用户无法访问。
u,g,o 针对文件属主、同组用户及其他用户的操作。
*在列文件或目录时,有时会遇到“ t”位。“t”代表了粘性位。如果在一个目录上出现
“t”位,这就意味着该目录中的文件只有其属主才可以删除,即使某个同组用户具有和属主
同等的权限。不过有的系统在这一规则上并不十分严格。
如果在文件列表时看到“ t”,那么这就意味着该脚本或程序在执行时会被放在交换区(虚
存)。不过由于当今的内存价格如此之低,大可不必理会文件的“ t”的使用。
下载
2 chmod命令举例
现在让我们来看一些使用c h m o d命令的例子。假定m y f i l e文件最初具有这样的权限: r w x
rwx rwx :
命令结果含义
chmod a-x myfile rw- rw- rw- 收回所有用户的执行权限
chmod og-w myfile rw- r-- r- - 收回同组用户和其他用户的写权限
chmod g+w myfile rw- rw- r- - 赋予同组用户写权限
chmod u+x myfile rwx rw- r- - 赋予文件属主执行权限
chmod go+x myfile rwx rwx r- x 赋予同组用户和其他用户执行权限
当创建m y f i l e文件时,它具有这样的权限:
如果这是我写的一个脚本,我希望能够具有执行权限,并取消其他用户(所有其他用户)
的写权限,可以用:
$ chmod u+x o-w myfile
这样,该文件的权限变为:
现在已经使文件属主对myfile文件具有读、写执行的权限,而admin组的用户对该文件具
有读权限。
如果希望某个脚本文件对你自己来说可执行,而且你对该文件的缺省权限很放心,那么
只要使它对你来说具有执行权限即可。
$ chmod u+x dt
3 绝对模式
chmod命令绝对模式的一般形式为:
chmod [mode] file
其中mode是一个八进制数。
在绝对模式中,权限部分有着不同的含义。每一个权限位用一个八进制数来代表,如下3所示。
八进制目录/文件权限表示
八进制数含义八进制数含义
0 4 0 0 文件属主可读0 0 1 0 同组用户可执行
0 2 0 0 文件属主可写0 0 0 4 其他用户可读
0 1 0 0 文件属主可执行0 0 0 2 其他用户可写
0 0 4 0 同组用户可读0 0 0 1 其他用户可执行
0 0 2 0 同组用户可写
在设定权限的时候,只需按照表1 - 3查出与文件属主、同组用户和其他用户所具有的权限
相对应的数字,并把它们加起来,就是相应的权限表示。
从表上可以看出,文件属主、同组用户和其他用户分别所能够具有的最大权限值就是7。
再来看看前面举的例子:
相应的权限表示应为6 4 4,它的意思就是:
0 4 0 0 + 0 2 0 0 (文件属主可读、写) = 0 6 0 0
0 0 4 0 (同组用户可读) = 0 0 4 0
0 0 0 4 (其他用户可读) = 0 0 0 4
0 6 4 4
有一个计算八进制权限表示的更好办法,如表1 - 4所示:
表1-4 计算权限值
文件属主同组用户其他用户
r w x r w x r w x
4 + 2 + 1 4 + 2 + 1 4 + 2 + 1
使用表1 - 4,可以更容易地计算出相应的权限值,只要分别针对文件属主、同组用户和其
他用户把相应权限下面的数字加在一起就可以了。
myfile文件具有这样的权限:
r w - r - - r - -
4 + 2 4 4
把相应权限位所对应的值加在一起,就是6 4 4。
4 chmod命令的其他例子
以下是一些chmod命令绝对模式的例子:
命令结果含义
chmod 666 rw- rw- rw- 赋予所有用户读和写的权限
chmod 644 rw- r-- r- - 赋予所有文件属主读和写的权限,所有其他用户读权限
chmod 744 rwx r-- r- - 赋予文件属主读、写和执行的权限,所有其他用户读的权限
chmod 664 rw- rw- r- - 赋予文件属主和同组用户读和写的权限,其他用户读权限
chmod 700 rwx --- --- 赋予文件属主读、写和执行的权限
chmod 444 r-- r-- r- - 赋予所有用户读权限
下面举一个例子,假定有一个名为yoa的文件,具有如下权限:
我现在希望使自己对该文件可读、写和执行, admin组用户对该文件只读,可以键入:
如果希望自己对该文件可读、写和执行,对其他所有用户只读,我可以用:
如果希望一次设置目录下所有文件的权限,可以用:
chmod 644*
这将使文件属主和同组用户都具有读和写的权限,其他用户只具有读权限。
还可以通过使用- R选项连同子目录下的文件一起设置:
chmod -R 664 /usr/local/home/dave/*
这样就可以一次将/ u s r / l o c a l / h o m e / d a v e目录下的所有文件连同各个子目录下的文件的权限
全部设置为文件属主和同组用户可读和写,其他用户只读。使用- R选项一定要谨慎,只有在
需要改变目录树下全部文件权限时才可以使用。