linux 权限 粘滞位

2013-07-29 10:47:42 wuxian90 阅读数 3946
  • 实验 5:路由器密码恢复【此课时有资料下载】

    本课程从零开始系统性的演示了CCNA的实验操作,并且在实验操作的同时讲解CCNA对应的理论知识点,同时又不局限于大纲的要求,有些工作中比较重要的运用,比如三层交换机、HSRP、IPV6、MSTP等,即使超出大纲范围,也会...

    918人学习 晁海江
    免费试看
        对文件或目录进行访问控制时,“读取”、“写入”、“执行”是最基本的三种权限类型。除此之外,在linux中还存在着SET位权限(SUID、SGID)、粘滞位(Sticky Bit)等为为文件或目录提供额外的控制方式。下面我们就来聊聊这两个非常有用的方式。
SET位权限
        位权限多用于给可执行的程序或脚本文件进行设置,其中SUID表示对属主用户增加SET位权限,SGID表示对属组内的用户增加SET位权限。执行未见被设置了SUID、SGID权限后,任何用户在执行该文件时,将获得该文件属主、属组账号对应的身份。
        为执行文件添加SET位权限一般使用chmod命令实现:
        如使用“chmod u+s”设置SUID权限,使用“chmod g+s”设置SGID权限。
        也可以使用数字形式,SUID对应八进制数字“4”、SGID对应八进制数字“2”:
        如使用“chmod 4755”设置SUID权限,使用“chmod 2755”设置SGID权限,使用“chmod 6755”同时设置SUID和SGID权限
        合理利用SUID、SGID设置SET位权限,可以在确保安全性的同时为linux系统的管理和使用带来方便。例如,linux系统中passwd命令的程序文件就被设置了SUID权限,正因为如此,尽管普通用户无法直接修改“/etc/shadow”文件,但仍然可以通过passwd命令修改自己的登录密码,从而以root用户的身份间接更新shadow文件中的密码信息。
        另一方面,若没有确切的应用需要,不要轻易为可执行文件设置SET位权限,特别是那些属主、属组是root的执行程序,使用SET位权限时更应该谨慎。例如,若为vim编辑器程序设置SUID权限,将导致普通用户也可以使用vim编辑器修改系统中的任何配置文件。
        需要去除SUID、SGID权限时,只需要使用“u-s”、“g-s”的权限模式即可。
粘滞位权限
        粘滞位主要用于为目录设置特殊的附加权限,当目录被设置粘滞位权限后,即便用户对该目录有写入权限,也不能删除该目录中其他用户的文件数据。设置了粘滞位权限的目录,使用ls命令查看其属性时,其他用户权限处的“x”将变为“t”。
        使用chmod命令设置目录权限时,“chmod +t”、“chmod -t”权限模式可分别用于添加、移除粘滞位权限。将数字权限模式“nnnn”中 的第1位数字改为“1”、“0”,也可以实现添加移除粘滞位权限。
2017-02-20 20:08:34 if9600 阅读数 382
  • 实验 5:路由器密码恢复【此课时有资料下载】

    本课程从零开始系统性的演示了CCNA的实验操作,并且在实验操作的同时讲解CCNA对应的理论知识点,同时又不局限于大纲的要求,有些工作中比较重要的运用,比如三层交换机、HSRP、IPV6、MSTP等,即使超出大纲范围,也会...

    918人学习 晁海江
    免费试看

