在介绍Linux粘滞位之前,先来简单介绍一下文件权限和目录权限的区别。在linux系统中文件(文件和目录)的权限有三种(r,w,x),而这三种权限对文件和目录的意义有所不同。

权限对文件
r (read) :可读取该文件的实际内容;
w(write):可以编辑,新增或者修改该文件的内容(但不含删除该文件);
x(execute):代表该文件可以被系统执行

对于文件的r ,w, x来说,主要针对的"文件的内容"而言,与文件名的存在与否没有关系;

权限对目录
r (read):表示具有读取目录结构列表的权限,不如可以用ls查看一下目录有什么
w(write):而写的权限对目录来说就显得很强大了,代表具有更改该目录结构列表的权限。目录可写操作包括:新建文件或目录、删除文件或目录(不论文件的权限是什 么)、对文件或目录重命名、移动文件或目录等。
x(execute):目录的X权限代表的是用户能否进入该目录称为工作目录。拥有此权限,就可以cd进去,否则,将不能进入目录内部。

一、粘滞位介绍
粘滞位(Stickybit),或粘着位。最常见的用法在目录上设置粘滞位,如此以来,只有目录内文件的所有者或者root才可以删除或移动该文件。如果不为目录设置粘滞位,任何具有该目录写和执行权限的用户都可以删除和移动其中的文件。在linux系统的实际应用中,粘滞位一般用于/tmp目录,以防止普通用户删除或移动其他用户的文件。一个目录具有粘滞位,则在other的X位会表现为 t,或者T。T和t的区别在于,原来x位上有x权限,有了粘滞位则表现为t,否则,则表现为T。

在Linux系统中比较典型的例子就是"/tmp"、 "/var/tmp"目录。这两个目录作为Linux系统的临时文件夹,权限为"rwxrwxrwx",即允许任意用户、任意程序在该目录中进行创建、删除、移动文件或目录等操作。试想一下:若任意一个普通用户都能够删除系统服务运行中使用的临时文件,将造成什么结果?

粘滞位权限便是针对此种情况设置,当目录被设置了粘滞位的t权限以后,即便用户对该目录有写入权限,也不能删除该目录中其他用户的文件数据,而是只有该文件的所有者和root用户才有权将其删除。设置了粘滞位的t权限之后,正好可以保持这种动态的平衡:允许各用户在目录中任意写入、删除数据,但是禁止随意删除其他用户的数据。需要注意: 粘滞位权限只能针对⽬录设置,对于⽂件⽆效。

正常情况下,在Linux系统中,如果对一个目录具有写权限,那么就可以在这个目录下创建删除文件。现在有这么个需求:如果现在需要创建这样一个目录,可以在这个目录里创建文件,但是其他用户不能删除这个文件。这里就要用到Linux这个特殊的权限:粘滞位,也就是t特殊权限!需要注意:粘滞位t权限给其它用户带来的安全限制 仅仅在于不能删除和移动/更名文件 (即粘滞位保护的是文件不被其他用户rm或mv,即使文件对其他用户有写权限,777都不行!),因为它针对的是目录。

在Linux中有三种特殊权限,分别为:
SetUID  =  4:在所有者设置的权限     
SetGID  =  2:在所属组设置的权限
粘着位  =  1:在其他人的位置设置的(使用t来表示)

SetUID 、SetGID、t权限的设置,之前已在另一篇文档中简单介绍:https://www.cnblogs.com/kevingrace/p/5823003.html,这里重点说下粘滞位的设置,对于授予了粘滞位权限的目录(目录权限777)来说:每个用户都能在这个目录里面创建文件,但是只能删除或移动自己创建的文件。

二、粘滞位应用
设置了粘滞位t权限的目录,使用ls命令查看其属性时,其他用户权限位置的"x"将变为"t"。

查看/tmp、 /var/tmp目录本身的权限,确认存在"t"标记。
[root@ss-server ~]# ll -d /tmp/
drwxrwxrwt. 8 root root 4096 Dec 6 03:46 /tmp/
[root@ss-server ~]# ll -d /var/tmp/
drwxrwxrwt. 3 root root 4096 Dec 3 20:18 /var/tmp/

粘滞位t权限都是针对其他用户(other)设置,使用chmod命令设置目录权限时,"o+t"、"o-t"权限模式可分别用于添加、移除粘滞位权限。

设置粘滞位权限方法
# chomd o+t
# chomd 1777 删除粘滞位权限方法
# chomd o-t

设置粘滞位t权限示例:

