一.什么是粘滞位?
粘滞位(stickybit),又称黏着位,是Linux文件系统权限的一个特殊权限(有三个:SUID,SGID,SBIT)。最常见的用法是在目录(只能是目录,文件无效)上设置粘滞位,如此一来,只有目录内文件的所有者或者root才可以删除或移动文件。如果不为目录设置粘滞位,任何具有该目录写和执行的用户都可以删除和移动其中的文件。实际应用中,粘滞位一般用于/tmp目录(在Linux系统中较典型的例子就是“/tmp”、 “/var/tmp”?录。这两个目录作为Linux系统的临时文件夹,权限为“rwxrwxrwx”,即允许任意用户、任意程序在该目录中进行创建、删除、移动文件或目录等操作),以防普通用户删除或移动其他用户的文件。
下面我来举个案例,大家看一看如果你对你创建的目录文件不加以保护,会出现什么后果。
1,以root登录系统,进入/tmp中;
2,mkdir mydir ,并且设其权限为777;
3,cd mydir ,并创建文件file;
4,以普通用户登录,并进入/mydir;
5,rm file,尝试删除这个目录文件;
图1,文件被其他用户删除(未设置粘滞位)
上面这个案例给我们敲响了警钟,虽然该文件的权限是644,其他用户不能对其进行除了读以外其他任何操作,但是其他用户(上面例子指普通用户)还是删除了它。如果你想你创建的目录文件不想被其他用户删除,你就需要用粘滞位来保护你创建的目录文件不被操作。
二,如何设置粘滞位?
在上面案例的基础之上,我们来在原有的mydir(权限为777)目录下,新创建一个file文件,并通过“chmod o+t mydir”将mydir设置成粘滞位,进入普通用户模式下,再次对file进行删除操作,结果你会发现删除不了。见图2:
图2,设置粘滞位后的文件不会被删除
这里再补充几点
1,与之对应的去除粘滞位指令是“chmod o-t file”。见图3:
图3,去除粘滞位指令
2,也可以通过“chmod 1xxx test”指令设置粘滞位。见图4:
图4,设置粘滞位
3,与之对应的去除粘滞位指令是“chmod xxx test”。见图5:
图5,去除粘滞位
4,如果其他人无x(可执行)权限时,设置粘滞位后,最后一位出现的是大写的‘T’,它代表的就是“空的”。见图6:
图6,大写‘T’代表为空
5, 当用户在该目录下创建文件或目录时,仅有自己和root才有权删除该文件。