关于linux下粘滞位(sticky位):

        粘滞位(Sticky bit): 如果用户对目录有写权限,则可以删除其中的文件和子目录,即使该用户不是这些文件的所有者,而且也没有读或写许可。粘滞位出现可执行许可的位置上,用t表示,设置了该位后,其它用户就不可以删除不属于他的文件和目录。也只能针对⽬录设置,对于⽂件⽆效。则设置了粘滞位后,只有目录内文件的所有者或者root才可以删除或移动该文件。如果不为目录设置粘滞位,任何具有该目录写和执行权限的用户都可以删除和移动其中的文件。

       实际应用中,粘滞位一般用于/tmp目录,以防止普通用户删除或移动其他用户的文件。 在Linux系统中⽐较典型的例⼦就是“/tmp”⽬录。这个⽬录作为Linux系统的临时⽂件夹,权限为“rwxrwxrwt”,即允许任意⽤户、任意程序在该⽬录中进⾏创建、删除、移动⽂件或⼦⽬录等操作。 

       然⽽Linux是一个多用户多任务的操作系统,能够供多个人使用,建立多个账号,试想⼀下,若任意⼀个普通⽤户都能够删除系统服务运⾏中使⽤的临时⽂件,将造成什么结果?粘滞位权限便是针对此种情况设置,当⽬录被设置了粘滞位权限以后,即便⽤户对该⽬录有写⼊权限,也不能删除该⽬录中其他⽤户的⽂件数据,⽽是只有该⽂件的所有者和root⽤户才有权将其删除。设置了粘滞位之后,允许各⽤户在⽬录中任意写⼊、删除数据,但是禁⽌随意删除其他⽤户的数据。设置了粘滞位权限的⽬录,使⽤ls命令查看其属性时,其他⽤户权限处的“x”将变为“t”。但是该目录下的目录不继承该权限,要再设置才可使用。

那么原来的执行标志x到哪里去了呢? 系统是这样规定的, 假如本来在该位上有x, 则这些特别标志 (suid, sgid, sticky) 显示为小写字母 (s, s, t). 否则, 显示为大写字母 (S, S, T) 。

设置目录的粘滞位可以采用chmod 1777 file或者chmod o+t file

取消设置可以采用chmod o-t file

 

 

2015-05-07 16:46:33 hshl1214 阅读数 3865
  • 实验 5:路由器密码恢复【此课时有资料下载】

    本课程从零开始系统性的演示了CCNA的实验操作,并且在实验操作的同时讲解CCNA对应的理论知识点,同时又不局限于大纲的要求,有些工作中比较重要的运用,比如三层交换机、HSRP、IPV6、MSTP等,即使超出大纲范围,也会...

    918人学习 晁海江
    免费试看

http://www.it165.net/os/html/201403/7460.html


进程访问文件时的权限匹配机制:进程的发起者,作为进程的属主;而进程属主所属的基本组作为进程的属组;

进程在确定对文件的访问权限的时候,首先会去查看进程的属主和文件的属主是否一样,若一样,则运用该文件属主的权限,否则则检查进程的属主所属的组(用户可属于多个组),是否有其中之一与文件的属组匹配,若有,则运用该文件属组的权限,否则,则运用其他权限。

默认情况下,在Linux系统中,我们创建的目录的权限是755,文件的权限是644,想必大家都知道这是umask的功劳。出于文件系统安全性的考虑,umask的默认权限掩码是0022。当然,我们也可通过变量赋值的方式设置自己的默认权限掩码,不过一般我们没必要这样做。

创建目录的默认权限=777-022=755;创建目录的默认权限=666-022=644

此时,我想大家一定想知道,为啥我之前说umask默认权限掩码是0022,怎么在运算的时候,却写的是022,是吧?别着急,马上为您揭晓答案

因为(从左往右数)第一个0表示的是特殊权限位,我们通常所说的多指:suid,sgid,sticky

这三种特殊权限位的作用,应用场景,及使用方法我会在下面为大家详细描述

 

1.set位权限(suid,sgid)

set位权限有两部分组成:suid和sgid,分别对应可执行行文件属主和属组的身份

suid位权限的表现形式:s或S 也可用数字4表示

x: s -: S 若该文件之前,用户已有可执行权限,那么设置了suid位权限后,将在该文件属主的可执行权限位上,显示为s;

否则显示为S

sgid位权限的表现形式:s或S 也可用数字2表示

x: s -: S 若该文件之前,属组已有可执行权限,那么设置了sgid位权限后,将在该文件属组的可执行权限位上,显示为s;

否则显示为S

作用:设置完set权限后,任何用户在执行此可执行文件的过程中,将获得该文件属主、属组的身份。

suid权限位的设定:chmod u+s File ... 或chmod 4nnn filename...

sgid权限位的设定:chmod g+s File ... 或chmod 2nnn filename...

其中nnn:分别表示属主属组其他用户对该文件的权限

