linux下文件的权限除了rwx还有SUID、SGID、Sticky Bit,以及文件的隐藏权限,接下来就介绍下这几种特殊权限的作用

1.SUID
SUID权限只能用在文件上,不能作用在目录文件上面,也不能够用在shell脚本上。SUID是为了让文件执行的时候也有所有者的权限,系统中的/etc/passwd就用到了SUID权限,
通常只有root对这个文件有写权限,普通用户只有读取的权限,普通用户如何更改自己的密码呢?这就用到了SUID权限,接下来实验一下
[root@centos tmp]# ll /usr/bin/passwd 
-rwxr-xr-x. 1 root root 27000 Aug 22  2010 /usr/bin/passwd
[root@centos ~]# su - sean
[sean@centos ~]$ passwd
Changing password for user sean.
Changing password for sean.
(current) UNIX password: 
passwd: Authentication token manipulation error 
没有SUID权限的时候,普通用户是无法修改自己密码的
[root@centos tmp]# ll /usr/bin/passwd 
-rwsr-xr-x. 1 root root 27000 Aug 22  2010 /usr/bin/passwd
[sean@centos ~]$ passwd
Changing password for user sean.
Changing password for sean.
(current) UNIX password: 
New password: 
Retype new password: 
passwd: all authentication tokens updated successfully.
[sean@centos ~]$ 
有了SUID权限后,普通用户也能够修改自己的密码了。

2.SGID
和SUID一样,只要附属上了SGID权限,那么无论用户是谁,执行程序的时候都具有该属组的权限。和UID不一样的是SGID即可作用在目录上也可以作用在文件上。
给文件附属该权限的命令是g+s

一般来说,SGID多用在特定的多人团队的项目开发上,在系统中用得较少。

3.Sticky Bit
Sticky Bit权限只能够作用在目录上。它的作用是,如果一个目录有了t权限,那么目录下面的文件只能由改文件的所有者或root删除
[root@centos ~]# ls -ld /tmp
drwxrwxrwt. 5 root root 4096 Oct  1 11:00 /tmp
[root@centos ~]# touch /tmp/aa
[root@centos ~]# chmod 777 /tmp/aa 
[sean@centos ~]$ whoami
sean
[sean@centos ~]$ rm /tmp/aa 
rm: cannot remove `/tmp/aa': Operation not permitted

r-w-x分别用数字4-2-1表示,也不列外,SUID-SGID-Sticky bit分别用4-2-1表示
比如给一个文件附属上SUID权限
#chmod 4755 test
除了用ls -l查看文件的特殊权限外,还可以用file命令
[root@centos ~]# file /tmp/
/tmp/: sticky directory
[root@centos ~]# file /etc/passwd
/etc/passwd: setuid ASCII text

当文件附属了s和t权限后,x位置就会被替换成s或t,当没有x权限的时候,s和t就变成了空位,s和t就会显示为大写


4.文件的影藏权限

  
a--只能够添加内容不能够删除内容
c--文件自动通过内核被压缩
d--设定文件不能被dump程序备份
i-- 文件不能做任何操作,改名、删除、设定连接关系,同时不能写入或增加内容
s--安全删除,即硬盘空间完全被收回
u--和s相反,删除后文件内容依然存在
A--文件的access time 将不会被更新,可有效防止手提电脑I/O错误发生