linux初学之——权限管理

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux初学之——权限管理相关的知识,希望对你有一定的参考价值。

     上篇已经提到用户和组的管理相关知识,我们已经学会了如何在Linux系统中创建了用户和组,并对用户和组的内容和属性做一些修改。但是我们知道Linux系统是多用户多任务的操作系统,多个合法用户可通过远程设备登录到系统中,为了防范有用户对系统资源做出恶意竞争或者做出一些危害系统安全的恶意操作,需要对用户的权限做出一些设置。本篇将主要介绍权限的管理相关内容。

   用户的权限管理主要包括四部分:普通权限; 特殊权限; 文件的特殊属性和FACL。

一、普通权限

   

1.进程安全上下文:

    ⑴ 判断进程的所有者是否为操作的文件的属主,如果是,就按属主的权限进行授权;

     如果不是,就转到⑵

    ⑵ 则判断进程的所有者是否为想要操作文件的属组中的成员,

     如果是,按照属组的权限使用,

     如果不是,转到⑶

    ⑶ 按照其他用户进行授权

2.权限构成:

   文件的权限是针对文件的属主,属组和其他用户对该文件操作的限制

 OWNERSHIP:所有权

      属主:资源掌控的某个特定用户; owner(user),u

      属组: 资源掌控的某些特定用户;  group,g

      其他用户:未曾掌控资源的用户;   other, o

      全部用户: all,a

 MODE(Permission), 通常有三个基本权限:

     r:readable:可读

     w:writable: 可写

     x:executable: 可执行

  这三个权限对文件和目录又有着不同的含义:

   对目录:

       r: 可以使用ls命令获得其中所有文件名的列表;ls -l命令来获取目录中文件的详细信息,不能使用cd命令进入其中,也不能在路径中引用该目录

       w: 可以修改此目录中文件名或文件名列表,即:可在此目录中创建、修改和删除文件名

       x;可以使用ls -l命令来获取其中文件的详细属性信息,也可以在路径中引用该目录,也可以 使用cd命令来进入其中;x权限是目录文件 的最基本权限,任何目录都必须向用户开放x权限,否则用户无法进行任何操作

     对文件:

       r: 可以查看或获取该文件存放的数据

       w: 可以修改文件中存放的的数据

       x: 可以将此文件发起运行为进程

 

 注意:文件的执行权限对Linux的文件系统来说是非常重要的安全标识 因为一旦文件具备执行权限,意        味文件可以被发起为进程 所以默认情况下文件都不具备执行权限

   

   例子:rw-r--r--:三个权限位,属主属组其他用户

         属主的权限: rw-

         属组的权限: r--

         其他用户的权限: r--


       权限标识三元组:

         ---  000  0

         --x  001  1

         -w-  010  2

         -wx  011  3

         r--  100  4

         r-x  101  5

         rw-  110  6

         rwx  111  7


      注意:只有某个文件的属主才能修改文件的使用权(root除外)

 权限的三种表达方式为:字符权限(rw-r--r--);8位二进制权限(110100100);十进制权限(644)

