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用户除外)
在终端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。
- 文件的读写执行权限不要和目录的读写执行权限混淆。
- 比如:一个文件设置了可写权限,但目录未设置可写权限,表示不能删除该文件,但文件内容是可编辑的。
- 一个目录设置了可写权限,但目录下文件没有可写权限,表示可删除该文件,但该文件不能编辑。能否删除一个文件或者目录,看得是这个文件或目录所在的父目录的权限,能否删除和文件本身的权限无关。