一、简介
命令文件被运行的时候,就称作为进程。进程在运行过程中,都有一个身份,该身份叫做有效身份(euid,egid).命令文件存在于文件系统的时候,有拥有者和拥有组的属性。
一般情况下,哪个用户执行命令,那么该命令在运行过程中(进程)所使用的身份(有效身份)是该用户的身份(命令执行者身份).与命令文件本身的属性没有关系。
用户tom执行命令/bin/touch , 执行过程中,touch进程有效身份是tom
二、特权位
和上面的一般情况刚好相反。当命令文件被设定了特权位。不管哪个用户执行该命令,进程的有效身份都是该命令文件本身的拥有者身份或者拥有组身份一样,二跟执行者无关。如果/bin/touch指令文件被设定了特权位,那么tom去执行该命令,进程有效身份是touch命令文件本身的所有者和所有组。
u+s只能针对可执行文件(命令和程序)来设定
g+s既可以对可执行文件(命令和程序)来设定,如果g+s对目录来设定,那么在该目录下直接创建文件、创建目录,这些文件或者目录的所有组就会自动继承该目录的所有组。
# chmod u+s /bin/touch
# chmod g+s /bin/touch
# chmod g+s /tmp/test/
# ll -d /tmp/test/
drwxrwsrwx. 2 root admin 4096 8月 5 10:02 /tmp/test/
三、粘贴位
对目录设定,该目录下的文件或者目录只能是拥有者可以删除或者root可以删除,其他角色的用户,就算对该对象有写权限,也无法删除该对象。# chmod o+t /tmp/test/ <---该目录下的对象只能够让对象本身的拥有者或者root删除
# ll -d /tmp/test/
drwxrwxrwt. 3 root admin 4096 8月 5 10:07 /tmp/test/
tom$ touch /tmp/test/tomfile
$ ll /tmp/test/tomfile
-rw-rw-r--. 1 tom tom 0 8月 5 10:39 tomfile <---只能是tom和root删除
roy$ rm -rf /tmp/test/tomfile
rm: 无法删除"tomfile": 不允许的操作