Linux系统中文件权限(特殊权限)的相关认识

  1. 文件属性

    在linux系统中一切皆文件,所有的数据都是以文件的形式存储在系统中,我们可以通过ls命令可以查看文件的相关属性,如下图:

            

blob.png

 

                     图1-1 文件权限及属性


   从上图中,可以看到该boot文件权限是r-xr-xr-x(d表示该文件是一个目录),在linux系统中对文件进行操作的一共三类对象,分别是:

    owner 所属主: 即创建该文件的人     u

    group 所属组: 即文件所属群组      g  

    other 其他人: 即属主和属组之外的人  o

每个文件对每类用户都定义了三种权限:

   Readable:可读    文件-可以获取文件的内容   目录-可以使用ls命令查看文件列表     r

   Writable:可写    文件-可以对文件进行修改   目录-可以在目录中创建和删除文件     w

   Excutable:可执行  文件-可以对文件执行操作   目录-可以ls查看文件列表,cd进入目录  x

           注:X表示只给目录x权限,不给文件x执行权限

              blob.png

                        图1-2  X权限

  

  八进制下权限的表现形式:

     blob.png

                        图1-3 八进制下的权限表现形式


2.文件权限及属性修改命令

  2.1 chmod 

     改变文件权限

blob.png

                    图2-1 chmod帮助手册

  从帮助文档中,可以获取chmod命令的相关信息,它语法格式有如下几种:

    chmod [OPTION]…MODE[,MODE]…FILE…

    chmod [OPTION]…OCTAL-MODE FILE…

    chmod [OPTION]…–REFERENCE=RFILE FILE… 

       -R 递归修改权限

  修改一类用户的所有权限:

    u=  g=  o=  ug=  a=  u= ,g=

  修改某类用户一位或多位权限

    u+  g+  o+  u-  g-  o-  a+  a-

   blob.png 

            图2-2 chmod命令使用

  2.2 chown

    修改文件的属主和属组 blob.png

                         图2-3 chown帮助手册

   chown改变文件所有者和所属组,语法格式:

      chown [option]…[owner][:[group]] file… 

      chown [option]…reference=rfile file…

         -R:递归

    blob.png

             图2-4 chown命令使用


3.文件系统上的特殊权限

  a.任何一个可执行程序文件能不能执行为进程,是由它的发起者是否有执行权限决定的

  b.启动为进程后,进程的属组为发起者,属组为发起者所属的组

  c.进程访问文件时的权限,取决于进程的发起者

  3.1 SUID

    blob.png

                 图3-1 SUID文件

    SUID只对二进制文件可执行程序有效

   SUID设置在目录上是无效的

    chmod u+s file…

    chmod u-s file…


  3.2 SGID

   可执行文件上的SGID权限

    启动为进程后,其进程的属主为原程序的属组

    blob.png

                  图3-2 SGID文件  

    chmod g+s file…

    chmod g-d file…

    

    目录上的SGID权限

    默认情况下,用户创建文件,其属组为此用户所属的主组,一旦某目录被设置为SGID,则对此目录有些的权限的用户在此目录创建的文件所属的组为此目录的属组

    通常用于创建一个协作目录 

    blob.png

             图3-3 SGID目录

    chmod g+s dir…

   chmod g-s dir… 


  3.3 Sticky位

   当一个用户对一个目录具有写权限时,就可以对目录中的任何文件执行删除操作,而不需要看该文件的权限。即便该文件由他人创建,并且有严格的读写权限,只要该文件是创建在该用户拥有读写权限的目录下,那么该用户就可以直接对文件进行删除操作,这样就不利于数据的安全性,完整性…所以,就有了sticky位,它的作用就是用来约束用户的行为,在有sticky位的目录中创建文件,那么只有文件所有者和root才能对文件进行删除操作,即使,他人有对该目录的读写执行权限,也无法对非本人创建的文件进行删除。

         blob.png

                       图3-4 sticky位目录及操作

   从上图也可看出,普通用户想要删除不是由他创建的目录时,显示不允许的操作,即使该用户对该目录有读写执行的权限。

   sticky位设置在文件上无意义

    chmod o+t dir…

    chmod o-t dir…

 

  3.4 SUID SGID STICKY

     SUID:user 占据属主的执行权限位  4

       s:属主具有x权限

       S:属主没有x权限

     SGID:group 占据数组的执行权限位  2

       s:group拥有x权限

       S:group没有x权限

     STICKY:other 占据other的执行权限位 1

       t:other拥有x权限

       T:other没有执行权限

  3.5 文件特定属性设定

     chattr

blob.png

                      图3-5 chattr帮助手册

    chattr:改变linux文件系统中文件属性

    +i:当为某个文件设置了i属性,那么该文件就不能被删除或者重命名,也不能创建链接,也不能将任何数据写入到该文件中,只有超级管理员和文件的拥有者才能设置或清除这个属性

    +a:当给某个文件设定了a属性,那就表明只能往该文件写入数据,其他操作均不能实现

    lsattr:可以查看文件的这些特定属性

blob.png

            图3-6 chattr命令操作