1)创建粘滞位t权限之前
用root身份创建/opt/kevin目录,并用参数-m 为它指定权限为777(可读,可写,可执行),并且所属者和所属组都是root。
[root@ss-server ~]# mkdir -m 777 /opt/kevin/ #-m参数表示mkdir创建时指定目录权限,省略了创建后再chmod授权("相当于chmod 777 /opt/kevin")
[root@ss-server ~]# ll -d /opt/kevin/
drwxrwxrwx 2 root root 4096 Dec 6 16:17 /opt/kevin/ 接着在该目录下新建两个文件,权限为默认。因为其他用户other对/opt/kevin目录具有w权限,所以可以删除目录内容。
[root@ss-server kevin]# touch test1 test2
[root@ss-server kevin]# ll
total 0
-rw-r--r-- 1 root root 0 Dec 6 16:19 test1
-rw-r--r-- 1 root root 0 Dec 6 16:19 test2 切换到名为linan的普通用户,尝试去删除刚刚在root下新建的两个文件test1 和 test2。经过实践,发现可以删除。
[root@ss-server ~]# su - linan
Last login: Fri Dec 6 16:21:48 CST 2019 on pts/21
[linan@ss-server ~]$ cd /opt/kevin/
[linan@ss-server kevin]$ ll
total 0
-rw-r--r-- 1 root root 0 Dec 6 16:33 test1
-rw-r--r-- 1 root root 0 Dec 6 16:33 test2
[linan@ss-server kevin]$
[linan@ss-server kevin]$ ll
total 0
-rw-r--r-- 1 root root 0 Dec 6 16:33 test1
-rw-r--r-- 1 root root 0 Dec 6 16:33 test2
[linan@ss-server kevin]$ echo "123" > test1
-bash: test1: Permission denied
[linan@ss-server kevin]$ echo "123" >> test1
-bash: test1: Permission denied
[linan@ss-server kevin]$ mv test1 test11
[linan@ss-server kevin]$ ll
total 0
-rw-r--r-- 1 root root 0 Dec 6 16:33 test11
-rw-r--r-- 1 root root 0 Dec 6 16:33 test2
[linan@ss-server kevin]$ rm -rf test11
[linan@ss-server kevin]$ rm -rf test2
[linan@ss-server kevin]$ ll
total 0
[linan@ss-server kevin]$ 需要注意:
1. 这时候其他普通用户对/opt/kevin目录下的文件可以进行删除和更名权限!尽管这些文件的other用户是r--,因为/opt/kevin目录在其他用户这一权限栏是rwx,
即普通用户对/opt/kevin目录有可写权限。目录可写权限是指可对目录下的文件进行删除、新建和更名操作。
2. 但是此时,普通用户对/opt/kevin目录下的文件本身不能进行修改操作,因为/opt/kevin目录下的文件自身的其他用户这一权限栏是r--。
如果文件权限对其他普通用户设置了可写权限,可就能进行文件修改操作! ===========================================================================================================================================
2)创建粘滞位t权限之后
回到root用户下,给/opt/kevin目录加上粘滞位再次查看目录,发现other的x权限变为t,说明添加粘滞位成功。
[linan@ss-server kevin]$ logout
[root@ss-server ~]# cd /opt/kevin/
[root@ss-server kevin]# ll -d
drwxrwxrwx 2 root root 4096 Dec 6 16:34 .
[root@ss-server kevin]# chmod o+t . #或者直接执行"chmod o+t /opt/kevin"
[root@ss-server kevin]# ll -d
drwxrwxrwt 2 root root 4096 Dec 6 16:34 . 依旧在该目录下重新新建两个文件 test1 和 test2。
[root@ss-server kevin]# touch test1 test2
[root@ss-server kevin]# ll
total 0
-rw-r--r-- 1 root root 0 Dec 6 16:37 test1
-rw-r--r-- 1 root root 0 Dec 6 16:37 test2 再次切换到其他普通用户下,尝试对在/opt/kevin目录设置粘滞位权限后创建的文件test1 和 test2进行删除或更名操作。
结果发现不能删除或更名文件!! (即使给文件授予777权限也不行)
可以证实粘滞位给其它用户带来的安全限制。
[root@ss-server kevin]# su - linan
Last login: Fri Dec 6 16:33:29 CST 2019 on pts/22
[linan@ss-server ~]$ cd /opt/kevin/
[linan@ss-server kevin]$ ll
total 0
-rw-r--r-- 1 root root 0 Dec 6 16:37 test1
-rw-r--r-- 1 root root 0 Dec 6 16:37 test2
[linan@ss-server kevin]$ rm -rf test1
rm: cannot remove ‘test1’: Operation not permitted
[linan@ss-server kevin]$ rm -rf test2
rm: cannot remove ‘test2’: Operation not permitted
[linan@ss-server kevin]$ mv test1 test11
mv: cannot move ‘test1’ to ‘test11’: Operation not permitted
[linan@ss-server kevin]$ mv test2 test22
mv: cannot move ‘test2’ to ‘test22’: Operation not permitted 即使上面给test1、test1文件授予777权限,那么其他用户也不能删除或移动这两个文件!!! 为了进一步证实文件所有者和root依旧可以删除。用root对该文件进行删除操作。结果发现,依旧可以正常删除。
[linan@ss-server kevin]$ logout
[root@ss-server kevin]# ll
total 0
-rw-r--r-- 1 root root 0 Dec 6 16:37 test1
-rw-r--r-- 1 root root 0 Dec 6 16:37 test2
[root@ss-server kevin]# rm -rf test1
[root@ss-server kevin]# rm -rf test2
[root@ss-server kevin]# ll -d
drwxrwxrwt 2 root root 4096 Dec 6 16:48 . 再来验证下,当文件对other用户有可写权限的时候,粘滞位t权限的保护作用!
[root@ss-server kevin]# ll -d
drwxrwxrwt 2 root root 4096 Dec 6 17:00 .
[root@ss-server kevin]# touch test1 test2
[root@ss-server kevin]# chmod 777 test1
[root@ss-server kevin]# chmod 777 test2
[root@ss-server kevin]# ll
total 0
-rwxrwxrwx 1 root root 0 Dec 6 17:00 test1
-rwxrwxrwx 1 root root 0 Dec 6 17:00 test2 [root@ss-server kevin]# su - linan
Last login: Fri Dec 6 16:54:47 CST 2019 on pts/20
[linan@ss-server ~]$ cd /opt/kevin/
[linan@ss-server kevin]$ ll -d .
drwxrwxrwt 2 root root 4096 Dec 6 17:00 .
[linan@ss-server kevin]$ ll
total 0
-rwxrwxrwx 1 root root 0 Dec 6 17:00 test1
-rwxrwxrwx 1 root root 0 Dec 6 17:00 test2
[linan@ss-server kevin]$ echo "123" > test1
[linan@ss-server kevin]$ echo "123" >> test2
[linan@ss-server kevin]$ rm -rf test1
rm: cannot remove ‘test1’: Operation not permitted
[linan@ss-server kevin]$ mv test2 test22
mv: cannot move ‘test2’ to ‘test22’: Operation not permitted 可以看出,尽管test1、test2文件设置了777权限,但是由于它们所在目录/opt/kevin设置了粘滞位t权限!
则其他用户均不能对这两个文件执行rm和mv操作!!!! 再次回到root账号下,删除test1、test2文件
[linan@ss-server kevin]$ logout
[root@ss-server kevin]# ll
total 8
-rwxrwxrwx 1 root root 4 Dec 6 17:00 test1
-rwxrwxrwx 1 root root 4 Dec 6 17:01 test2
[root@ss-server kevin]# rm -rf test1
[root@ss-server kevin]# rm -rf test2
[root@ss-server kevin]# ll
total 0
[root@ss-server kevin]# ll -d .
drwxrwxrwt 2 root root 4096 Dec 6 17:01 .

