?Linux基礎知識之文件權限

實驗環境:

   Linux系統版本為CentOS6.8_x86_64版本,以root用戶和sjsir用戶遠程用xshell連接系統,進行試驗。

文本目錄:

   1.文件的屬性

   2.文件權限相關的命令

   3.umask 新建文件和目錄的默認權限

   4.Linux文件系統上的特殊權限:SUID SGID SBIT

   5.文件隱藏屬性 chattr lsattr

   6.訪問控制列表ACL

博文問題:

   1.為什么要學習文件權限?

   答:linux的最基本的哲學思想指出,linux一切皆文件,我們學好文件權限管理之后,可以明白linux管理員的權限之大,可以利用chatt命令去鎖定一個文件,防止管理員去誤操作或者誤刪除等失誤操作造成系統的損壞或者重要的配置文件被刪除;學習文件權限,我們可以更加靈活的賦予除root和其他人的權限,更加方便的對單用戶或者用戶組的設置,更加便捷的讓用戶或用戶組去操作和編輯文件;對文件設置SUID、SGID、SBIT特殊權限,更加方便對用戶放權,讓用戶方便編輯和操作系統上可以讓用戶操作的配置文件。

  2.隱藏屬性的重要性?

   答:隱藏屬性對于系統有很大的幫助,尤其是對于系統安全上面,chattr可能只對ext X的文件系統有效。主要作用是避免文件被用戶(包括超級用戶root),誤刪除或者進行誤操作,通常用于保護一些重要的文件。

  3.什么是ACL?

   ACL是Access Control List的縮寫,主要的目的是提供傳統的owner、group、others的read、write、execute權限之外的

具體權限設置。ACL可以針對單一用戶、單一文件或目錄來進行r、w、x的權限設置,對于需要特殊權限的使用狀況非常有幫助。

文件權限分析:

  1. 文件的屬性: 

   -rw-r–r–  2        root    root    26195    Dec 17 11:21   install.log

權限     硬鏈接數   所有者  所屬組  文件大小 文件創建時間    文件名

權限第一項的介紹:

    -:這是一個普通文件

    d:這是一個目錄

    l:這是一個軟連接或硬鏈接

    b:設備文件,塊設備

    c:設備文件,字符設備

    s:套接字文件

    p:管道文件

文件或目錄的權限:

    文件:

       r:可讀,可以使用類似cat等命令查看文件內容

       w:可寫,可以編輯或者刪除此文件

       x:可執行,exacutable,可以在命令提示符下面當做命令提交給內核運行

    目錄:

       r:可以對此目錄執行ls列出目錄內部的所有文件

       w:可以對此目錄創建文件

          擴展:w對于目錄的含義是是否有更改該目錄結構列表的權限

           目錄中有w權限,就可以做以下的操作:

              新建新的文件與目錄;

              刪除已經存在的文件與目錄(無論該文件的權限為何);

              將已經存在的目錄或文件進行重命名;

              轉移該目錄內的文件、目錄的位置;

        x:可以使用cd切換進此目錄,可以使用ls -l查看內部文件的詳細信息

rwx對應二進制的轉換

    0   000    — :無任何權限

    1   001    –x :有執行權限但無讀和寫權限

    2   010    -w- :有寫權限但無讀和執行權限

    3   011    -wx : 有寫和執行權限但無讀權限

    4   100    r– :有讀權限但無寫和執行權限

    5   101    r-x :有讀和執行權限但無寫權限

    6   110    rw- :有讀和寫權限但無執行權限

    7   111    rwx :擁有讀寫執行權限

2.文件權限相關的命令:

    a.修改文件的權限:

       chmod命令:

          -R 遞歸修改權限

       ①直接修改文件的權限

          chmod MODE file

          MODE使用的是八進制的數字

          chmod 777 test

         blob.png

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

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

          =后面跟的權限直接是rwx 

          chmod u=rx test

         blob.png

          chmod g=r,o=w test

         blob.png

       ③修改一類用戶某位或某些位的權限

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

          加減號右面跟著的是r,w,x

          chmod a+x test

         blob.png

       ④參考FILE1文件的權限將FILE2的權限設定為相同的權限。

         –reference=/path/to/somefile file

         chmod –reference=test hello

         blob.png

