Linux--权限管理

权限的基本概念

谈到权限管理,我们需要知道一下两点:

用户分为普通用户和超级用户(管理员)。

Linux下对于一个目录或者文件来说,操作对象也分为三种:owner: 属主, u  ;group: 属组, g    ;other: 其他 ,o。

接下来解释四种权限类型,分别是:

1.读权限,r,用数字表示是4。

2.写权限,w,用数字表示是2。

3.执行权限,x,用数字表示是1。

4.特殊权限。

然而对于目录和文件,r、w、x代表着不同的权限。

文件:

            r: 可使用文件查看类工具获取其内容

            w: 可修改其内容

            x: 可以把此文件提请内核启动为一个进程

目录:

            r: 可以使用ls查看此目录中文件列表

            w: 可在此目录中创建文件,也可删除此目录中的文件

            x: 可以使用ls -l查看此目录中文件列表,可以cd进入此目录

            X:只给目录x权限,不给文件x权限

现在让我们先看看基本三种权限的不同搭配情况,这需要结合操作对象以及被操作对象类型来说明。

首先在这里,前提为同一个文件或者目录,我们使用 ll 命令查看 /etc/ 下文件的权限。

会发现文件权限的格式如下:

[root@mmmm bin]# ll /etc/
total 2048
drwxr-xr-x.  3 root root   4096 Jul 24 17:02 abrt
drwxr-xr-x.  4 root root   4096 Jul 24 17:07 acpi
-rw-r--r--.  1 root root     44 Jul 24 09:40 adjtime
-rw-r--r--.  1 root root   1512 Jan 12  2010 aliases

由于对象分为三种,而权限则是三种,排列组合则是九种。某权限位上 — 则表示无该权限。

从代码行可以看出,一共是十位,除后九位为权限位以外,第一位则是表示文件类型,在这里不做讨论。

举例来说,abrt文件的权限位为:rwxr-xr-x,数字读为755。

解释便是owner拥有读写执行权限,组成员为读、执行权限,其他人权限为读、执行。

所以根据操作对象即当前系统用户的类型不同,当前用户是否为超级用户(root)、是否为属主、

是否为属组中的成员或者为其他人,操作权限都是不一样的。

其次,我们需要了解权限之于文件和目录是不同的。

在这里,前提是同个用户,对目录以及文件的权限的不同:
对文件:
               当仅r权限作用在文件上的时候,表示可以读取该文件的内容 cat less
               当仅w权限作用在文件上的时候,表示可以修改该文件的内容 gedit vi vim nano > >>
               当仅x权限作用在文件上的时候,无作用
               当rw权限同时作用在文件上的时候,表示可以读写该文件
               当rx权限同时作用在文件上的时候,表示可以读并能执行该文件
               当wx权限同时作用在文件上的时候,权限等同于仅w权限
               当rwx权限同时作用在文件上时,表示可以读写并执行该文件
对目录:
               当仅r权限作用在目录上的时候,可以短列出目录的内容(子文件,子目录名)
               当仅w权限作用在目录上的时候,无作用
               当仅x权限作用在目录上的时候,可以进入该目录
               当rw同时作用在目录上的时候,权限等同于仅r
               当rx同时作用在目录上的时候,表示可以长列出,可以进入
               当wx同时作用在目录上的时候,可以创建及删除文件或目录。
               当rwx同时作用在目录上的时候,可以列出可以创建删除可以进入。

基本权限管理

介绍过权限的基本概念之后,我们需要学习了解权限的使用方法。其实需要用到权限的地方很多,比如后期学习脚本,最基本需要给脚本执行权限,

又或者说,有一些文件我们可以设置、修改权限来保护文件安全或者对文件进行一些修改完善等等。

权限设置

这里我们需要学习一个新命令----chmod

         基本格式: chmod [选项]... 权限 文件名

         选项:  -R: 表示修改权限

由于上面解释过,权限分为字符模式、数字模式,相对的。chmod使用时也可分为两种情况。

字符模式:
                      ugo +-= rwx :表示给属主、属组、其他人加上或者减去读写执行权限
                      a=ugo 或=左边省略 :表示给所有人用户 左边的权限
                     当 =右边省略表示---,即什么权限都没有

    数字模式
                       1:x
                       2:w
                       3:wx
                       4:r
                       5:rx
                       6:rw
                       7:rwx

特殊权限

