九、特殊权限set_uid、set_gid、stick_bit;软链接文件;硬链接文件
(一)特殊权限set_uid(针对文件)
set_uid:该权限针对二进制可执行文件,使文件在执行阶段具有文件所有者的权限。比如,passwd这个命令就具有该权限。当普通用户执行passwd命令时,可以临时获得root权限,从而更改密码。通俗的来说,就是普通用户在编辑这个文件的时候才会获得root用户的改文件的权力。
设置这个命令的前提是这个文件需要是二进制文件,且须为可执行文件。
二进制文件:如ls命令,passwd命令这些命令的文件就是二进制文件。
更改密码的文件:/etc/shadow
# ls -l /usr/bin/passwd
-rwsr-xr-x. 1 root root 27832 6月 10 2014 /usr/bin/passwd
红色背景文件,s权限,代表set_uid权限。
如何给文件授权s权限:u代表uid
# chmod u+s /usr/bin/ls
# ls -l /usr/bin/ls
-rwsr-xr-x. 1 root root 117656 11月 6 2016 /usr/bin/ls
此时的s为小写。
去掉这个权限:
# chmod u-s /usr/bin/ls
将命令改u-s即可。
另外一种写法:
# chmod u=rws /usr/bin/ls
# ls -l /usr/bin/ls
-rwSr-xr-x. 1 root root 117656 11月 6 2016 /usr/bin/ls
此时的s权限为大写S,这是因为没有root没有了x权限,再命令:
# chmod u+x /usr/bin/ls
即可。大写的S变为小写的s。
目录也可以加s权限,但是目录不是可执行的文件,因此加s权限无意义。
(二)特殊权限set_gid(可作用文件,也可作用目录)
set_gid:该权限可以作用在文件上(二进制可执行文件),也可以作用在目录上。当作用在文件上时,其功能和set uid一样,会使文件在执行阶段具有文件所属组的权限。目录被设置这个权限后,任何用户在此目录下创建的文件都具有和该目录所属组相同的组。
如何设置这个权限,命令:
# chmod g+s /usr/bin/ls
# ls -l /usr/bin/ls
-rwxr-sr-x. 1 root root 117656 11月 6 2016 /usr/bin/ls
×××背景文件,s权限在组权限的位置段。
# mkdir 123
# chmod g+s 123
# chown :user1 123
# touch 123/678
# ls -l 123/
总用量 0
-rw-r--r--. 1 root user1 0 1月 31 20:28 678
此处,123目录下新建的678文件所属组自动改为了user1。
(三)特殊权限stick_bit(sticky bit)
stick_bit:可理解为防删除位。文件是否可以被某用户删除,主要取决于该文件所在的目录是否对该用户具有写权限。若没有写权限,则这个目录下的所有文件都不能删除,同时也不能添加新文件。若希望用户能添加文件但不能删除目录下其他用户的文件,则可以对父目录增加该权限。设置该权限后,用户对目录具有了写权限,但不能删除其他用户的文件。防止别人删除自己的文件,root用户除外。
当有特殊权限时,第一位数字可以是0、1(--t)、2(-s-)、3(-st)、4(s--)、5(s-t)、6(ss-)、或7(sst)。
# ls -l /usr/bin/passwd
-rwsr-xr-x. 1 root root 27832 6月 10 2014 /usr/bin/passwd
# ls -ld /tmp/
drwxrwxrwt. 14 root root 4096 1月 31 20:45 /tmp/
回顾passwd,它是s--,所以是4;而/tmp/是--t,所以是1 。
passwd用数字表示为4755;/tmp/用数字表示为1777。
格式和set_uid和set_gid同理;chmod o+t dirname。
(四)软链接文件(类似于Windows的快捷方式)
软链接文件:与硬链接不同,软链接是建立一个独立的文件,当读取这个链接文件时,它会把读取的行为转发到该文件所链接的文件上。可以节省空间,既可以链接文件,也可以链接目录。做软链接尽量使用绝对路径。可以软链接文件,也可以目录,也可以跨分区。
制作软链接的命令:
# ln -s [源文件] [软链接文件]
ln命令格式:ln [-n] [源文件] [目的文件]
常用选项是-s。若不加-s就是建立硬链接,加上-s就是建立软链接。
经验:若有一个服务A会一直写数据到B文件中,快把这个B文件的分区写满了,可以把B文件复制一份到根分区里,这里复制后的文件称为B1,然后再删除B文件,再建立一个软链接,将B1软链接到B来。
(五)硬链接文件
硬链接文件:当系统要读取一个文件时,会先读iNode信息,再根据iNode中的信息到块区域将数据取出来。硬链接是直接再建立一个iNode链接到文件放置的块区域,即进行硬链接时该文件内容没有任何变化,只是增加了一个指向这个文件的iNode,并不会额外占用磁盘空间。
格式同软链接格式一样。
两个限制:(仅支持文件)
1)不能跨文件系统,因为不同的文件系统有不同的iNode table;
2)不能链接目录。