权限及对应的数值表示方法: r:4;w:2;x:1

注:一般来说,我们对能可执行文件设置suid和sgid权限,但考虑到特殊权限在工作中的实际意义,我将在有意义的应用环境中为大家讲解。

 

实例演示:

应用场景:使普通用户有权限执行一些特殊的程序或脚本,进而完成日常的工作任务,因此,我们通常使用suid对可执行文件,设置权限。下面的例子仅用于展示suid的作用

(1)创建测试文件

1.[root@Liu ~]# cp /bin/cat /tmp/
2.[root@Liu ~]# cp /etc/fstab /tmp/
3.[root@Liu ~]# chmod og= /tmp/fstab
4.[root@Liu ~]# ll /tmp/fstab
5.-rw------- 1 root root 921 Mar 12 00:18 /tmp/fstab
6.[root@Liu ~]# ll /tmp/cat
7.-rwxr-xr-x 1 root root 48568 Mar 12 00:18 /tmp/cat

(2)添加用户hadoop

1.[root@Liu ~]# useradd hadoop

(3)并切换至用户hadoop

1.[root@Liu ~]# su - hadoop

注:su username和su - username的区别

(4)执行/tmp/cat命令,看是否能查看/tmp/fstab文件中的内容

1.[hadoop@Liu ~]$ /tmp/cat/tmp/fstab
2./tmp/cat: /tmp/fstab: Permission denied

很明显,权限拒绝,即hadoop无权查看/tmp/fstab文件中的内容

 

眼见为实,现在,我将为/tmp/cat命令设置suid权限,让您一睹suid的风采...

(5)退出hadoop用户,并以root身份为/tmp/cat设置suid权限

1.[hadoop@Liu ~]$exit
2.logout
3.[root@Liu ~]# chmod u+s /tmp/cat

(6)此时,我们再切换至hadoop用户,执行/tmp/cat命令,看会出现啥样的效果

01.[root@Liu ~]# su - hadoop
02.[hadoop@Liu ~]$ /tmp/cat/tmp/fstab
03.#
04.# /etc/fstab
05.# Created by anaconda on Wed Feb 12 16:34:52 2014
06.#
07.# Accessible filesystems, by reference, are maintained under '/dev/disk'
08.# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
09.#
10./dev/mapper/vg0-root    /                       ext4    defaults        1 1
11.UUID=5d7ceb50-e9cf-48f2-abe5-6da1b536143e /boot                   ext4    defaults        1 2
12./dev/mapper/vg0-usr     /usr                    ext4    defaults        1 2
13./dev/mapper/vg0-var     /var                    ext4    defaults        1 2
14./dev/mapper/vg0-swap    swap                    swap    defaults        0 0
15.tmpfs                   /dev/shm                tmpfs   defaults        0 0
16.devpts                  /dev/pts                devpts  gid=5,mode=620  0 0
17.sysfs                   /sys                    sysfs   defaults        0 0
18.proc                    /proc                   proc    defaults        0 0

简直太神奇了,普通用户hadoop,居然可以查看属主和属组皆为root用户的文件了...

 

为帮助您加深记忆,那就让我们对比一下,设置suid权限位前后,可执行程序/tmp/cat的权限变化吧...

(1)退出hadoop用户,并切换至root用户

1.[hadoop@Liu ~]$exit
2.logout

(2)设置suid权限前,该可执行文件的权限:

1.[root@Liu ~]# ll /tmp/cat
2.-rwxr-xr-x 1 root root 48568 Mar 12 00:18 /tmp/cat

(3)设置suid权限后,该可执行文件的权限:

1.[root@Liu ~]# ll /tmp/cat
2.-rwsr-xr-x 1 root root 48568 Mar 12 00:18 /tmp/cat

正如之前我们的结论: 如果该文件之前已有可执行权限,那么设置了suid位权限后,将在该文件属主的可执行权限位上,显示为s

 

sgid:对目录设置

具有sgid的目录,用户在此目录下创建文件时,新建文件的属组不再是用户所属的基本组,而是目录的属组;

(1) 添加测试用的普通用户

1.[root@Liu ~]# useradd openstack
2.[root@Liu ~]# useradd docker

