2.20 特殊权限stick_bit

2022-01-06 13:56:06 浏览数 (1)

stick_bit介绍

代码语言:javascript复制
系统中的/tmp/目录是拥有stick_bit权限的
[root@hf-01 ~]# ls -ld /tmp/
drwxrwxrwt. 9 root root 4096 10月 27 05:14 /tmp/

这drwxrwxrwt.里面的t(t里面包含x权限),就是stick_bit权限,

stick_bit(t):又叫做防删除位。只对目录有效,对文件无效。

相当于stick-bit设置others权限位。

stick_bit用法

代码语言:javascript复制
在终端2hf(1)下

[hanfeng@hf-01 ~]$ whoami   查看所属主
hanfeng
[hanfeng@hf-01 ~]$ cd /tmp/     切换到/tmp/目录下
[hanfeng@hf-01 tmp]$ ls
aminglinux  amning  mysql.sock  yum.log
[hanfeng@hf-01 tmp]$ touch yunwei   新建文件yunwei
[hanfeng@hf-01 tmp]$ ls -l  会看到文件yunwei的所属主和所属组都是hanfeng
总用量 0
drwxr-xr-x. 4 user1   hanfeng 39 10月 26 08:23 aminglinux
drwxr-xr-x. 3 root    root    14 10月 25 06:29 amning
srwxrwxrwx. 1 mysql   mysql    0 10月 27 02:47 mysql.sock
-rw-r--r--. 1 user1   root     0 10月 26 07:48 yum.log
-rw-rw-r--. 1 hanfeng hanfeng  0 10月 27 08:40 yunwei
[hanfeng@hf-01 tmp]$ vi yunwei  并可以编辑文件
[hanfeng@hf-01 tmp]$ chmod 777 yunwei   将yunwei文件权限修改为777
[hanfeng@hf-01 tmp]$ ls -l  会看到yunwei的权限变化为-rwxrwxrwx.
总用量 4
drwxr-xr-x. 4 user1   hanfeng 39 10月 26 08:23 aminglinux
drwxr-xr-x. 3 root    root    14 10月 25 06:29 amning
srwxrwxrwx. 1 mysql   mysql    0 10月 27 02:47 mysql.sock
-rw-r--r--. 1 user1   root     0 10月 26 07:48 yum.log
-rwxrwxrwx. 1 hanfeng hanfeng 26 10月 27 08:41 yunwei

这时在切换到1hf(0)下
[root@hf-01 tmp]# whoami    查看所属主
root
[root@hf-01 tmp]# su - user1    切换到user1用户下
[user1@hf-01 ~]$ cd /tmp/       切换到目录/tmp/下
[user1@hf-01 tmp]$ ls       会发现可以查看到文件
aminglinux  amning  mysql.sock  yum.log  yunwei
[user1@hf-01 tmp]$ vi yunwei    也可以进行编辑
[user1@hf-01 tmp]$ rm -f yunwei     不可以删除文件yunwei的
rm: 无法删除"yunwei": 不允许的操作

所以说,这个stick_bit权限叫防删除位,只有有权限的用户(比如root)才可以删除,而其他的用户是根本无法删除掉的

stick_bit例子

  • 就是防止别人删除自己的文件(root用户除外)
代码语言:javascript复制
在终端1hf(0)下

[user1@hf-01 tmp]$ mkdir user1  新建目录user1
[user1@hf-01 tmp]$ chmod 777 user1  并把权限修改为777
[user1@hf-01 tmp]$ ls -l
总用量 4
drwxr-xr-x. 4 user1   hanfeng 39 10月 26 08:23 aminglinux
drwxr-xr-x. 3 root    root    14 10月 25 06:29 amning
srwxrwxrwx. 1 mysql   mysql    0 10月 27 02:47 mysql.sock
drwxrwxrwx. 2 user1   user1    6 10月 27 08:57 user1        777权限,意味着任何用户都可以去写,可读,可执行
-rw-r--r--. 1 user1   root     0 10月 26 07:48 yum.log
-rwxrwxrwx. 1 hanfeng hanfeng 45 10月 27 08:43 yunwei

切换到终端2hf(1)下

[hanfeng@hf-01 tmp]$ cd user1   切换到目录user1下面
[hanfeng@hf-01 user1]$ touch 1.txt  发现可以创建文件
[hanfeng@hf-01 user1]$ mkdir 234    可以创建目录
[hanfeng@hf-01 user1]$ ls -l
总用量 0
-rw-rw-r--. 1 hanfeng hanfeng 0 10月 27 09:03 1.txt
drwxrwxr-x. 2 hanfeng hanfeng 6 10月 27 09:03 234

在切换到终端1hf(0)下

[user1@hf-01 tmp]$ cd user1
[user1@hf-01 user1]$ ls
1.txt  234
[user1@hf-01 user1]$ ls -l
总用量 0
-rw-rw-r--. 1 hanfeng hanfeng 0 10月 27 09:03 1.txt
drwxrwxr-x. 2 hanfeng hanfeng 6 10月 27 09:03 234
[user1@hf-01 user1]$ rm -f 1.txt
[user1@hf-01 user1]$ ls
234
[user1@hf-01 user1]$ rm -r 234
rm:是否删除有写保护的目录 "234"?y
[user1@hf-01 user1]$ ls
[user1@hf-01 user1]$ pwd    
/tmp/user1
[user1@hf-01 user1]$ ls -ld .
drwxrwxrwx. 2 user1 user1 6 10月 27 09:07 

上述例子,这是因为这个目录,删除的这个文件所在的目录有没有写权限,而不是看删除的文件本身的权限,user1目录下有1.txt文件,要想删除1.txt,看的不是1.txt文件的权限,而是看1.txt所在目录的权限,它所在的目录是user1,user1就是777,777是任何用户可编辑的,所以就可删除,而一旦我们加上了stick_bit权限

stick_bit总结

  • 文件是否可以被某用户删除,主要取决于该文件所在的目录是否对该用户具有写权限。如果没有写权限,则这个目录下的所有文件都不能删除,同时也不能添加新的文件。
  • 如果希望用户能够添加文件,但是不能删除该目录下其他用户的文件,则可以对该目录增加这个权限。
  • 设置该权限后,就算用户对目录具有写权限,也不能删除其他用户的文件。
  • 有时候,set-uid上的权限为大写的S,而不是小写的s。这是因为该文件没有x权限所致,不管是大写的S还是小写s,都表示它存在set-uid和set-gid权限。同理stick-bit也一样。
  • 当有特殊权限时,第一位数字可以是0、1(--t)、2(-s-)、3(-st)、4(s--)、5(s-t)、6(ss-)、7(sst),这里的“(---)”,分别指user、group、others的权限位(rwx rwx rwx)。 如:/tmp是--t,所以第一位为1,所以/tmp权限用数字表示为1777。
  • 文件的读写执行权限不要和目录的读写执行权限混淆。
  • 比如:一个文件设置了可写权限,但目录未设置可写权限,表示不能删除该文件,但文件内容是可编辑的。
  • 一个目录设置了可写权限,但目录下文件没有可写权限,表示可删除该文件,但该文件不能编辑。能否删除一个文件或者目录,看得是这个文件或目录所在的父目录的权限,能否删除和文件本身的权限无关。

0 人点赞