特殊权限

文件或目录的特殊权限共有三类:suid、sgid以及sticky。

root用户是超级用户,不管一个文件的权限(普通权限)是怎样的,root都可以编辑。(若有隐藏权限,root可以先去掉隐藏权限,然后再编辑)

特殊权限以及软、硬链接_四次课

这里的/etc/shadow文件没有任何权限,但是root用户依然可以编辑它,使用vi编辑器,然后wq!保存退出。


suid

针对可执行文件设置,运行该命令时,临时获得命令拥有者的权限。

例如,可执行文件/usr/bin/passwd,因为有suid权限,所以普通用户在使用passwd这个命令时,将获得拥有者root的权限。使用passwd命令,实际上是更改/etc/shadow这个密码配置文件,这个配置文件没有任何权限,只有root能修改,所以就算/usr/bin/passwd这个文件针对其他人有x权限,但也执行不成功,因为其他人没有权限去修改/etc/shadow这个文件,所以需要给它suid权限,让它以root的身份运行这个命令。

特殊权限以及软、硬链接_二周第_02


chmod u+s 文件名:设置suid权限。

chmod u-s 文件名:撤掉suid权限。

如果使用 chmod u=rws 文件名,那么则会显示rwS,因为没有设置x权限。虽然一般不会出问题,但最好还是使用上面的+-来添加或删除suid权限。

特殊权限以及软、硬链接_四次课_03


sgid

可以针对可执行文件设置,也可以针对目录设置。


针对可执行文件设置时,运行该命令时,临时获得命令拥有组的权限。

chmod g+s 文件名:设置sgid权限。

chmod g-s 文件名:撤销sgid权限。

特殊权限以及软、硬链接_二周第_04


针对目录设置时,在该目录下新创建的所有文件或目录都会继承父目录的拥有组。(设置sgid之前本身就存在的子目录或者子文件不受影响)

特殊权限以及软、硬链接_二周第_05


sticky

粘滞位,或者叫防删除位。

针对目录设置,在该目录下的所有文件或目录只能被以下三类人删除:

1.该目录下的文件或目录的拥有者

2.该目录的拥有者(若拥有w权限)

3.root用户

chmod o+t 目录名:设置sticky权限。

chmod o-t 目录名:撤销sticky权限。

特殊权限以及软、硬链接_二周第_06


一个文件或目录能否被删除不是看它自己的w权限,而是要看它上级目录是否有w权限。

当一个目录被设置了sticky位时,而某个用户是这个目录的拥有者且拥有w权限,那么这个用户可以删除这个目录里面的所有文件,不管这些文件的拥有者是不是他。sticky权限只针对其他人!

特殊权限以及软、硬链接_四次课_07

特殊权限以及软、硬链接_四次课_08


数字法更改特殊权限:chmod  ----  文件名。(第一位数字代表特殊权限)

suid=4,sgid=2,sticky=1。

特殊权限以及软、硬链接_二周第_09


软、硬链接

硬链接

linux下的文件是通过索引节点(Inode)来识别文件的,硬链接可以认为是一个指针,指向文件索引节点的指针,系统并不为它重新分配inode。多个文件名指向同一索引节点是存在的,一般这种链接就是硬链接。硬连接的作用是允许一个文件拥有多个有效路径名,这样用户就可以建立硬连接到重要文件,以防止“误删”的功能。因为对应该索引节点有一个以上的链接,所以只删除一个链接并不影响索引节点本身和其它的链接,只有当最后一个链接被删除后,文件的数据块才会被释放,也就是说,文件才会被彻底删除。

每添加一个硬链接,文件的链接数就加1。

互为硬链接的文件的所有属性都相同(inode号、权限、修改时间等)。

硬链接之间存在同步机制,一处数据的改变会实时同步到另一处。

如果我们删除硬链接文件的原文件,硬链接文件仍然存在,而且保留了原有的内容。这时,系统就“忘记”了它曾经是硬链接文件,而把它当成一个普通文件。(一般来说硬链接里不存在原文件和链接文件的概念,只说它们互为硬链接,都一样)

互为硬链接的文件虽然显示的大小一样,但实际上只占用一份磁盘空间。

硬链接不像软链接那么好找,不会直接标识出来,但后面讲到的find命令可以找到硬链接。

硬链接有两个限制:

1.硬链接只针对文件,不能用于目录。

2.互为硬链接的文件必须在同一个文件系统(分区)里。因为每个文件系统都有自己一套inode表,不同文件系统中可能会有inode号一样的文件,这样的话做硬链接就会出问题。

使用方法:ln 原文件 链接文件

特殊权限以及软、硬链接_二周第_10


软链接

又叫符号链接,相当于windows中的快捷方式,里面包含的是到原文件的路径。

可以针对文件或目录,也可以链接不同文件系统的文件。

软链接原文件和链接文件拥有不同的inode号,表明他们是两个不同的文件。他们的各项属性均不相同。软链接的大小跟到原文件的路径有关,路径越长软链接越大。

对链接文件进行操作(读写),实际上是对原文件的操作。

删除原文件或者移动原文件到其他路径,则链接失效。

使用方法:ln -s 原文件 链接文件

特殊权限以及软、硬链接_二周第_11