(2)创建测试目录,并查看目录当前的权限

1.[root@Liu ~]# mkdir /tmp/test
2.[root@Liu ~]# ll -d /tmp/test/
3.drwxr-xr-x 2 root root 4096 Mar 12 01:07 /tmp/test/

 

应用场景:假若某公司的A,B两个研发团队,彼此之间需要共享数据,且能修改删除非自己的创建的文件或程序。用户openstack和用户docker分别代表不同的研发团队,/tmp/test则是共享数据存放的目录,而此目录是由root用户创建的,两人默认都没有写的权限,我们如何才能让两个团队的人都可以向该目录存放数据呢?解决方法:先创建一个组,然后把这两个用户都添加到该组,然后再设置sgid权限即可初步实现我们的目标:让两个用户对目录有写权限

(3)新建一个组,名称为cloud

1.[root@Liu ~]# groupadd cloud

(4)添加用户openstack和docker到cloud组

1.[root@Liu ~]# gpasswd  -M openstack,docker cloud

(5)查看是否成功添加用户到组(id username 查看指定用户所属的组)

1.[root@Liu ~]# id openstack
2.uid=501(openstack) gid=501(openstack)groups=501(openstack),503(cloud)
3.[root@Liu ~]# id docker
4.uid=502(docker) gid=502(docker)groups=502(docker),503(cloud)

(6) 为/tmp/test目录的属组添加写(w)权限,并更改属组为cloud

1.[root@Liu ~]# chmod g+w /tmp/test/
2.[root@Liu ~]# chown .cloud /tmp/test/
3.[root@Liu ~]# ll -d /tmp/test/
4.drwxrwxr-x 2 root cloud 4096 Mar 12 01:07 /tmp/test/

扩展:chown修改文件或目录属组2法:chown .cloud /tmp/test/ 或chown :cloud /tmp/test/

理论上,属组cloud已对/tmp/test目录有写权限了,下面我们就对此进行测试...

 

分别以openstack和docker用户的身份登录到系统,在/tmp/test/目录下创建并查看自己的测试文件属主属组

01.[root@Liu ~]# su - openstack
02.[openstack@Liu ~]$cd /tmp/test/
03.[openstack@Liutest]$ touchopen.txt
04.[openstack@Liutest]$ ll open.txt
05.-rw-rw-r-- 1 openstack openstack 0 Mar 12 01:31open.txt
06.[root@Liu ~]# su - docker
07.[docker@Liu ~]$cd /tmp/test/
08.[docker@Liutest]$ touchdoc.txt
09.[docker@Liutest]$ ll doc.txt
10.-rw-rw-r-- 1 docker docker 0 Mar 12 01:32 doc.txt

A、B两个部门的人均可在/tmp/test/写入数据,并且可以修改非自己创建的文件。

 

对/tmp/test目录设置sgid权限,然后再分别以openstack和docker身份创建文件,查看文件属主属组有何变化

01.[root@Liu ~]# ll -d /tmp/test/
02.drwxrwxr-x 2 root cloud 4096 Mar 12 02:19 /tmp/test/
03.[root@Liu ~]# chmod g+s /tmp/test/
04.[root@Liu ~]# ll -d /tmp/test/
05.drwxrwsr-x 2 root cloud 4096 Mar 12 02:19 /tmp/test/
06.[docker@Liutest]$ touchdoc.txt
07.[openstack@Liutest]$ touchope1.txt
08.[openstack@Liutest]$ ll
09.total 0
10.-rw-rw-r-- 1 docker    cloud     0 Mar 12 02:47 doc.txt
11.-rw-rw-r-- 1 openstack cloud     0 Mar 12 02:22 ope1.txt
12.-rw-rw-r-- 1 openstack openstack 0 Mar 12 01:36open.txt

验证结论:设置完sgid权限后,新建文件的属主没有变化,而新建文件的属组都变成了/tmp/test/目录的属组

如果该文件之前已有可执行权限,那么设置了sgid位权限后,将在该文件属组的可执行权限位上,显示为s;

下面这个结论可自己测试下

如果该文件之前没有可执行权限,那么设置了sgid位权限后,将在该文件属组的可执行权限位上,显示为S;

 