3.修改文件的使用权限:chmod, chown, chgrp, install

         chmod : change mode -  change file mode bits


          chmod [OPTION]... MODE[,MODE]... FILE...

            MODE: 符号权限标识法

            u,g,o,a: 标识所有权

            +,-,=:标识授权方式

              +: 在原有的权限基础上添加新的权限

              -: 在原有权限的基础上除去某些权限

              =:  不考虑原有权限,直接将权限设置为目标权限


            r,w,x: 表示具体权限内容

            例如:

                 chmod u+x,g-wx,o-x file

                 chmod ug-x file

                 chmod +x file 默认为a添加权限即给所有用户添加

                 chmod +w file  默认只为属主添加权限


          chmod [OPTION]... OCTAL-MODE FILE...

          如果使用八进制数字标识法的话,则每次必须给足所有的权限位;

          如果给的权限位不完整,文件系统会自动补足,将给定的权限放置在右侧,左侧使用0来补;


          chmod [OPTION]... --reference=RFILE FILE...


            chmod --reference=/PATH/TO/FILE

            chmod --reference=a b


           -R, --Recursive: 将目标目录中的文件及子目录和子目录中的所有文件统一设置为指定的权限标识


        chown: 可以修改文件的属主和属组

          change file owner and group

           chown [OPTION]... [OWNER][:[GROUP]] FILE...

             chown OWNER FILE

             chown  :GROUP FILE

             chown OWNER: FILE   将目标文件的属主改为OWNER,同时将属组修改为OWNER的基本组

             chown OWNER:GROUP FILE   将目标文件的属主和主组修改为OWER GROUP



           chown [OPTION]... --reference=RFILE FILE..

            -R, --Recursive: 将目标目录中的文件及子目录和子目录中的所有文件统一设置为指定的所有权


         修改OWNERSHIP操作 只有 超级用户可以完成;


       chgrp:  只能修改文件的属组

         chgrp GROUP FILE

         选项

           -R


    install 命令

      安装:复制文件; 为文件赋予执行权限

         install [OPTION]... [-T] SOURCE DEST   单源复制

         install [OPTION]... SOURCE... DIRECTORY  多

         install [OPTION]... -t DIRECTORY SOURCE...

         install [OPTION]... -d DIRECTORY...    创建目录

       选项

          -m, --mode=MODE   指定目标文件的权限,默认为755

          -o, --owner=OWNER   设定目标文件属主,仅root用户可用

          -g, --group=GROUP   设定目标文件属组,仅root用户可用


        注意:install命令不能复制目录,即其源不能为目录,如果其源为目录,则install会进入目录,依次复制目录文件中所有非目录文件到目标位置


     mktemp:

       一般,临时文件都会创建在/tmp或/var/tmp文件中,无需手动删除,系统会定期自动清理

       选项

           -d ,--directory: 创建一个临时目录

二 、特殊权限:

    SUID SGID STICKY

     默认情况下,用户发起一个进程,该进程的属主是发起者;也就是说该进程是以其发起者的身份来运行的

    SUID: 功能作用:用户发起一个 执行进程,改程序文件如果拥有SUID权限的话,那么该进程发起的进程其属主为该程序文件的属主,而不是其发起者;


     SUID权限所显示的位置:文件的属主权限中的执行权限位;如果属主本来就有执行权限,显示为s;否则,显示为S;

     管理文件的SUID权限: chomd u+|-s FILE


    SGID:   如果某个目录对于一些用户有写权限并且设置了SUGID,则所有对此目录有写权限的用户在创建新的文件或目录后,新文件的属组不再是创建用户的基本组,而是继承了该目录的属组;

      SGID显示的位置:文件的属组权限中的执行权限位;如果属组本来就有执行权限,显示为s,否则显示为S;

      STICKY: sticky(nianxingde ):粘滞位

      如果某个目录中,有超过一个用户可以有写的权限,则这多个用户都可以在该目录中随意创建、修改、和删除文件名


      STICKY的功能作用: 如果为上述的目录设置了STICKY权限,则每个用户仍旧能够创建和修改文件名,但每个用户只能删除属主为其自身的文件名


      STICKY权限的显示位置:在文件权限的其他用户执行权限位;如果原先就有执行权限则显示为t;否则,显示为T


       管理文件的STICKY权限:chomd o+|-t FILE


      suid  sgid  sticky

      ---   000    0

      --t   001    1

      -s-   010    2

      -st   011    3

      s--   100   4

      s-t   101    5

      ss-   110   6

      sst   111   7


      特殊权限的另一种修改方式:

        将特殊权限对应的八进制数字放置于普通权限八进制数字的前面即可


        例如:  chomd 1755 DIRECTORY...


  umask;  权限遮罩码,在创建文件或目录时默认的权限生成标准;

    root用户的默认遮罩码是“ 0022”可修改

       不考虑特殊权限位

       对于新创建的文件或目录,不遮挡属主的任何权限,遮住属组和其他用户的写权限

    普通用户的遮罩码: 0002,可修改


   理解遮罩码:

       将遮罩码的值变为二进制,凡是有一的位置,其权限在创建的时候就不设置


     默认情况下文件的遮罩码已经有了一个0111,在此基础上再次应用umask来遮罩权限


