分类:
2006-07-08 17:40:22
文件模式位mode
==================
通过chmod命令可以改变用户对相应文件的存取权限。
Linux系统用一个16位的字来存储每个文件的type和mode,其中高4位通过组合来决定文件的type,它是在文件
创建时写入的,用户不能更改。下面介绍后面的12位模式位
bit|11 10 9 |8 7 6 | 5 4 3 | 2 1 0 |
—-|——–|——–|———|———|
| X X X |X X X | X X X | X X X |
—-|——–|——–|———|———|
mode r w x r w x r w x
将这12位分成4组,高位组(9,10,11位)每位都有特殊的含义,下面将具体说明。此高位组(6,7,8位)决定文件
属主拥有的权限,再下一组决定文件属组成员对此文件拥有的权限,最低位组决定除了属主及属组以外的用户拥
有的对此文件操作的权限。
较低3组中每组从最低位到最高位分别是执行位、改写位和读取位,哪位置1表示有相关权限。例如第6位是1表示
属主可以执行此文件,第4位是1同组其他用户可以改写此文件,第2位是1表示其它用户可以读此文件。每组的3
位构成一位8进制数,可以将各权限位的组合通过3位8进制表示,例如:
111 101 100表示成754,则命令:
chmod 754 filename使文件的属主能读、写和执行filename文件,本组的其他用户可以读和执行此文件,但不
能修改。其他用户则只能读该文件。
第11位是SUID位,第10位是SGID位,第9位是粘附位。
如果某个可执行文件设置了SUID位,则此文件运行时的进程将具备和此文件属主相同的权限。
/usr/bin/passwd设置了SUID位且其属主是root,则任何用户运行它时,其进程就具备了root权限,这就是为
什么普通用户也可以通过passwd命令更改自己的登陆口令的原因(实际就是改变/etc/shadow文件,只有root有
权读写此文件).具备SUID位且属主可执行,则属主执行位显示s来代替没有SUID位的x,如果属主不能执行,则
显示为大写的S。
SGID和SUID含义相对应。设置SGID位且属组可执行,则属组执行位改成s显示,否则以S显示。
粘附位根据其他用户是否可执行分别在ls -l时在其他用户执行位上显示成t或T。对于可执行文件,设置了粘附
位可以使其第一次运行后在交换分区swap中保留正文的副本,由于交换分区的文件是连续存放的,所以下次运行
时能较快调入内存。对于现代文件系统来说,这一功能已经没有什么实际意义了。
如果对一个目录设置了粘附位,则只有对于该目录具有写许可权的用户且满足如下三个条件之一,才能删除或更
名该目录下的文件:
1、超级用户root。
2、此目录的拥有者。
3、拥有要被删除或更改名字的文件。
这一特性被Linux使用到了/tmp目录上:任何人都可以使用该目录存储文件,但只有文件所有者和root可以删除
或更名文件。
设置粘附位:chmod 1XXX Dir_Dest
设置SUID:chmod 4XXX File_Dest
设置SGID:chmod 2XXX File_Dest/Dir_De