思考:接上题,用户docker对/tmp/test目录有写权限,而对该目录下的较早创建的open.txt没有写权限,那用户docker能删除open.txt文件吗?

1.[docker@Liutest]$ rm-rf open.txt
2.[docker@Liutest]$ ll
3.total 0
4.-rw-rw-r-- 1 docker    cloud 0 Mar 12 02:47 doc.txt
5.-rw-rw-r-- 1 openstack cloud 0 Mar 12 02:22 ope1.txt

答案是可以删除。

结论:用户对文件的写权限,不是取决于用户对文件写的权限,而是取决于对写目录的权限

 

在对目录有写权限,但未设置sgid权限的情况下,测试用户是否可以删除属主和属组不是自己的文件

 

以root身份创建测试目录,并设置需要的权限

1.[root@Liu ~]# mkdir /tmp/dirtest
2.[root@Liu ~]# chown .cloud /tmp/dirtest/
3.[root@Liu ~]# chmod g+w /tmp/dirtest/
4.[root@Liu ~]# ll -d /tmp/dirtest/
5.drwxrwxr-x 2 root cloud 4096 Mar 12 02:55 /tmp/dirtest/

分别以openstack和docker身份创建测试文件

1.[docker@Liu dirtest]$touch doctest
2.[openstack@Liutest]$ touchdoc.txt
3.[docker@Liu dirtest]$ ll
4.total 0
5.-rw-rw-r-- 1 docker    docker    0 Mar 12 02:57 doctest
6.-rw-rw-r-- 1 openstack openstack 0 Mar 12 02:57 opentest

查看此时openstack和docker是否能删除属主属组不是自己的文件

1.[openstack@Liu dirtest]$rm -rf doctest
2.[docker@Liu dirtest]$rm -rf opentest
3.[openstack@Liu dirtest]$ ll
4.total 0

答案是可以的,因此用户对文件的写权限,不是取决于用户对文件写的权限,而是取决于对写目录的权限

 

2.粘滞位权限(sticky)

作用:设置粘滞位权限后,即便用户和对目录有写入权限,也不能删除该目录中其他用户的文件

应用场景:对于公共可写目录,用户可创建删除自己的文件,但是不能删除其他用户的文件

表现形式:sticky表示为文件其它用户执行权限位上的t或T:

x: t -: T

若之前在其它用户执行位已有执行权限,则显示为t,否则显示为T

使用,如chmod o+t filename ...

chmod o-t filename ...

数字1表示增加粘滞位权限;数字0表示取消粘滞位权限;

使用,如:chmod 1755 filename ...

 

实例演示:(以上一次操作为前提)

(1)对/tmp/dirtest/设置粘滞位权限

1.[root@Liu ~]# chmod o+t /tmp/dirtest/
2.[root@Liu ~]# ll -d /tmp/dirtest/
3.drwxrwxr-t 2 root cloud 4096 Mar 12 02:58 /tmp/dirtest/

 

(2)测试用户是否能删除非自己创建的文件

1.[docker@Liu dirtest]$touch docker.txt
2.[docker@Liu dirtest]$rm -rf openstack.txt
3.rm: cannot remove `openstack.txt': Operation not permitted
4.[openstack@Liu dirtest]$touch openstack.txt
5.[openstack@Liu dirtest]$rm -rf docker.txt
6.rm: cannot remove `docker.txt': Operation not permitted

答案是否定的。

这样的话,用户可以在此目录中随意创建文件和目录,但是不能删除非自己创建的文件或目录


所以,最终解决方案是:

1.[root@Liu ~]# useradd openstack
2.[root@Liu ~]# useradd docker
3.[root@Liu ~]# groupadd cloud
4.[root@Liu ~]# gpasswd  -M openstack,docker cloud
5.[root@Liu ~]# chmod g+w /tmp/test/
6.[root@Liu ~]# chown .cloud /tmp/test

7.[root@Liu ~]# chmod g+s /tmp/test/

8.[root@Liu ~]# chmod o+t /tmp/test/

这样,openstack和docker用户都可以git目录中创建文件,修改自己以及对方的文件,但是不能删除对方的文件。如果连对方的文件都不允许修改,只要chmod g-s /tmp/test即可。


