首页 > 代码库 > linux用户权限管理

linux用户权限管理

在Linux中,权限的分配和管理是一件很重要的事。因为这对系统中文件的管理非常重要。如何分配好权限是其中的关键。

权限分为两种使用权(MODE)和所有权(OWNERSHIP)

首先我来看一下MODE的构成:

r:可读

w:可写

x:executable可执行

对目录来说:

拥有r权限时可以使用ls命令来查看目录

拥有w权限时可修改此目录下的文件名或文件列表,即可删除文件

拥有x权限时可以使用ls -l命令来获取其中的文件的详细信息(这是基本权限,没有                 时什么都做不了)

对文件来说:

拥有r权限时可以查看或获取文件中存放的数据

拥有w权限时可以修改文件中存放的数据,(要想删除文件的话,对该文件所在的目录                 有w权限才行)

拥有x权限时可将此文件发起运行为进程

下面举个例子来具体分析一下:

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

     -:代表是文件(d的话代表目录)  

             rw-:属主权限

     r--:属组权限

     r--:其他用户权限(其写权限不要随便给)

当为目录或文件设置权限时,除了用rwx表示外,也可以用下面的方法表示,其对应关系如下:

 ---   000   0

 --x   001   1 

 -w-   010   2

 -wx   011   3

 r--   100   4

 r-x   101   5

 rw-   110   6

 rwx   111   7

例如想要设置rwx权限时,可以写777

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


修改或设置目录文件的权限的命令有: chmod、 chown、 chgrp、 

chmod命令:

    用法:  chmod - change file mode bits

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

               MODE:符号权限标识法

               其中:

              u,g,o,a 表示所有权

             +,-,= 标识授权方式

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

        举几个例子:

       chmod u+r,g-w,0=x file

       chmod ug+r file

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

       chmod +x file 默认为全部用户增加x权限


       注意:文件的执行权限对Linux文件系统来说,是非常重要的安全标识。

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

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

     如果给的权限位不完整,文件系统会自动补足(左侧补零)。

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

chmod --reference=a b (都是当前目录下的a,b文件)

           -R(递归式修改):将目标目录中的文件及子目录和子目录下的所有文件统一设置为指定的                              权限标识

chown命令:                  

          chown:属主与属组都可修改   

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

chown OWNER FILE

chown :GROUP FILE

chown OWNER: FILE

chown OWNER:GROUP FILE

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

     

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

                            注意:修改OWERSHIP操作只有root用户可以完成

chgrp命令:     

      chgrp(使用较少):只能修改文件的属性

       格式:chgrp [OPTION]... GROUP FILE...

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

            

除此之外,还有install命令也相关

install命令:安装:复制文件,

-o:set ownership (super-user only)

-g:set group ownership, instead of process‘ current group(super-user only)

注意:install命令不能复制目录,如果是目录的话,则install依次复制其中的所有                       非目录文件到目标位置。 


OWNERSHIP:资源的所有权

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

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

其他用户:未曾掌控资源的那些用户 other、o

全部用户:a


特殊权限:SUID,SGID,STICKY            

其表示如下:

        ---   000   0

        --t   001   1

        -s-   002   2

        -st   003   3

        s--   004   4

        s-t   005   5

        ss-   006   6

        sst   007   7



我们知道,在Linux中默认情况下,用户发起一个进程,该进程的属主是其发起者,

但当文件有了SUID权限时情况就不一样了。(注意:SUID只对文件有效)

    当用户发起执行一个进程时,该程序文件如果拥有suid权限的话,那么此程序发起的进程的属主为     该程序文件的属主,而不是其发起者。

用法格式:chmod u+|-s FILE....

同样的SGID权限,(注意:SGID只对目录有效)

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

STICKY(粘性的):粘滞位

如果某个目录中,有超过一个用户拥有写权限,则这多个用户也拥有写权限。


文件的特殊属性:相关命令lsattr、chattr

lsattr (查看)   

           lsattr [ -RVadv ] [ files...  ]


        chattr(修改)(a和i主要)

      chattr - change file attributes on a Linux file system

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

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

          整个chattr最核心的设置就是mode部分

          [aAbBcCdDijsStTu]都是所需要的属性


   a(常用):设置这个属性的文件,其内容不能更改或删除,只能以追加的方式向文件中写入数据,多数的服务器日志类文件会设置为此属性

          

   A:文件的访问时间戳,IO瓶颈,When a file with the ‘A‘ attribute set is accessed, its atime record is not  modified. This avoids a certain amount of disk I/O for laptop systems.


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


   C(使用少):设置文件是否开启“写时复制”属性


   d:设置文件在使用dump


     D(最好别设置):设置文件在文件系统中的异步写操作


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


    s:设置文件的保密性删除。


     u:跟s属性相反,


     -R:递归地设置指定目录


     例:chattr +i FILE


为文件赋予额外的权限机制:FACL    (centos7后才逐渐成熟,5之前没有)

   与FACL有关命令:

        getfacl:

                  getfacl - get file access control lists                

                  getfacl [-aceEsRLPtpndvh] file ...

                  getfacl [-aceEsRLPtpndvh] -


setfacl:

          setfacl - set file access control lists       

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

                  setfacl --restore=file


为用户赋予额外权限:                                      

setfacl -m u:username:mode file...

为组赋予额外权限:

setfacl -m g:groupname:mode file...


撤销为用户赋予额外权限:

setfacl -x u:username file...

撤销为组赋予额外权限:

setfacl -x g:groupname file...




本文出自 “潔己以进” 博客,请务必保留此出处http://liangqunzhi.blog.51cto.com/10674929/1914174

linux用户权限管理