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)
上一篇 2016-08-04 14:39
下一篇 2016-08-04 14:40

相关推荐

  • N27_网络班第九周作业

    N27_网络班第九周作业 1、写一个脚本,判断当前系统上所有用户的shell是否为可登录shell(即用户的shell不是/sbin/nologin);分别这两类用户的个数;通过字符串比较来实现 #!/bin/bash loginuser=`grep -v ‘/sbin/nologin’ /etc/passwd | wc -l` nologin=`grep …

    2017-10-10
  • rpm实现LAMP

    rpm实现LAMP部署 LAMP概述 LAMP指的Linux(操作系统)、ApacheHTTP 服务器,MySQL(有时也指MariaDB,数据库软件) 和PHP(有时也是指Perl或Python) 的第一个字母,一般用来建立web应用平台。常用来搭建动态网站或者服务器的开源软件,本身都是各自独立的程序,但是因为常被放在一起使用,拥有了越来越高的兼容度,共同…

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

    1.描述计算机的组成及其功能。   计算机主要由运算器,控制器,存储器,输入设备,输出设备组成   运算器用来做计算,用来做二进制运算(加法运算)和逻辑运算   控制器用来控制计算机各部件之间的协调,例如运算器想做运算从哪里读入加数和被加数,寄存在哪里   存储器分为内存储器和外存储器,用来存放数据 内存储器用于存放计…

    Linux干货 2016-07-12
  • 第八周:网络基础知识和shell脚本练习

    1、请描述网桥、集线器、二层交换机、三层交换机、路由器的功能、使用场景与区别; 网桥:是连接两个局域网的基于MAC地址数据存储转发设备,工作于数据链路层 集线器:所有端口处于同一个广播域和冲突域中,带宽共享,工作于物理层 二层交换机:多端口网桥,一个端口一个冲突域,默认所有端口位于同一个广播域中,可以划分vlan,隔离广播域,带宽独享 三层交换机:具有路由功…

    Linux干货 2016-11-21
  • N22第七周作业

    1.创建一个10G的分区,并格式为ext4的文件系统;     (1)要求其block大小为2048,预留空间百分比为2,卷标为MYDATA,默认挂载属性包含acl; # fdisk /dev/sdb 欢迎使用 fdisk (util-linux 2.23.2)。 更改…

    Linux干货 2016-10-24
  • Bash Shell之数组简介

    Bash Shell之数组简介   一、数组基本概念   数组是内存中的存储空间,连续的多个存储单元;bash中只支持一维数组,支持稀疏格式 ,参数个数没有限制。 二、数组基本语法格式   1、声明一个数组          declare…

    Linux干货 2015-05-11