2018-09-24 15:33:29 huaijiu123 阅读数 127
  • 实验 5:路由器密码恢复【此课时有资料下载】

    本课程从零开始系统性的演示了CCNA的实验操作,并且在实验操作的同时讲解CCNA对应的理论知识点,同时又不局限于大纲的要求,有些工作中比较重要的运用,比如三层交换机、HSRP、IPV6、MSTP等,即使超出大纲范围,也会...

    918人学习 晁海江
    免费试看

Linux下有两种用户:超级用户(root)、普通用户

  • 超级用户:可以在Linux系统下做任何事情,不受限制

  • 普通用户:在Linux下做有限的事情

  • 超级用户的命令提示符是“#”,普通用户的命令提示符是“¥”
    命令:su [用户名]
    功能:切换用户
    例:要从root用户切换到普通用户user,则使用su user。要从普通用户user切换到root用户则使用su root(root可以省略),此时系统会提示输入root用户的口令。
    Linux权限管理
    01. 文件访问者的分类(人)

  • 文件所有者: 文件属于谁

  • 文件所属组: 文件属于哪个用户组(组内成员)

  • 其他用户: 除了上边两类之外的用户

02. 文件访问权限的种类(事物属性)

文件的权限也有三类:

  • 可读权限:用户是否能够读取内容

  • 可写权限 :用户是否能够修改内容

  • 可执行权限:用户是否能够执行这个文件
    在这里插入图片描述
    r-- 只读
    rw- 可读可写
    — 无权限
    rwx 可读可写可执行
    03. 文件访问权限的相关设置
    1.chmod
    功能:设置文件的访问权限
    格式:chmod [参数] 权限 文件名
    说明:只有文件的拥有者和root才可以改变文件的权限
    chmod命令权限的格式

    1.用户标识符+/-=权限字符

    • +:向权限范围增加权限代号所表示的权限

    • -:向权限范围取消权限代号所表示的权限

    • =:向权限范围赋予权限代号所表示的权限
      用户符号:

      • u:拥有者
      • g:拥有者同组用
      • o:其它用户
      • a:所以用户
        例:
        在这里插入图片描述
        在这里插入图片描述
        在这里插入图片描述
        三位8进制数字
        例:
        在这里插入图片描述
        2.chown
        功能:修改用户的拥有者
        格式:chown [参数] 用户名 文件名
        3.chgrp
        功能:修改文件或目录的所属组
        格式:chgrp [参数] 用户组名 文件名
        常用选项:-R 递归修改文件或目录的所属组
        4.umask
        功能:显示/修改当前文件默认创建权限掩码
        文件权限=文件满权限(777)- 掩码
        格式:umask 权限值
        说明:超级用户默认掩码值为0022,普通用户默认为0002
        例:
        umask值是022—权限:755 rwxr-xr-x
        umask//查看
        在这里插入图片描述

粘滞位—权限位

首先粘滞位针对目录设置的,在设置了粘滞位的目录中可以创建文件,可以删除自己的文件,但不能删除别人的文件

在设粘滞位之前,我们应该先保证我们设粘滞位的目录是不是全权限(777),如果不是,我们先把它改成777权限,这样才能体现出粘滞位的作用,例:
在这里插入图片描述
现在将test权限改为777,我们就可以用badao这个用户删除Calm下的文件(目录)了。
在这里插入图片描述
在这里插入图片描述
这些都是为体现粘滞位的作用做的准备工作,当然如果真正要用到粘滞位是不会要做这些准备工作。
现在我们想让badao这个用户在test目录下不能删除Calm的文件(main就是Calm的),但可以在这个目录中创建和删除自己的文件,我们就需要用到粘滞位了,粘滞位如何设立呢?
chmod +t 文件名
在这里插入图片描述
我们现在切换到badao用户下再删除test目录下的main文件就会删除不了。
在这里插入图片描述
但在test目录下可以创建删除自己的文件,例:
在这里插入图片描述
取消粘滞位是:chmod -t 文件名
在这里插入图片描述

