Linux权限管理详解

        Linux中权限的种类较多,可以划分为用户对文件的权限、用户对系统命令的权限和文件特殊权限三类。下面详细阐述。

        阐述设置权限的意义和作用

        一、用户对文件的权限

    用户对文件的权限是指用户拥有的对文件的增删改查操作。又可以细分为基本权限(ugo)、umask权限和ACL权限。

        1、基本权限

            1)、权限位

            Linux文件的权限为一共是10位。第一位标示文件类型,之后每三位标示所有者、所属组和其他人的权限。

        wKiom1Y4ouPyq9WuAAClnkO-7gM256.jpg

        所有者、所属组和其他人都有rwx(读写执行)权限,分别用数字4、2、1表示。

        第一位:表示文件类型。常见的文件类型有

                 -   普通文本文件

                  d  目录

                  l   软链接

                  b  块设备文件

                  c  字符设备文件

                  s  套接字

                  p  管道

        之后九位每三位为一组分别是所有者、所属组、其他人的权限

        至于权限位最后的点,有人认为是结束符,有人认为是SELinux的安全标签。在这里不做区分。


             2)、权限含义

             权限限制了用户对文件的操作,但是对于目录和文件,权限的含义是不同的。

             ①权限对文件的含义

             注明:因为在Linux中一切皆文件,而此处的文件不再是广义上的文件,就是指基本的包含了数据内容的文件。

              ☆ r:表示能读取文件的数据

              ☆ w:表示能编辑修改文件中数据内容

              ☆ x:表示文件可执行。无论该文件能否正确执行。

             ②权限对目录的含义

             对于目录而言,目录中的"数据内容"就是文件名。

               ☆ r:能够查询目录中包含了哪些文件

               ☆ w:编辑和删除目录中的文件

               ☆ x:表示可以进入到目录


            3)、相关命令

              ★ chown -- 既可以修改所属组也可以修改所有者

                  chown user1:user aa  % 将文件aa的所有者,所属组同时修改为user1

              ★ chgrp -- 修改文件所属组

                  chgrp user1 aa        % 将文件aa的所属组修改为user1

              ★ chmod -- 修改文件权限

                  chmod 755 aa          % 将文件aa的权限设置为755(rwxr-xr-x)


        2、umask权限

         1)、umask是设置文件默认权限的命令。用法如下:

             [root@localhost /]# umask -S        % rwx形式显示新建文件的缺省权限   

                 [root@localhost /]# umask 022      %设置文件或目录的默认缺省权限

        注意:此处的修改都是临时生效的,关机重启之后就会失效,若想永久生效,需要修改配置文件/etc/profile,文件中有关umask的部分剪切如下:

        wKioL1Y4uOXjab0tAABt8t7kWaA339.jpg

        文件内容是:如果用户的UID大于199,并且UID的组名与用户名相同,那么默认权限是002;否则是022。通俗讲就是普通用户的umask权限是002,root用户的umask权限是022。因为默认root用户的UID是0.(002与022的含义下面讲)

              2)、权限设置

                合理的权限设置是保证系统安全的重要手段。对于文件来说,执行权限是最高权限,因为有的病毒,木马就是可执行文件,若是直接赋予执行权限,后果不堪设想;对于目录来说则没有限制。所以文件的默认权限最高设置为666,目录的默认权限最高设置为777。

                系统中新建文件或目录的权限是拿最高权限与umask值相减得到的。所以默认文件和目录的权限整理如下: 


    文件     目录
    root     644     755
    普通用户     664        775

        另外在权限设置时,ugo的权限应该是递减的,不允许其他人的权限大于所有者的权限;像一些111,751,654等权限都是不合理的,合理的权限除了满足ugo权限缩小的原则外,只能是0、5、7的结合。

  

        3、ACL权限

           1)、ACL权限的含义和作用

            ACL权限的出现是满足用户对文件身份不足的情况的。当需要限定某一个用户对文件拥有不同于ugo的权限,就考虑加ACL权限。用户只对添加了ACL权限的文件生效,对于其他文件,仍是按照ugo的方式执行。

           2)、ACL权限设置相关命令

            ☆ 查看ACL   

                [root@localhost ~]# getfacl 文件名

            ☆ 设定ACL   

  [root@localhost ~]# setfacl 选项 文件名

选项: 

-m 设定ACL权限

-x  删除指定的ACL权限

-b  删除所有的ACL权限

-d  设定默认ACL权限

-k  删除默认ACL权限

