Linux系統中文件權限(特殊權限)的相關認識

  1. 文件屬性

    在linux系統中一切皆文件,所有的數據都是以文件的形式存儲在系統中,我們可以通過ls命令可以查看文件的相關屬性,如下圖:

            

blob.png

 

                     圖1-1 文件權限及屬性


   從上圖中,可以看到該boot文件權限是r-xr-xr-x(d表示該文件是一個目錄),在linux系統中對文件進行操作的一共三類對象,分別是:

    owner 所屬主: 即創建該文件的人     u

    group 所屬組: 即文件所屬群組      g  

    other 其他人: 即屬主和屬組之外的人  o

每個文件對每類用戶都定義了三種權限:

   Readable:可讀    文件-可以獲取文件的內容   目錄-可以使用ls命令查看文件列表     r

   Writable:可寫    文件-可以對文件進行修改   目錄-可以在目錄中創建和刪除文件     w

   Excutable:可執行  文件-可以對文件執行操作   目錄-可以ls查看文件列表,cd進入目錄  x

           注:X表示只給目錄x權限,不給文件x執行權限

              blob.png

                        圖1-2  X權限

  

  八進制下權限的表現形式:

     blob.png

                        圖1-3 八進制下的權限表現形式


2.文件權限及屬性修改命令

  2.1 chmod 

     改變文件權限

blob.png

                    圖2-1 chmod幫助手冊

  從幫助文檔中,可以獲取chmod命令的相關信息,它語法格式有如下幾種:

    chmod [OPTION]…MODE[,MODE]…FILE…

    chmod [OPTION]…OCTAL-MODE FILE…

    chmod [OPTION]…–REFERENCE=RFILE FILE… 

       -R 遞歸修改權限

  修改一類用戶的所有權限:

    u=  g=  o=  ug=  a=  u= ,g=

  修改某類用戶一位或多位權限

    u+  g+  o+  u-  g-  o-  a+  a-

   blob.png 

            圖2-2 chmod命令使用

  2.2 chown

    修改文件的屬主和屬組 blob.png

                         圖2-3 chown幫助手冊

   chown改變文件所有者和所屬組,語法格式:

      chown [option]…[owner][:[group]] file… 

      chown [option]…reference=rfile file…

         -R:遞歸

    blob.png

             圖2-4 chown命令使用


3.文件系統上的特殊權限

  a.任何一個可執行程序文件能不能執行為進程,是由它的發起者是否有執行權限決定的

  b.啟動為進程后,進程的屬組為發起者,屬組為發起者所屬的組

  c.進程訪問文件時的權限,取決于進程的發起者

  3.1 SUID

    blob.png

                 圖3-1 SUID文件

    SUID只對二進制文件可執行程序有效

   SUID設置在目錄上是無效的

    chmod u+s file…

    chmod u-s file…


  3.2 SGID

   可執行文件上的SGID權限

    啟動為進程后,其進程的屬主為原程序的屬組

    blob.png

                  圖3-2 SGID文件  

    chmod g+s file…

    chmod g-d file…

    

    目錄上的SGID權限

    默認情況下,用戶創建文件,其屬組為此用戶所屬的主組,一旦某目錄被設置為SGID,則對此目錄有些的權限的用戶在此目錄創建的文件所屬的組為此目錄的屬組

    通常用于創建一個協作目錄 

    blob.png

             圖3-3 SGID目錄

    chmod g+s dir…

   chmod g-s dir… 


  3.3 Sticky位

   當一個用戶對一個目錄具有寫權限時,就可以對目錄中的任何文件執行刪除操作,而不需要看該文件的權限。即便該文件由他人創建,并且有嚴格的讀寫權限,只要該文件是創建在該用戶擁有讀寫權限的目錄下,那么該用戶就可以直接對文件進行刪除操作,這樣就不利于數據的安全性,完整性…所以,就有了sticky位,它的作用就是用來約束用戶的行為,在有sticky位的目錄中創建文件,那么只有文件所有者和root才能對文件進行刪除操作,即使,他人有對該目錄的讀寫執行權限,也無法對非本人創建的文件進行刪除。

         blob.png

                       圖3-4 sticky位目錄及操作

   從上圖也可看出,普通用戶想要刪除不是由他創建的目錄時,顯示不允許的操作,即使該用戶對該目錄有讀寫執行的權限。

   sticky位設置在文件上無意義

    chmod o+t dir…

    chmod o-t dir…

 

  3.4 SUID SGID STICKY

     SUID:user 占據屬主的執行權限位  4

       s:屬主具有x權限

       S:屬主沒有x權限

     SGID:group 占據數組的執行權限位  2

       s:group擁有x權限

       S:group沒有x權限

     STICKY:other 占據other的執行權限位 1

       t:other擁有x權限

       T:other沒有執行權限

  3.5 文件特定屬性設定

     chattr

blob.png

                      圖3-5 chattr幫助手冊

    chattr:改變linux文件系統中文件屬性

    +i:當為某個文件設置了i屬性,那么該文件就不能被刪除或者重命名,也不能創建鏈接,也不能將任何數據寫入到該文件中,只有超級管理員和文件的擁有者才能設置或清除這個屬性

    +a:當給某個文件設定了a屬性,那就表明只能往該文件寫入數據,其他操作均不能實現

    lsattr:可以查看文件的這些特定屬性