2018-01-22 13:38:21 zjx624bjh 阅读数 213
  • 实验 5:路由器密码恢复【此课时有资料下载】

    本课程从零开始系统性的演示了CCNA的实验操作,并且在实验操作的同时讲解CCNA对应的理论知识点,同时又不局限于大纲的要求,有些工作中比较重要的运用,比如三层交换机、HSRP、IPV6、MSTP等,即使超出大纲范围,也会...

    918人学习 晁海江
    免费试看

linux中文件权限与目录权限

文件或目录的访问权限分为只读,只写和可执行三种。

权限代号:
r (read):读权限,用数字4表示
w (write):写权限,用数字2表示
x(execute):执行权限,用数字1表示
- :删除权限,用数字0表示
s :特殊权限

这3种权限组成一组rwx分别对应3个安全级别,分别为对象的所属者,对象的所属组,系统其它用户
数字与字符对应关系如下:
r=4,w=2,x=1
若要rwx属性则4+2+1=7
若要rw-属性则4+2=6;
若要r-x属性则4+1=7。

这里写图片描述
chmod指令
在了解粘滞位之前我们先学习一下chmod这个指令。
chmod命令即用于改变linux系统文件或目录的访问权限。
1. 命令格式:
chmod [-cfvR] [–help] [–version] mode file
2. 必要参数:
-c 当发生改变时,报告处理信息
-f 错误信息不输出
-R 处理指定目录以及其子目录下的所有文件
-v 运行时显示详细处理信息
3,常见情况

 sudo chmod 600 ××× (只有所有者有读和写的权限) 
 sudo chmod 644 ××× (所有者有读和写的权限,组用户只读的权限)

sudo chmod 700 ××× (只有所有者有读和写以及执行的权限)
sudo chmod 666 ××× (每个人都有读和写的权限)
sudo chmod 777 ××× (每个人都有读和写以及执行的权限)

粘滞位
Linux下有一个用于存放临时文件的目录 /temp,每一个用户产生的临时文件都存放在 /temp目录下面,而我们今天的主角
粘滞位一般用于/tmp目录,以防止普通用户删除或移动其他用户的文件。
一个目录具有粘滞位,则在other的X位会表现为 t,或者T.大小写的区别在于,原来x位上有x权限,有了粘滞位则表现为t.否则,表现为T。
那到底什么是粘滞位呢?
举个类似的例子吧,我们学校的告白墙,A,B,C三个小伙子都去告白墙给我们的校花同学告白,A喜欢捣乱,为了防止A去删除B和C同学的告白词,所有就有了所谓的告白墙主D以维护B和C权益,A可以向墙主申请加密维护,加密后只有墙主和B或C可删除告白词(墙主D就像是我们的root用户,A 就像是普通用户,申请加密就类似于这里的设置粘滞位)
一个目录具有粘滞位,则在other的X位会表现为 t,或者T.大小写的区别在于,原来x位上有x权限,有了粘滞位则表现为t.否则,表现为T。
(1)查看/tmp权限可以发现确实存在一个t.
这里写图片描述
(2)用root身份新建一个目录名为file的目录,并用参数-m为它指定权限为777(可读,可写,可执行),在file目录下新建两个文件boyA,boyB.
因为other对该目录具有w权限,所以可以删除目录内容。
这里写图片描述
(3)切换至普通用户尝试去删除上步骤新建的两个文件,结果显示可以。
这里写图片描述
(4)回到root用户下给目录file加上(命令:chmod o+t .),查看目录发现other的权限为t,说明添加粘滞位成功。依旧在该目录下新建两个文件boyA,boyB.
这里写图片描述
(5)再次尝试删除那两个文件,结果显示不可以。事实证明粘滞位给其它用户带来安全限制。
这里写图片描述
(6)用root对该文件进行删除操作。结果发现,依旧可以正常删除。
这里写图片描述
总结
:即当一个目录被设置为”粘滞位”(用chmod a+t),则该目录下的文件只能由
一、超级管理员(root)删除或移动
二、该目录或文件的所有者删除 或移动
注意:
(1)虽然目录有了粘滞位,other用户不能对该目录的文件进行删除或者移动操作,但是other对该文件由w权限,还是可以进行修改文件内容的。
(2)粘滞位只对目录有效,对文件无效。