b.修改文件的屬主

    chown (該命令只有root管理員才能使用此命令)

       -R 遞歸修改 修改目錄及其內部文件的屬主

       ①直接修改文件的屬主,不會修改文件的屬組

        chown USERNAME file1

        chown sjsir hello

        blob.png

        改變目錄的屬主時,不會改變目錄下的文件的屬主

       ②同時修改文件的屬主和數組

        chown USERNAME:GRPNAME file

        chown hadoop:sjsir hello

        blob.png

       chown USERNAME.GRPNAME file

       chown sjsir.hadoop hello

        blob.png

       ③參考FILE1文件的屬主修改FILE2文件的屬主

           (這種方法也可修改文件的屬主和屬組)

          –reference=/path/to/somefile file 

          chown –reference=test hello

        blob.png

c.修改文件的屬組

    chgrp:改變文件屬組(只有管理員root才有改權限)

       -R 遞歸修改 修改目錄及其內部文件的屬組

       ①直接修改文件的屬組

       chgrp GRPNAME file1將文件的屬組改為前面的用戶

       chgrp sjsir hello

       blob.png

       ②參考FILE1文件的屬組修改FILE2文件的屬組

       –reference=/path/to/somefile file

        chgrp –reference=test hello

       blob.png

3.umask 新建文件和目錄的默認權限:

    umask值:可以用來保留在創建文件權限,就是制定“目前用戶在新建文件或目錄的時候的權限默認值”

    新建FILE 權限: 666-umask,如果所得結果某位存在執行(奇數)權限,則將其權限+1

    新建DIR 權限: 777-umask

       umask:查看當前用戶的umask值

        非特權用戶umask是002

        blob.png

        root 的umask是022

        blob.png

        umask #:  設定當前用戶的umask值(默認設置僅對當前進程有效,若想徹底改變,需將文件寫到配置文件中) 例:umask 002

        blob.png        

       umask –S  模式方式顯示 

       root用戶顯示的是:

       u=rwx,g=rx,o=rx

       blob.png

       umask –p  輸出可被調用

       全局設置:/etc/bashrc  用戶設置:~/.bashrc

4.Linux文件系統上的特殊權限:SUID SGID SBIT

    a.前提:進程有屬主和屬組;文件有屬主和屬組

        ①任何一個可執行程序文件能不能啟動為進程:取決發起者對程序文件是否擁有執行權限

        ②啟動為進程之后,其進程的屬主為發起者;進程的屬組為發起者所屬的組

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

            進程的發起者,同文件的屬主:則應用文件屬主權限

            進程的發起者,屬于文件屬組;則應用文件屬組權限

            應用文件“其它”權限

    b.SUID

     任何一個可執行程序文件能不能啟動為進程:取決發起者對程序文件是否擁有執行權限

        啟動為進程之后,其進程的屬主為原程序文件的屬主

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

        SUID 設置在目錄上無意義

        權限設定:

           chmod u+s FILE…

           chmod u+s hello

           blob.png

           chmod u-s FILE…

           chmod u-s hello

           blob.png

    c.SGID

     ①對于文件的設置

     任何一個可執行程序文件能不能啟動為進程:取決發起者對程序文件是否擁有執行權限

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

        權限設定:

           chmod g+s FILE…

           chmod g+s hello

           blob.png

           chmod g-s FILE…

           chmod g-s hello

           blob.png

     ②目錄上的SGID 權限

        默認情況下,用戶創建文件時,其屬組為此用戶所屬的主組

        一旦某目錄被設定了SGID ,則對此目錄有寫權限的用戶在此目錄中創建的文件所屬的組為此目錄的屬組

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

          權限設定:

          chmod g+s DIR…

          chmod g+s testdir

          blob.png

          chmod g-s DIR…

          chmod g-s testdir

          blob.png

    d.Sticky位

        具有寫權限的目錄通常用戶可以刪除該目錄中的任何文件,無論該文件的權限或擁有權

        在目錄設置Sticky  位,只有文件的所有者或root可以刪除該文件

        sticky  設置在文件上無意義

        權限設定:

          chmod o+t DIR…

          blob.png

          chmod o-t DIR…

          blob.png

    e.權限位映射

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

            s: 屬主擁有x 權限

            S:屬主沒有x 權限

        SGID: group, 占據屬組的執行權限位

            s: group 擁有x 權限

            S:group 沒有x 權限

        Sticky: other, 占據other 的執行權限位

            t: other 擁有x 權限

            T:other 沒有x