blob.png

            圖3-6 chattr命令操作

4.訪問控制列表ACL

  ACL: Access Control List 訪問控制列表(實現靈活的權限管理)

  作用: 除了文件的所有者,所屬組和其他人,可以對更多的用戶進行權限設置

  ACL生效順序:所有者 自定義用戶 自定義組 其他人

 4.1 setfacl

blob.png

                    圖4-1 setfacl幫助手冊

   setfacl:設置文件訪問控制權限列表

      setfacl -m u:user:rwx file|directory   對指定用戶設置rwx的acl權限

      setfacl -m g:group:rwx fiel|directory  對指定的組設置rwx的acl權限

      setfacl -Rm g:group:rwX directory     對指定的組設置rwx遞歸目錄的acl權限     

      setfacl -x u:user file | directory     刪除指定用戶的acl權限

      setfacl -X facl.acl directory        刪除指定的acl權限文件

      setfacl -k dir                  刪除默認的acl權限

      setfacl -b file                 清除所有的acl權限 

 

 4.2 getfacl

blob.png

                      圖4-2 getfacl幫助手冊

   getfacl:獲取文件訪問控制列表信息

      getfacl file | directory   查看文件或目錄的acl權限  

    blob.png

                 圖4-3 getfacl命令使用

   備份和恢復ACL

      getfacl -R /tmp/dir1 > acl.txt

      setfacl -R -b /tmp/dir1

      setfacl -R –set-file=acl.txt /tmp/dir1 

      getfacl -R /tmp/dir1

5.umask和acl mask的聯系與區別

  5.1 umask

    當我們登錄系統后創建文件總是有一個默認的權限,普通用戶創建文件默認權限664,創建文件夾默認權限是775,root用戶默認創建文件權限644,創建的目錄默認權限755.這是由umask來限定的,它的參數設置在/etc/profile中,我們可以在/etc/bashrc或家目錄下的.bashrc進行自定義的設置。 

  blob.png

             圖5-1 umask參數      

root用戶的umask碼為022,普通用戶的umask碼為002.

blob.png

          圖5-2 root用戶

blob.png

          圖5-3 普通用戶

   

  5.2 acl mask

     ACL中的mask只影響出所有者和other的之外的人和組的最大權限,mask需要與用戶的權限進行邏輯與運算后,才能變成有效的權限。也就是用戶或組的設置必須存在于mask限定的范圍內才會生效,即當給予了用戶或者組rwx的權限,但是mask碼為rw,那么x的權限就不會生效,有限的就只是rw的權限,有限權限就是不能大于mask碼的權限,可以小于或者等于mask碼的權限。

    blob.png

                    圖5-4 ACL中的mask碼

    ACL中的mask碼規定了用戶或組的默認最大權限,超過這個權限的權限會變成無效的權限,即便給了額外的權限,該權限也無法進行操作,文件中的umask碼則是用文件666(目錄777)-umask,與umask位相同的權限就會被屏蔽掉,從而得出最終的權限。

原創文章,作者:Stupid_L,如若轉載,請注明出處:http://www.www58058.com/28085

(0)
Stupid_LStupid_L
上一篇 2016-08-04
下一篇 2016-08-04

相關推薦

  • 關于文件權限管理了解和使用

                    文件權限管理   文件屬性格式              文件屬性操作 chown          設置文件的所有者…

    系統運維 2016-08-05
  • 第10天:程序包,腳本,sed

    http://note.youdao.com/yws/public/redirect/share?id=b9432a76ff1180b42e01f6eb7c9fc90e&type=false

    Linux干貨 2016-08-18
  • shell腳本參數練習

    1、寫一個腳本,判斷當前系統上所有用戶的shell是否為可登陸shell(即用戶的shell不是/sbin/nologin),分別這兩類用戶的個數;通過字符串比較來實現; !/bin/bash # login_user=0 nologin_user=0 for i in $(cat /etc/passwd | cut -d : -f 7);do if [ $…

    2017-09-17
  • 第六周博客作業

    請詳細總結vim編輯器的使用并完成以下練習題 1、復制/etc/rc.d/rc.sysinit文件至/tmp目錄,將/tmp/rc.sysinit文件中的以至少一個空白字符開頭的行的行首加#; cp /etc/rc.d/rc.sysinit /tmp vim /tmp/rc.sysinit :%s@^[[:space:]]\+[^[:space:]]@#&a…

    Linux干貨 2017-02-26
  • 用戶組和權限管理相關作業

    1創建testuser uid 1234,主組:bin,輔助組:root,ftp,shell:/bin/csh home:/testdir/testuser     [root@ali ~]# useradd -u 1234 -g bin -G root,ftp -s /bin/csh -d /testdir/test…

    Linux干貨 2016-08-02
  • N25期–第八周作業

    1、寫一個腳本,使用ping命令探測172.16.250.1-172.16.250.254之間的所有主機的在線狀態; 在線的主機使用綠色顯示; 不在線的主使用紅色顯示; #!/bin/bash declare -i i=1 hostping(){     if ping -W&n…

    Linux干貨 2017-02-27
欧美性久久久久