特殊权限
文件或目录的特殊权限共有三类: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的身份运行这个命令。
chmod u+s 文件名:设置suid权限。
chmod u-s 文件名:撤掉suid权限。
如果使用 chmod u=rws 文件名,那么则会显示rwS,因为没有设置x权限。虽然一般不会出问题,但最好还是使用上面的+-来添加或删除suid权限。
sgid
可以针对可执行文件设置,也可以针对目录设置。
针对可执行文件设置时,运行该命令时,临时获得命令拥有组的权限。
chmod g+s 文件名:设置sgid权限。
chmod g-s 文件名:撤销sgid权限。
针对目录设置时,在该目录下新创建的所有文件或目录都会继承父目录的拥有组。(设置sgid之前本身就存在的子目录或者子文件不受影响)
sticky
粘滞位,或者叫防删除位。
针对目录设置,在该目录下的所有文件或目录只能被以下三类人删除:
1.该目录下的文件或目录的拥有者
2.该目录的拥有者(若拥有w权限)
3.root用户
chmod o+t 目录名:设置sticky权限。
chmod o-t 目录名:撤销sticky权限。
一个文件或目录能否被删除不是看它自己的w权限,而是要看它上级目录是否有w权限。
当一个目录被设置了sticky位时,而某个用户是这个目录的拥有者且拥有w权限,那么这个用户可以删除这个目录里面的所有文件,不管这些文件的拥有者是不是他。sticky权限只针对其他人!
数字法更改特殊权限:chmod ---- 文件名。(第一位数字代表特殊权限)
suid=4,sgid=2,sticky=1。
软、硬链接
硬链接
linux下的文件是通过索引节点(Inode)来识别文件的,硬链接可以认为是一个指针,指向文件索引节点的指针,系统并不为它重新分配inode。多个文件名指向同一索引节点是存在的,一般这种链接就是硬链接。硬连接的作用是允许一个文件拥有多个有效路径名,这样用户就可以建立硬连接到重要文件,以防止“误删”的功能。因为对应该索引节点有一个以上的链接,所以只删除一个链接并不影响索引节点本身和其它的链接,只有当最后一个链接被删除后,文件的数据块才会被释放,也就是说,文件才会被彻底删除。
每添加一个硬链接,文件的链接数就加1。
互为硬链接的文件的所有属性都相同(inode号、权限、修改时间等)。
硬链接之间存在同步机制,一处数据的改变会实时同步到另一处。
如果我们删除硬链接文件的原文件,硬链接文件仍然存在,而且保留了原有的内容。这时,系统就“忘记”了它曾经是硬链接文件,而把它当成一个普通文件。(一般来说硬链接里不存在原文件和链接文件的概念,只说它们互为硬链接,都一样)
互为硬链接的文件虽然显示的大小一样,但实际上只占用一份磁盘空间。
硬链接不像软链接那么好找,不会直接标识出来,但后面讲到的find命令可以找到硬链接。
硬链接有两个限制:
1.硬链接只针对文件,不能用于目录。
2.互为硬链接的文件必须在同一个文件系统(分区)里。因为每个文件系统都有自己一套inode表,不同文件系统中可能会有inode号一样的文件,这样的话做硬链接就会出问题。
使用方法:ln 原文件 链接文件
软链接
又叫符号链接,相当于windows中的快捷方式,里面包含的是到原文件的路径。
可以针对文件或目录,也可以链接不同文件系统的文件。
软链接原文件和链接文件拥有不同的inode号,表明他们是两个不同的文件。他们的各项属性均不相同。软链接的大小跟到原文件的路径有关,路径越长软链接越大。
对链接文件进行操作(读写),实际上是对原文件的操作。
删除原文件或者移动原文件到其他路径,则链接失效。
使用方法:ln -s 原文件 链接文件