文件及目录的写权限

来源:百度文库 编辑:神马文学网 时间:2024/04/25 09:35:48
文件及目录的写权限
来源: ChinaUnix博客  日期: 2005.11.11 21:46 (共有0条评论)我要评论
目录:   是一种特殊的文件,其内容为所包括的所有文件的文件名及与之对应的文件inode编号。
但不能用常规文件读写命令来进行读写。读其中内容用ls,写呢多用rm和mv来实现。
文件名:文件名属于目录文件的内容,所以改文件名是对其所在目录文件的内容修改,受对应目录的读写权限限制
同理,删除一个文件,也是修改所在的目录文件的内容,修改文件名与inode编号的对应关系;故也受所在对应目录的读写权限限制。
因此:
仅将一个需保护的文件的权限设为只读,仍不能保证文件不被改名或删除。最好将文件的父目录的权限也设为只读。或者用chattr +i以及将挂载方式用ro等。
也就是说:mv filea fileb 与rm -f filea 与文件的权限无关,而是改写相应目录的内容,与文件所在目录的写权限有关。
分清命令真正操作的是文件内容还是目录的内容是问题的关键。也就是主要看父目录的权限。
特殊情况:多级树形目录结构
/test/1             /tetst/d/2
在test目录下文件与目录执行删除操作时,如果底层目录不为空,则先尝试删除最底层目录的文件,
如果此底层目录没有写权限,将不能删除其下的文件;也不能继续删除上层其它的文件或目录。
也就是说,重命名不论是文件还是目录文件不是对文件或目录文件的内容作修改。而是对上级父目录内容做修改写操作。
而删除涉及到两方面的写操作,既有父目录的内容要修改,也有文件内容本身的修改。
小结:文件有几个状态
被读、被改写、被改名、被删除、被执行。而系统只区分为R、W、X三种。其中将改名与删除两种操作归入被操作文件的上一级目录来管理。
即:目录将其下所有文件看作是它的内容。对文件更名或删除时,执行对上一级目录的写操作。
另外:使用VI编缉文件,可以:w!来强制保存。从而修改没有修改权限的文件,其操作过程是先删除原文件,再保存一个新的同名文件。
如果此时刚好这个文件存在另外一个硬连接则VIM会拒绝执行强制保存。所以虽然同名,却彼此两个不同inode的文件啦。
常用命令
# ls -l
total 36
-rw-r--r--    1 root     root        34890 10月 19 20:17 httpd.conf
-rw-r--r--    1 root     root            0 10月 19 20:16 temp
代码:
总用量 36:是ls所列出的入口占用空间的字节数(以K为单位)。
1该文件硬链接的数目。
root:文件属主。
root:文件属组(一般是文件属主所在的缺省组。)
34890:字节来表示的文件长度,记住,不是K字节!
10月 19 20:17:件的更新时间。
temp or httd.conf :件名。
BTW:要检查该目录所有文件占用的空间应该用这个命令:du。
譬如说前面说的36是如何计算出来:
首先我们要先了解你所用的文件系统的IO BLOCK(中文叫作簇)为多少,在你所使用的这个文件系统的IO BLOCK大小是4096 Bytes。
他意义是文件系统最小的读写及分配单位,每次读写操作你都不能小于这个尺寸。即使你的文件是只有一个字节。而且文件在硬盘上的存储也是以这个为单位,就是说如果文件尺寸小于这个值,那么它在磁盘上占用的空间就是4096字节。
占用空间的具体算法是:(进一(文件尺寸/4096))×4096。根据这个你就可以计算出你所列举的例子中的文件的空间使用状况:34890除以4096,大约等于8.5,进一法取得为9,就是说文件在磁盘上占用了9个BLOCk,每个BLOCK为4K,所以这两个文件占用的空间就是36K。
这个规则也适合于目录,不过不会出现为0的目录,即使是空目录
文件的所有者组并非是文件所有者所在的缺省组,而可以是任何一个跟该文件所有者无关的用户组。
使用chmod来改变权限位
这一命令有符号模式和绝对模式。 符号模式
chmod命令的一般格式为: 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 文件属主和组set-ID。
t 粘性位*。
l 给文件加锁,使其他用户无法访问。
u,g,o 针对文件属主、属组用户及其他用户的操作。 *在列文件或目录时,有时会遇到“ t”位。“t”代表了粘性位。如果在一个目录上出现“t”位,这就意味着该目录中的文件只有其属主才可以删除,即使某个属组用户具有和属主同等的权限。不过有的系统在这一规则上并不十分严格。
"t"权限用在文件上面是没有意义的,不是什么在交换区的概念,它跟文件的执行没有关系,而主要是为了文件共享设置的。
chmod -R 664 /temp/*
这样就可以一次将/ temp目录下的所有文件连同各个子目录下的文件的权限全部设置为文件属主和属组用户可读和写,其他用户只读。使用- R选项要谨慎,只有在需要改变目录树下全部文件权限时才可以使用。