摘自linux与unix shell编程指南
一个文件一经创建,就具有三种访问方式:
1) 读,可以显示该文件的内容。
2) 写,可以编辑或删除它。
3) 执行,如果该文件是一个s h e l l脚本或程序。
按照所针对的用户,文件的权限可分为三类:
1) 文件属主,创建该文件的用户。
2) 同组用户,拥有该文件的用户组中的任何用户。
3) 其他用户,即不属于拥有该文件的用户组的某一用户。
文件
当你创建一个文件的时候,系统保存了有关该文件的全部信息,包括:
? 文件的位置。
? 文件类型。
? 文件长度。
? 哪位用户拥有该文件,哪些用户可以访问该文件。
? i节点。
? 文件的修改时间。
? 文件的权限位。
文件类型
共七种类型,分别是:
d 目录。
l 符号链接(指向另一个文件)。
s 套接字文件。
b 块设备文件。
c 字符设备文件。
p 命名管道文件。
- 普通文件,或者更准确地说,不属于以上几种类型的文件。
权限
令人迷惑的是,对于文件属主来说,在只有读权限位被置位的情况下,仍然可以通过文件重定向的方法向该文件写入。能否删除一个文件还依赖于该文件所在目录权限位的设置。
改变权限位
符号模式
c h m o d命令的一般格式为:
chmod [who] operator [permission] filename
w h o的含义是:
u 文件属主权限。
g 同组用户权限。
o 其他用户权限。
a 所有用户(文件属主、同组用户及其他用户)。
o p e r a t o r的含义:
+ 增加权限。
- 取消权限。
= 设定权限。
p e r m i s s i o n的含义:
r 读权限。
w 写权限。
x 执行权限。
s 文件属主和组s e t - I D。
t 粘性位*。
l 给文件加锁,使其他用户无法访问。
u,g,o 针对文件属主、同组用户及其他用户的操作。*在列文件或目录时,有时会遇到“ t”位。“t”代表了粘性位。如果在一个目录上出现“t”位,这就意味着该目录中的文件只有其属主才可以删除,即使某个同组用户具有和属主同等的权限。不过有的系统在这一规则上并不十分严格。
如果在文件列表时看到“ t”,那么这就意味着该脚本或程序在执行时会被放在交换区(虚存)。不过由于当今的内存价格如此之低,大可不必理会文件的“ t”的使用。
绝对模式
c h m o d命令绝对模式的一般形式为:
chmod [mode] file
其中m o d e是一个八进制数。
在绝对模式中,权限部分有着不同的含义。每一个权限位用一个八进制数来代表,如下所示:
0 4 0 0 文件属主可读
0 2 0 0 文件属主可写
0 1 0 0 文件属主可执行
0 0 4 0 同组用户可读
0 0 2 0 同组用户可写
0 0 1 0 同组用户可执行
0 0 0 4 其他用户可读
0 0 0 2 其他用户可写
0 0 0 1 其他用户可执行
如果使用该命令的符号模式,可以设置或取消个别权限位,而在绝对模式中则不然。
还可以通过使用- R选项连同子目录下的文件一起设置,使用- R选项一定要谨慎,只有在需要改变目录树下全部文件权限时才可以使用
目录
目录的权限位和文件有所不同。目录的读权限位意味着可以列出其中的内容。写权限位意味着可以在该目录中创建或删除文件,如果不希望其他用户在你的目录中创建文件,可以取消相应的写权限位。执行权限位则意味着搜索和访问该目录。
如果把同组用户或其他用户针对某一目录的权限设置为- - x,那么他们将无法列出该目录中的文件。如果该目录中有一个执行位置位的脚本或程序,只要用户知道它的路径和文件名,仍然可以执行它。用户不能够进入该目录并不妨碍他的执行。
suid/guid
s u i d意味着如果某个用户对属于自己的s h e l l脚本设置了这种权限,那么其他用户在执行这一脚本时也会具有其属主的相应权限。
如果希望设置s u i d,那么就将相应的权限位之前的那一位设置为4;如果希望设置g u i d,那么就将相应的权限位之前的那一位设置为2;如果希望两者都置位,那么将相应的权限位之前的那一位设置为4+2。
一旦设置了这一位,一个s将出现在x的位置上。记住:在设置s u i d或g u i d的同时,相应的执行权限位必须要被设置。
chown和chgrp
在改变一个文件的所有权时,相应的s u i d也将被清除,这是出于安全性的考虑。只有文件的属主和系统管理员可以改变文件的所有权。一旦将文件的所有权交给另外一个用户,就无法再重新收回它的所有权。
c h o w n命令的一般形式为:
chmod -R -h owner file
- R选项意味着对所有子目录下的文件也都进行同样的操作。- h选项意味着在改变符号链接文件的属主时不影响该链接所指向的目标文件。
如果你希望知道自己属于哪些用户组,可以用group或id命令。
umask
当最初登录到系统中时, u m a s k命令确定了你创建文件的缺省模式。这一命令实际上和c h m o d命令正好相反。
一般来说,u m a s k命令是在/ e t c / p r o f i l e文件中设置的,如果希望永久性地设置自己的u m a s k值,那么就把它放在自己$ H O M E目录下的. p r o f i l e或. b a s h _ p r o f i l e文件中。
对于文件来说,这一数字的最大值分别是6。系统不允许你在创建一个文本文件时就赋予它执行权限,必须在创建后用c h m o d命令增加这一权限。目录则允许设置执行权限,这样针对目录来说, u m a s k中各个数字最大可以到7。
符号链接
存在两种不同类型的链接,软链接和硬链接。软链接实际上就是一个指向文件的指针。
使用软链接来保存文件的多个映像
该命令的一般形式为:
ln [-s] source_path target_path
其中的路径可以是目录也可以是文件。
如果链接太多的话,可以删掉一些,不过切记不要删除源文件。
不管是否在同一个文件系统中,都可以创建链接。在创建链接的时候,不要忘记在原有目录设置执行权限。链接一旦创建,链接目录将具有权限7 7 7或rwx rwx rwx,但是实际的原有文件的权限并未改变。
在新安装的系统上,通常要进行这样的操作,在/ v a r目录中创建一个指向/ t m p目录的链接,因为有些应用程序认为存在/ v a r / t m p目录(然而它实际上并不存在)。RH9.0中存在/var/tmp目录。
阅读(665) | 评论(0) | 转发(0) |