根据以上示例,可以得出结论
当一个目录被设置为"粘滞位"的t权限后,则该目录下的文件只能由  
1. 超级管理员(root)删除或移动/更名(rm或mv)  
2. 该目录或文件的所有者删除或移动/更名(rm或mv)

需要注意
1. 虽然目录有了粘滞位t权限,other用户不能对该目录的文件进行删除或者移动操作,但是如若other对该文件由w权限,还是可以进行修改文件内容的。
2. 粘滞位只对目录有效,对文件无效。

删除粘滞位t权限的设置

[root@ss-server kevin]# chmod o-t /opt/kevin/
[root@ss-server kevin]# ll -d .
drwxrwxrwx 2 root root 4096 Dec 6 17:01 .

Centos6下关于系统用户密码规则-运维笔记的更多相关文章

  1. Centos7下关于系统用户密码规则-运维笔记

    针对Centos7下的系统用户的密码规则复杂度的设置,处于安全考虑,说明如下: 一.设置密码规则 1)密码长度.有效期 /etc/login.defs文件是当创建用户时的一些规划,比如创建用户时,是否 ...

  2. Linux下Apache(HTTP)基础知识梳理-运维笔记

    HTTP介绍: HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从万维网(WWW:World Wide Web )服务器传输超文本到本地浏览器的传 ...

  3. 重设windows10中的sub linux系统用户密码

    原文:重设windows10中的sub linux系统用户密码 版权声明:本文为博主原创文章,转载请注明出处. https://blog.csdn.net/haiyoung/article/detai ...

  4. Windows下GIT的用户密码修改

    Windows下GIT的用户密码修改

  5. linux设置系统用户密码

    目录 一:系统用户密码 1.设置用户密码 一:系统用户密码 1.设置用户密码 1.交互式方法 passwd [用户名] 2.免交互式 echo [设置密码] | passwd --stdin [用户名 ...

  6. Linux系统运维笔记(四),CentOS 6.4安装 MongoDB

    Linux系统运维笔记(四),CentOS 6.4安装 MongoDB 1,下载 https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-3.0.6 ...

  7. centos 7 查看系统/硬件信息及运维常用命令+联想Y430P无线网卡驱动安装

     centos 7 查看系统/硬件信息及运维常用命令 当前环境:联想Y430P  CentOS 7.3 [root@yan-001 ~] # uname -a # 查看内核/操作系统/CPU信息的Li ...

  8. Linux系统运维笔记(五),CentOS 6.4安装java程序

    Linux系统运维笔记(五),CentOS 6.4安装java程序 用eclipse编译通的java程序,现需要实施到服务器.实施步骤: 一,导出程序成jar包. 1,在主类编辑界面点右健,选  ru ...

  9. Linux系统运维笔记(四),CentOS 6.4安装Nginx

    Linux系统运维笔记(四),CentOS 6.4安装Nginx 1,安装编译工具及库文件 yum -y install make zlib zlib-devel gcc-c++ libtool op ...

随机推荐

  1. 合理配置SQLSERVER内存

    合理配置SQLSERVER内存 原文地址:https://www.cnblogs.com/lyhabc/archive/2012/09/28/2707857.html SQLSERVER是个很喜欢内存 ...

  2. 將UNITY作品上傳到Facebook App!

    前言 大家好,今天要來介紹如何用UNITY 將製作好的遊戲上傳到Facebook,也就是Facebook App.近期Facebook與Unity合作而推出了新的插件,利用插件可上傳分數.邀請好友.P ...

  3. if条件简单语法

    if语句是实际工作中最重要最常用的语句. if条件语法: 单分支结构 if [ 条件 ] then 指令 fi 或 if [ 条件 ]:then 指令 fi if 单分支条件中文编程形象语法: 如果 ...

  4. January 26th, 2018 Week 04th Friday

    A great forest is set on fire by a small spark. 最小的火能点着最大的树林. It is just a spark, but it is enough t ...

  5. C语言学习关于数据类型的一些知识点(初学者)

    1.整型常量的的前缀:(1)十进制常数无前缀. (2)八进制常数前缀为0,八进制常数无符号. (3)十六进制常数前缀为0X或0x. 注:在程序中是根据前缀来区分各种进制数的.因此在书写常数时不要把前缀 ...

  6. pb数据窗口之间的传参

    问题描述: 通过一个窗口打开一个子窗口并传递指定参数查询详细信息 解决方法: 在前者窗体的user object下的itemchanged事件中,相应位置加入openwithparm函数 :   op ...

  7. 怎么配置 Oracle 侦听器来使用SQL操作ST_Geometry

    关于这个内容,其实从ArcSDE9.2推出ST_Geometry就让用户感到很有吸引力,而且特别是在ArcSDE9.3之后,用户使用SQL操作ST_geometry越来越多,但是在配置Oracle监听 ...

  8. Python中的 redis keyspace 通知

    介绍 Redis是内存中的数据结构存储,用于缓存.高速数据摄取.处理消息队列.分布式锁定等等. 与其他内存存储相比,使用Redis的优势在于它提供了持久性和数据结构,比如列表.集合.排序集合和散列. ...

  9. vue.js 传参 href传参 与router-link传参

    每天学习一点点 编程PDF电子书免费下载: http://www.shitanlife.com/code 1. <a v-bind:href="'#/appinfo/'+cateApp ...

  10. xiaowuga poj3735—Training little cats(特殊操作转化为矩阵操作)

    题意:有n只猫,对其进行k次操作,然后反复这样操作m次. 其中g 表示 i 猫加1, e表示 i 猫为0:s表示  i 与 j 猫互换. 解释一下样例: 3 1 6g 1g 2g 2s 1 2g 3e ...