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權限

           待續

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章