1.SUID、SGID、STICKY    

   suid:当对于一个可执行的二进制文件作用了suid之后,任何人在执行该文件时,临时拥有其所有人的权限
             使用的方法: chmod u+s 

    sgid则要分情况:使用方法:    chmod g+s
           1.当对于一个可执行的二进制文件作用了sgid之后,任何人在执行该文件时,临时拥有其所有组的权限
             
           2.当对于一个目录作用了sgid权限之后,任何人在该目录下所创建的文件的所属组,均与该目录的所属组相同

    sticky: 对于一个目录作用了sticky权限,该目录下的文件仅其所属人和目录的所属人及root可以删除。

                具有写权限的目录通常用户可以删除该目录中的任何文件,无论该文件的权 限或拥有权

                sticky 设置在文件上无意义

同理地,特殊权限表示也分为两种:

  (1)  suid:4
               sgid:2
               sticky:1

SUID SGID STICKY

        000 0    :无特殊权限

        001 1     :sticky

        010 2     :sgid

        011 3     :sgid + sticky

        100 4     :suid

        101 5     :suid + sticky

        110 6     :suid + sgid

        111 7     :suid +sgid +sticky

chmod 4777 /tmp/a.txt :表示suid + rwx

(2) SUID: user,占据属主的执行权限位

                       s: 属主拥有x权限

                       S:属主没有x权限

            SGID: group,占据属组的执行权限位

                       s: group拥有x权限

                       S:group没有x权限

           Sticky: other,占据other的执行权限位

                        t: other拥有x权限

                        T:other没有x权限

但是有些时候我们会发现即使时root用户,仍然有些文件或目录不能进行操作,这里就涉及到新命令:

chattr以及lsattr这两个命令是用来查看和改变文件、目录属性的,与chmod这个命令相比,chmod只是改变文件的读写、执行权限,

更底层的属性控制是由chattr来改变的。

相关用法:

chattr :对指定文件进行属性修改
         +a 表示不能删除,不能覆盖,可以追加
         +i 表示不能删除,不能覆盖,不能追加
lsattr 查看attr权限


2.acl 

    acl可以实现灵活的权限管理 ,除了文件的所有者,所属组和其它人,可以对更多的用户设置权限

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


(1)开启acl的方式
     centos7 默认支持acl
     centos6及之前,操作系统安装时所创建的文件系统默认支持acl,而操作安装之后使用mkfs格式化的文件系统默认未开启acl,需要手工开启,方法如下:
     1.tune2fs -o acl /dev/sda5
     2.mount -o acl /dev/sda5 /app 需要挂载之后再开启

(2)设置ACL
         setfacl -m u:liubei:rwx testdir

        使用文件设置acl
             1.cat acl.txt
                 u:liubei:rwx
                 g:shuguo:---
                 g:weiguo:r-x
             2.setfacl -M acl.txt testdir/

 
(3)设置默认权限
         setfacl -Rm u:liubei:rwx testdir/    设置当前的权限
         setfacl -Rm d:u:liubei:rwx testdir/  设置未来文件的权限


(4)删除权限
         [root@centos6(nanyibo) app]# setfacl -x u:liubei testdir/
         [root@centos6(nanyibo) app]# setfacl -x u:guanyu testdir/
         [root@centos6(nanyibo) app]# setfacl -x g:weiguo testdir/

(5)删除所有权限,清空acl属性
            setfacl -b testdir

      批量删除acl权限
           1.cat aclrm.txt
                u:liubei
                g:shuguo
                g:weiguo
          2.setfacl -X acl.txt testdir/


        删除默认权限
             setfacl -k testdir

       删除所有权限,清空acl结构
             setfacl -b testdir

3.umask

mask 为权限的阀值,即权限上限。

ACL文件上的group权限是mask 值(自定义用户,自定义组,拥有组的最大 权限),而非传统的组权限。

mask只影响除所有者和other的之外的人和组的最大权限 Mask需要与用户的权限进行逻辑与运算后,

才能变成有限的 权限(Effective  Permission) 用户或组的设置必须存在于mask权限设定范围内才会生效

例如:setfacl -m mask::rx file --set选项会把原有的ACL项都删除,用新的替代,需要注 意的是一定要包含UGO的设置,不能象-m一样只是添加ACL 就可以的。

猜你喜欢

转载自www.cnblogs.com/0715mmmm/p/9383364.html