linux文件特殊权限位s和t用法举例

发布时间:2020-06-19编辑:脚本学堂
本文介绍下,linux系统下文件的特殊权限位s与t的具体用法,这个s权限,是为了让一般使用者临时具有该文件所属主/组的执行权限,t权限只针对目录有效。

本节内容:
linux文件特殊权限s和t

今天为大家介绍linux操作系统下,两个特殊的文件权限位s和t,掌握好这二个特殊的权限位,对保护文件系统的安全,会有很帮助的。

首先,查看二个文件的权限:
 

复制代码 代码示例:
[root@jbxue ~]# ls -ld /usr/bin/passwd  /tmp
drwxrwxrwt 4 root root  4096 Jun  2 17:33 /tmp
-rwsr-xr-x 1 root root 22984 Jan  7  2007 /usr/bin/passwd

这里的s和t是针对执行权限来讲的。
这个s权限,是为了让一般使用者临时具有该文件所属主/组的执行权限。
比如:/usr/bin/passwd在执行它的时候需要去修改/etc/passwd和/etc/shadow等文件,这些文件除了root外,其他用户都没有写权限,但是又为了能让普通用户修改自己的密码,只能时临时让他们具有root的权限。

所以这个s权限就是用来完成这个特殊任务的。s权限只能应用在二进制的可执行文件上。
如果,不想让普通用户修改自己的密码,只需要:
 

复制代码 代码示例:
[root@jbxue ~]# chmod u-s /usr/bin/passwd 
或者
[root@jbxue ~]# chmod 0755 /usr/bin/passwd

0755最前面的0表示不使用任何特殊权限,该位上的数字可以是0,1(--t),2(-s-),3(-st),4(s--),5(s-t),6(ss-),7(sst)
那个t权限只针对目录生效,它表示只能让所属主以及root可以删除(重命名/移动)该目录下的文件。
比如/tmp目录本来就是任何用户都可以读写,如果别人可以任意删除(重命名/移动)自己的文件,那岂不是很危险。
所以,这个t权限就是为了解决这个麻烦的。

举例说明这个权限位的用法:
 

复制代码 代码示例:
[root@jbxue ~]# cd /tmp/
[root@jbxue tmp]# mkdir test
[root@jbxue tmp]# chmod 1777 test
[root@jbxue tmp]# ls -ld test
drwxrwxrwt 2 root root 4096 Jun  2 18:10 test
[root@jbxue tmp]# su test1
[test1@localhost tmp]$ touch test/1.txt
[test1@localhost tmp]$ ls -l test
total 4
-rw-r--r-- 1 test1 test 0 Jun  2 18:12 1.txt
[test1@localhost tmp]$ exit
[root@jbxue tmp]# su www
[www@localhost tmp]$ ls -l test/1.txt
-rwxrwxrwx 1 test1 test 6 Jun  2 18:12 test/1.txt
[www@localhost tmp]$ rm test/1.txt
rm: cannot remove `test/1.txt': Operation not permitted
提示不能删除1.txt
[www@localhost tmp]$ exit
[root@jbxue tmp]# chmod -t test
去掉t权限。
[root@jbxue tmp]# ls -ld test
drwxrwxrwx 2 root root 4096 Jun  2 18:13 test
[root@jbxue tmp]# su www
[www@localhost tmp]$ rm -f test/1.txt
再次删除,则删除成功。
[www@localhost tmp]$ ls test/1.txt
ls: test/1.txt: No such file or directory

以上就是有关linux系统中文件的特殊权限位s与t的用法介绍,希望对大家有所帮助。