5.文件隱藏屬性 chattr lsattr:

        隱藏屬性對于系統有很大的幫助,尤其是對于系統安全上面,chattr可能只對ext X的文件系統有效。

        主要作用是避免文件被用戶(包括超級用戶root),誤刪除或者進行誤操作,通常用于保護一些重要的文件。

    a.鎖定與解鎖文件的讀時間(atime)

        chattr +A test.txt 鎖定

        chatter +A nihao

        blob.png

        chattr -A test.txt 解鎖

        chattr -A nihao

        blob.png

    b.令文件不能被刪除、改名、修改內容,包括超級用戶(root用戶)。使用i選項對于系統安全性有很大的幫助,只有root用戶可以擁有此權限。

        chattr +i test.txt 添加

        chattr +i nihao

       blob.png

        chattr -i test.txt 解除

        chattr -i nihao

       blob.png

    c.文件只能增加數據,可以查看,但不能刪除文件也不能修改數據。

        chattr +a test.txt 增加屬性

       chattr +a nihao

       blob.png

        chattr -a test.txt 刪除屬性

       chattr -a nihao

       blob.png

    d.查看文件的attr的標記:

        lsattr test.txt 

6.訪問控制列表ACL:

    a.什么是ACL?

    ACL是Access Control List的縮寫,主要的目的是提供傳統的owner、group、others的read、write、execute權限之外的具體權限設置。ACL可以針對單一用戶、單一文件或目錄來進行r、w、x的權限設置,對于需要特殊權限的使用狀況非常有幫助。

    b.具體的ACL分類:

       用戶(user):針對用戶來設置權限

       用戶組(group):針對用戶組來設置權限

       默認屬性(mask):在該目錄下新建文件或目錄的時候設置新數據的默認權限

   c.關于acl的一個小說明:

        ①acl是除了文件的所有者所屬組和其他人,對于額外的用戶設定的權限;

        ②CentOS7.0默認創建的xfs和ext4文件系統有ACL功能;

        ③CentOS7.X之前版本,認手工創建的ext4文件系統無ACL功能。

            需手動增加:

                tune2fs –o acl /dev/sdb1

                mount –o acl /dev/sdb1 /mnt

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

        ⑤acl支持的分區的類型是ext4和xfs分區類型(對于windows支持的分區類型fat,ntfs,acl暫不支持)

         fat分區中文件的權限是由磁盤元數據的分區決定的,fat分區對于linux系統來說是沒有權限的,所謂的linux系統現在fat分區的文件有權限的分類是linux系統為文件虛擬出來的權限,不符合linux系統的文件權限,真實權限不存在。

   d.設置某個目錄或文件的ACL:

        ①單文件單次設置和刪除acl權限:

        添加權限:

          setfacl -m u:username:(rwx/7) file  (設置名為username對于file的權限)

        取消權限:

          setfacl -x u:username file    (刪除username對于file的權限)

          setfacl -b file         (擦除所有的ACL權限)

        ②批量設置和刪除多用戶對于文件的ACL權限

          vi/nano setfacl.txt    將需要添加的信息以下面的格式寫入到文件中

            u:username1:(rwx/7)

            u:username2:(rwx/7)

            ……

            g:groupname1:(r–/4)

            g:groupname2:(rw-/6)   

            ……   

         setfacl -M setfacl.txt file | Dir 將setfacl.txt中的內容寫入到file|Dir中

         vi delfacl.txt      將想要取消的信息寫入到下面的文件中

            u:username1      

            u:username2

            ….

            g:groupname1

            ….

         setfacl -X delfacl.txt file | Dir 將delfacl.txt中的內容取消對于file|dir的設置

       ③重新設置文件的ACl權限:

         setfacl –set u::rw,u:sjsir:r,g::rw,o::- file

       ④對于文件夾設定權限:

         setfacl -m u:username:(rwx/7) dir

         然后,root用戶創建file1,對于file1的文件屬性來說,無acl權限

         setfacl -d u:username2:(rw-/6) dir

         然后,用戶創建file2 文件,對file2有剛剛設定用戶的權限,但用戶的權限依然小于mask的權限

         解釋:默認文件權限,當使用-d命令設置后,僅對設置后,再創建新文件擁有設定的acl權限,對之前用戶創建舊文件無效

       ⑤對-d設置的文件權限無效

          setfacl -k dir

    e.查看文件或目錄的acl權限

          getfacl file | Dir

    f.acl中 mask的說明:

    mask值相當于除了超級用戶(root)和其他人(others)之外的所有人的設定權限的最高權限的鎖定位,這些用戶包括組對于文件或目錄來說只能比ACl權限中的mask值得權限小,但無法超過mask的值給定的權限,若用戶原來的權限為rwx,mask值給定的為r-x,則在用戶真實對于文件或者目錄的權限為r-x,而非原本的rwx;用戶原來的權限為r–,mask給定的權限仍然為r-x,則用戶真實的權限為r–,以原本的權限為主。

     得出:

         用戶(組)權限>mask給定的值,則用戶的最終權限以mask權限為真實權限執行;

         用戶(組)權限<mask給定的值,則用戶的最終權限以原來用戶的權限為真實權限執行

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