三 、 文件的特殊属性

   lsatter: 查看文件的特殊属性


    修改设置文件的特殊属性:

      chattr : change file attributes on a Linux file system

        chattr [ -RVf ] [ -v version ] [ mode ] files...

        mode: 会使用+-=的方式来设置

         整个chattr命令最关键的最核心的就是mode部分;

         [aAcCdDeijsStTu]都是所需要的属性


       +: 在原有属性设定基础上,添加新属性

       -: 在原有属性设置中移除指定的属性

       =:  不考虑原有的属性设置,直接将文件的属性更新为指定的属性内容


       a:  append, 设置这个属性的文件,其内容不能被更改和删除,只能以追加的方式向文件中写入数据;多数服务器日之泪文件会设置为此属性;

       A:atime:文件的访问时间戳;IO瓶颈,设置A属性,可以使得文件再被访问时不更改文件的访问时间戳,从而可以有效地防止IO瓶颈的发生;

       c: 设置文件是否自动压缩后在进行存储

       C: 设置文件是否开启“写时赋值”属性

       d:  设置文件在使用dump进行备份时,不会成为备份目标

       D: 设置文件在文件系统中的异步写操作,(最好不要使用)

       i:  设置文件不能被删除、修改、设定链接关系

       s:  设置文件的保密性删除,一旦设置s属性的文件被删除,其对应存储设备中的使用空间会被一并收回

       u:和s属性相反,如果这样的文件被删除,则存储于存储设备中的数据会被保留


        chattr +属性 FILE

       常用选项

         -R:递归的设置指定目录中的所有文件和子目录属性


四:FACL


 为文件赋予额外的权限机制: FACL: File Acess Contral List  文件访问控制列表

   文件的额外赋权机制:

     在原有的u,g,o权限之外 ,让普通用户能够控制权限赋予另外的用户和组的一种赋权机制

     一般在centos或RHEL7版本以后德发行版中才逐渐成熟

      与FACL有关的命令:

       getfacl: get file access control lists


         getfacl [-aceEsRLPtpndvh] file ...


         getfacl [-aceEsRLPtpndvh] -


       setfacl set file access control lists

         setfacl [-bkndRLPvh] [{-m|-x} acl_spec] [{-M|-X} acl_file] file ...

          acl_spec: acl_specification, 指定的访问控制列表

           u:USERNAME:MODE

           g:GROUPNAME:MODE

           MODE:一般使用符号权限标识法


         为用户赋予额外权限:setfacl -m u:USERNAME:MODE FILE

         为组赋予额外权限:   setfacl -m g:GROUPNAME:MODE


         撤销用户赋予的额外权限: setfacl -x u:USERNAME

         撤销组赋予的额外权限: setfacl -x g:GROUPNAME

         setfacl --restore=file


      注意: 如果设置了FACL之后再修改目标文件的使用权限,那么FACL中设置的条目就可能受到影响,导致与要求不符。因此,如果真的需要设置FACL,就要在已经确定的目标文件的使用权限以后再行设置



以上是关于linux初学之——权限管理的主要内容,如果未能解决你的问题,请参考以下文章

linux初学之——权限管理

linux初学之——权限管理

Linux初学之——用户和组的管理

Linux权限管理之基本权限

[Linux之权限管理⽤户组管理]

Linux系列教程(十六)——Linux权限管理之ACL权限