4.访问控制列表ACL

  ACL: Access Control List 访问控制列表(实现灵活的权限管理)

  作用: 除了文件的所有者,所属组和其他人,可以对更多的用户进行权限设置

  ACL生效顺序:所有者 自定义用户 自定义组 其他人

 4.1 setfacl

blob.png

                    图4-1 setfacl帮助手册

   setfacl:设置文件访问控制权限列表

      setfacl -m u:user:rwx file|directory   对指定用户设置rwx的acl权限

      setfacl -m g:group:rwx fiel|directory  对指定的组设置rwx的acl权限

      setfacl -Rm g:group:rwX directory     对指定的组设置rwx递归目录的acl权限     

      setfacl -x u:user file | directory     删除指定用户的acl权限

      setfacl -X facl.acl directory        删除指定的acl权限文件

      setfacl -k dir                  删除默认的acl权限

      setfacl -b file                 清除所有的acl权限 

 

 4.2 getfacl

blob.png

                      图4-2 getfacl帮助手册

   getfacl:获取文件访问控制列表信息

      getfacl file | directory   查看文件或目录的acl权限  

    blob.png

                 图4-3 getfacl命令使用

   备份和恢复ACL

      getfacl -R /tmp/dir1 > acl.txt

      setfacl -R -b /tmp/dir1

      setfacl -R –set-file=acl.txt /tmp/dir1 

      getfacl -R /tmp/dir1

5.umask和acl mask的联系与区别

  5.1 umask

    当我们登录系统后创建文件总是有一个默认的权限,普通用户创建文件默认权限664,创建文件夹默认权限是775,root用户默认创建文件权限644,创建的目录默认权限755.这是由umask来限定的,它的参数设置在/etc/profile中,我们可以在/etc/bashrc或家目录下的.bashrc进行自定义的设置。 

  blob.png

             图5-1 umask参数      

root用户的umask码为022,普通用户的umask码为002.

blob.png

          图5-2 root用户

blob.png

          图5-3 普通用户

   

  5.2 acl mask

     ACL中的mask只影响出所有者和other的之外的人和组的最大权限,mask需要与用户的权限进行逻辑与运算后,才能变成有效的权限。也就是用户或组的设置必须存在于mask限定的范围内才会生效,即当给予了用户或者组rwx的权限,但是mask码为rw,那么x的权限就不会生效,有限的就只是rw的权限,有限权限就是不能大于mask码的权限,可以小于或者等于mask码的权限。

    blob.png

                    图5-4 ACL中的mask码

    ACL中的mask码规定了用户或组的默认最大权限,超过这个权限的权限会变成无效的权限,即便给了额外的权限,该权限也无法进行操作,文件中的umask码则是用文件666(目录777)-umask,与umask位相同的权限就会被屏蔽掉,从而得出最终的权限。

原创文章,作者:Stupid_L,如若转载,请注明出处:http://www.178linux.com/28085

(0)
Stupid_LStupid_L
上一篇 2016-08-04 14:39
下一篇 2016-08-04 14:39

相关推荐

  • redis主/从配置及基于sentinel的故障转移

     一、NoSQL基础概念: ACID:原子性、一致性、隔离性、持久性;特性:数据量大、数据变化非常大(数据增长化、流量分布变化、数据间耦合结构变化)、数据源很多; CAP、BASECAP C:多个数据节点的的数据一致;A:用户发出请求后的有限时间范围内返回结果;P:network partition,网络发生分区后,服务是否依可用;CAP理论:一个分布式系统…

    Linux干货 2017-12-18
  • Linux基础指令(2)

    4.文件的元数据信息有哪些,分别表示什么含义,如何查看?如何修改文件的时间戳信息?  元数据定义:      数据(Metadata),又称中介数据、中继数据,为描述 数据的数据(data about data),主要是描述数据属性(property)的信息,用来支持如…

    Linux干货 2016-11-09
  • Mariadb之SELECT语法练习

    一 、导入hellodb.sql生成数据库后实现以下操作     # mysql -uroot -h172.16.23.23 -pcento.123 < hellodb.sql     mysql>&nbsp…

    Linux干货 2016-12-17
  • 马哥教育网络班21期+第11周课程练习

    1、详细描述一次加密通讯的过程,结合图示最佳。 单向加密:只能加密,不能解密,提取数据指纹(特征码),来保证数据的完整性,如上图的第二步,单向加密的协议有MD5,SHA等 非对称加密:公钥和私钥成对出现,私钥必须本机器保存,用公钥加密的数据,只能使用与之配对儿的私钥解密;反之亦然,数字签名是私钥加密特征码,如上图的第三步;实现对称秘钥交换,如上图第五步 对称…

    Linux干货 2016-08-15
  • 27期第一周学习小结

    第一周 1. 描述计算机的组成及其功能。 计算机主要组成部分以下五种:运算器,控制器,存储器,输入设备,输出设备。 运算器的功能是对数据进行算术运算与逻辑运算,就是对数据进行加工处理。 控制器的功能是调度二进制程序,数据,内存寻址,以及协调计算机输入设备和输出设备等各计算机部件之间的正常工作。 存储器的功能是存储二进制指令和数据。存储器是编址存储单元。 输入…

    Linux干货 2017-07-15
  • 我在马哥的学习生涯开始

    我的人生工作目标:年薪百万不是梦!

    Linux干货 2016-10-28