(1)
sjsirsjsir
上一篇 2016-08-05
下一篇 2016-08-05

相關推薦

  • Tomcat相關知識整理

    初識Servlet SUN公司制定了一系列Web應用與Web服務器進行協作的標準Java接口,統稱為Java Servlet API,還對Web服務器發布及運行Web應用的一些細節做了規約。SUN公司把這一系列標準Java接口和規約統稱為Servlet規范。Servlet就是Web服務器與Web應用進行協作的標準接口。 Servlet規范把能夠發布和運行Ja…

    Linux干貨 2016-12-05
  • varnish動靜分離

    http://blog.51cto.com/sonlich/2060785

    2018-01-14
  • 源碼編譯安裝http

    為什么需要編譯安裝軟件?   1、軟件在編譯期間需要配置:比如需要指定安裝路徑,定制模塊等功能;   2、軟件需要統一安裝路徑:在編譯安裝時可以方便指定這些路徑;   3、需要最新的版本:對于某些軟件來說可能需要最新的版本。 編譯前的準備工作:     1、安裝開發工具:make、gcc等…

    Linux干貨 2016-08-24
  • 關于大型網站技術演進的思考(七):存儲的瓶頸(7)

    原文出處: 夏天的森林  本文開篇提個問題給大家,關系數據庫的瓶頸有哪些?我想有些朋友看到這個問題肯定會說出自己平時開發中碰到了一個跟數據庫有關的什么什么問題,然后如何解決的等等,這樣的答案沒問題,但是卻沒有代表性,如果出現了一個新的存儲瓶頸問題,你在那個場景的處理經驗可以套用在這個新問題上嗎?這個真的很難說。 其實不管什么樣的問題場景最…

    2015-03-11
  • Bonding多塊網卡綁定同一IP地址

    Bonding多塊網卡綁定同一IP地址 就是將多塊網卡綁定同一IP地址對外提供服務,可以實現高可用或者負載均衡。當然,直接給兩塊網卡設置同一IP地址是不可能的。通過bonding,虛擬一塊網卡對外提供連接,物理網卡的被修改為相同的MAC地址。 一共有七種模式這里提供三種常用的:   一、Mode 0 (balance-rr)  輪轉( Round-robin…

    Linux干貨 2016-09-07
  • Tomcat的安裝和簡介

    第一部分: ????在linux系統平臺上安裝Tomcat的總結 ????1.到http://jakarta.apache.org/site/binindex.cgi(去下載一個tomcat版本各種版本都有),zip或者tar.bz2的>壓縮包,將其解壓到/usr/local/的目錄下面. ????2.配置環境變量:為了在以后系統啟動后就配置好Tomc…

    2017-11-05

評論列表(1條)

  • 馬哥教育
    馬哥教育 2016-08-07 23:14

    文章整體思路清晰,對命令的語法和常見選項有了詳細的總結與實際操作。可以嘗試著有一些適當的縮進。

欧美性久久久久