-R  递归设定ACL权限

        例:

          setfacl -m u:user1:rx  aa            % 对用户user1在文件aa上设置ACL权限值为读和执行权限

                    setfacl -m u:user1:rx  -R /perm  % 对用户user1在目录perm上递归创建ACL权限值为读和执行

                    setfacl -x u:user1 aa                  % 删除用户user1对文件aa的ACL权限

                    setfacl -b aa                              % 删除文件aa上所有的ACL权限 

                    setfacl -m d:user1:rx /perm        % 对用户user1在目录perm上创建默认ACL权限

              注:递归ACL权限指的是对目录和目录中文件拥有指定的相同权限;默认ACL权限指的是用户对目录中新建的文件或目录执行指定权限

              wKiom1Y4x3LCvLPYAADXVOC_Als055.jpg

              对文件创建了ACL权限后,文件权限位最后变成了+,如上图所示。


    二、用户对系统命令的权限

         用户对系统命令的权限主要介绍sudo。sudo是授予普通用户部分管理员功能的命令,经过授权后,普通用户可以执行管理员指定的命令。sudo用法如下:

          执行命令visudo打开sudo的配置文件:

          ALL      ALL=(ALL)ALL

          用户名 被管理的主机地址 =(用户身份) 授权命令 

          例:

          授权普通用户user1可以重启服务器

          ......

          user1 ALL=/bin/shutdown -r now 

          ......

          登录到普通用户user1,执行

          [user1@localhost ~]$ sudo shutdown -r now


    三、文件特殊权限(SetUID 、SetGID、SetBIT)

          文件特殊权限由三种:SetUID、SetGID和SBIT分别用数字4、2、1表示,若是算上基本权限,权限位一共有四位。

          1、SetUID

                赋予条件:

            ☆可执行的文件;

            ☆命令执行者在执行程序时获得文件属主的身份;

            ☆用户身份改变只在执行过程有效

               设置与取消SetUID:

                        chmod 4755 /bin/cat  或 chmod u+s /bin/cat   % 设置SetUID权限

                        查看cat命令

                        此处有图SUID

                        可以看到加上SUID权限后,命令属组权限的x变成了s

                        chmod u-s /bin/cat 或   chmod 755  /bin/cat    % 取消SetUID权限

          2、SetGID

               赋予条件:

                       ☆可执行的文件

                       ☆命令执行者在执行过程中变成程序的属组

                       ☆用户身份改变只在执行过程有效

              设置与取消SetGID:

                       chmod 2755 文件名 或 chmod g+s 文件名    % 设置SetGID权限

                       chmod 755 文件名  或  chmod g-s  文件名    % 取消SetGID权限

         3、SBIT

               SBIT也叫做粘着位,只能对目录有效;普通用户对目录拥有w和x权限;赋予了粘着位之后,普通用户即使有写权限,也不能删除目录中文件,普通用户只能删除自己建立的文件。但是设置粘着位必须把目录的权限设置为777,但是这样做违反了权限的赋予原则,权限设置带来的安全隐患要大于利处。

               设置与取消SBIT:

                       chmod 1777 目录名  或 chmod o+t 目录名     % 设置SBIT

                       chmod 777   目录名  或 chmod o-t  目录名     % 取消SBIT

              注意:无论是SetUID、SetGID还是SBIT都不建议使用,手工赋予文件或目录特殊权限,一旦出现服务器问题时,很难想到是文件或目录权限的问题,另外设置文件特殊权限存在一定的安全隐患。


   四、文件系统属性(chattr)

          通过chattr可以直接给目录或权限设置属性,命令各如下:

          #chattr [+-=][选项] 文件或目录名

+: 增加权限

-: 删除权限

=: 等于某权限

    选项:  

             i:i属性

    对文件不允许对文件进行删除、改名,也不能添加和修改数据;

    对目录,只能修改目录下文件的数据,但不允许建立和删除文件。

   aa属性

    对文件,能增加数据,但是不能删除也不能修改数据;

    对目录,允许在目录中建立和修改文件,但是不允许删除

      e:e属性

        linux系统的大多数文件默认的属性。表示该文件是利用ext文件系统进行存储,而且不能使用chattr -e命令取消e属性。

 查看文件系统属性

[root@localhost]#lsattr 选项 文件或目录名%查看文件或目录的属性

     选项:

                -a--显示所有文件和目录

                -d--显示目录属性

   

    五、SELinux权限

           待续

你可能感兴趣的:(Linux权限,文件属性,特殊权限)