權限解析

一、文件權限

       用戶的創建的每個文件,都有自己特定的屬性信息,比如文件類型,文件的權限,文件的所有者和所屬組,以及文件的修改日期等屬性組成。

       文件的權限即是指文件本身賦予了用戶什么樣的權力,也就是說用戶能不能打開文件,能不能修改文件這些屬性都是由文件權限標記和賦予的。文件的權限一般包括讀、寫、執行三種權限。讀也就是用戶有讀文件的能力,八進制表示為4;寫表示用戶有修改文件的能力,八進制表示為2;執行權限對目錄而言是可以進入此目錄,對文件而言是可執行文件,八進制表示為1;權限解析

r(readable) w(writable) x(eXcuable) u(owner) g(group) o(other) a(all)
執行 所有者 所屬組 其他人(來賓) 所有人
4 2 1     

000 001 010 011 100 101 110 111
–x -w- -wx r– r-x rw- rwx
0 1 2 3 4 5 6 7
640:rw- r– —    7:— — rwx 755:rwx r-x r-x       0:— — —

        文件

                r: 可使用文件查看類工具獲取其內容
                w: 可修改其內容
                x: 可以把此文件提請內核啟動為一個進程
        目錄
                r: 可以使用ls 查看此目錄中文件列表
                w: 可在此目錄中創建文件,也可刪除此目錄中的文件
                x: 可以使用ls -l 查看此目錄中文件列表,可以cd 進入此目錄

                X:遞歸修改目錄執行權限時,只給所有的目錄x 權限,而不給文件x執行權限,但是如果文件中有任何一個人有執行權限,則文件將會全部加上執行權限

        目錄若只有讀寫權限,只能查看目錄文件列表,不能訪問文件和cd進目錄(查看,刪除),如果只有執行權限,可以cd進目錄,但是不能ls列出文件列表,可以執行目錄中的文件,執行是基礎去權限,若知道文件名,可以直接訪問目錄中的文件;寫權限,需配合x權限才能生效。

        當用戶需要訪問文件時,按照匹配順序依次匹配,如果普通用戶文件的所有者和所屬組其中一個有執行權限,-o沒有-x權限,盡管root用戶不屬于該文件所有者和所有組,root用戶依然可以借用-X執行權限。

        chmod 修改文件權限
                -R: 遞歸修改權限
            chmod [OPTION]… MODE[,MODE]… FILE…
                MODE:
                    修改一類用戶的所有權限:
                        u= g= o= ug= a= u=,g=
                    修改一類用戶某位或某些位權限

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

           chmod [OPTION]… —reference=RFILE FILE…

                參考RFILE 文件的權限,將FILE 的修改為同RFILE

           若用戶沒有任何權限,則設置權限為空,賦值權限也可直接賦八進制數字

權限解析

          文件權限設置:

                chmod u+wx,g-r,o=rx file

                chmod -R g+rwX /testdir
                chmod 600 file

權限解析
權限解析

         用戶新建文件和目錄時一般都會有默認的權限設置,比如root管理員用戶創建文件的默認權限為644,創建目錄的默認權限為755,普通用戶的創建文件的默認權限為664,創建目錄的權限為775,因為root是管理員用戶,所以為了安全,通常都是只有文件所有者才具有寫的權限。文件的默認權限是由umask掩碼決定的,修改文件的umask掩碼,即可修改文件創建的默認權限。

普通用戶umask值為002,root管理員用戶的的umask值為022,umask設置在全局文件 /etc/bashrc中或則用戶設置文件~/.bashrc中。

         umask掩碼:從777或666中,將文件對應的權限位去掉,從而得出默認權限

         umask值:可以用來保留在創建文件權限

         新建文件或目錄的權限為: 666-umask或777-umask

         如果所得結果某位存在執行(奇數)權限,則將其權限+1

        umask值得計算方法為

權限解析

         文件的完整權限666或777與umask值二進制計數的每一位比較,當umask的二進制位為0時,文件的權限二進制位保留,當umask二進制位為1時,文件的權限二進制位置為0,計算之后的最終權限即為文件的默認權限。
        umask: 查看umask值

        umask #: 設定umask值

        umask 002

        umask –S 模式方式顯示

權限解析

二、文件的三種特殊權限

        Suid 和 guid 的特殊權限及sticky位
                Suid 當在一個二進制文件上應用了suid后,那么任何人在執行該命令時臨時擁有命令擁有人的權限,只能應 用在可執行文件上
                u+s
                sgid 當在一個二進制文件上應用了sgid后,那么任何人在執行該命令時臨時擁有命令擁有組的權限,只能應用在可執行文件上,如果在一個目錄上應用了sgid后,那么任何人在該目錄創建文件/目錄的擁有組會繼承目錄本身的組
                g+s
                Sticky 如果在一個目錄上應用了sticky權限后,那么該目錄中的文件僅文件擁有人和root用戶能刪除
                o+t

    進程和文件都有屬主和屬組,而屬主和屬組的判定有以下幾種情況:

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

                (2) 啟動為進程之后,其進程的屬主為發起者, 進程的屬組為發起者所屬的組
                (3) 進程訪問文件時的權限,取決于進程的發起者
                        (a) 進程的發起者,同文件的屬主:則應用文件屬主權限
                        (b) 進程的發起者,屬于文件屬組;則應用文件屬組權限
                        (c) 應用文件‘其他’權限

  可執行文件上的SUID權限

            任何一個可執行程序文件能不能啟動為進程:取決發起者對程序文件是否擁有執行權限
            啟動為進程之后,其進程的屬主為原程序文件的屬主
            SUID 只對二進制可執行程序有效;SUID 設置在目錄上無意義
            權限設定:
                   chmod u+s FILE…

                   chmod u-s FILE…

權限解析

       可執行文件上的SGID權限

             任何一個可執行程序文件能不能啟動為進程:取決發起者對程序文件是否擁有執行權限
             啟動為進程之后,其進程的屬主為原程序文件的屬主
             權限設定:
                    chmod g+s FILE…

                    chmod g-s FILE…

權限解析

        目錄上的SGID權限

                默認情況下,用戶創建文件時,其屬組為此用戶所屬的主組
                一旦某目錄被設定了SGID ,則對此目錄有寫權限的用戶在此目錄中創建的文件所屬的組為此目錄的屬組
                權限設定:
                    chmod g+s DIR…
                    chmod g-s DIR…
        Sticky位
                具有寫權限的目錄通常用戶可以刪除該目錄中的任何文件,不管該文件的權限或擁有權
                在目錄設置Sticky 位,只有文件的所有者或root可以刪除該文件
                sticky設置在文件上無意義
                權限設定:
                    chmod o+t DIR…
                    chmod o-t DIR…
                八進制表示權限位:
SUID:4 SGID:2 STICKY:1

    權限位映射:

            SUID: user, 占據屬主的執行權限位
                s:屬主擁有x 權限
                S:屬主沒有x 權限
            SGID: group, 占據屬組的執行權限位
                s:group 擁有x 權限
                S:group 沒有x 權限
            Sticky: other, 占據other 的執行權限位
                t:other 擁有x 權限
                T:other 沒有x 權

三、ACL訪問控制列表

        ACL:Access Control List ,實現靈活的權限管理,即除了文件的所有者,所屬組和其它人以外,可以對某一個單獨的用戶設置訪問權限。

        ACL權限設置的生效順序為:所有者,自定義用戶,自定義組,其他

        getfacl 查看文件的acl屬性

        setfacl設置文件的acl屬性
            -m:創建cal
            u:用戶
            g:組
            o:其他人
            -x:刪除acl權限 eg:
            -R:遞歸
            -b:清除所有的acl設置
            -m:設置mask的值
        setfacl -k dir 刪除默認ACL 權限
        setfacl –b file1 清除所有ACL 權限

        getfacl file1 | setfacl –set-file=- file2 復制file1的acl 權限給file2

權限解析

        對passwd文件添加danran用戶rwx權限,setfacl -m u:danran:rwx passwd

        用戶或組的設置必須存在于mask 權限設定范圍內才會 生效
        setfacl -m mask::rx file
            –set 選項會把原有的ACL 項都刪除,用新的替代,需要注意的是一定要包含UGO 的設置,不能象-m 一樣只是添加ACL就可 以

       ACL設置: 

              setfacl -M file.acl file|directory 利用編輯好的acl設置文件批量設置acl
權限解析
             setfacl -m g:salesgroup:rw file| directory 創建某組的acl權限
             setfacl -m d:u:wang:rx directory 對目錄創建默認的acl權限

權限解析
            setfacl -x u:danran file |dir 刪除danran用戶的acl權限

    ACL文件上的group權限是mask值(自定義用戶,自定義組,擁有組的最大權限), 而非傳統的組權限。

    mask是影響除所有者和other 的之外的人和組的最大權限。
    mask 需要與用戶的權限進行邏輯與運算后,才能變成有限的權限(Effective Permission)。

    通過ACL 賦予目錄默認x 權限,目錄內文件也不會繼承x 權限。

    只能刪除ACL權限,不能刪除默認權限。

   

    

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

(0)
danrandanran
上一篇 2017-05-30 22:44
下一篇 2017-05-31 08:24

相關推薦

  • N26-博客作業-week10

    1、請詳細描述CentOS系統的啟動流程(詳細到每個過程系統做了哪些事情) 2、為運行于虛擬機上的CentOS 6添加一塊新硬件,提供兩個主分區;  (1) 為硬盤新建兩個主分區;并為其安裝grub;  (2) 為硬盤的第一個主分區提供內核和ramdisk文件; 為第二個分區提供rootfs;  (3) 為rootfs提供bas…

    2017-04-09
  • 馬哥教育網絡班21期-第2周課程練習

    1、 Linux上的文件管理類命令都有哪些,其常用的使用方法及其相關示例演示。 cp 復制、mv 剪切、rm 刪除 tree,mkdir 2、 bash的工作特性之命令執行狀態返回值和命令行展開所涉及的內容及其示例演示。 echo$ 查看命令執行狀態返回值 。 返回0,則表示執行成功。 返回非零,則表示執行失敗。(1-255) 3、請使用命令行展開功能來完成…

    Linux干貨 2016-07-17
  • 用戶 組

    用戶 組    在linux系統中,用戶管理是基于用戶名和密碼的方式進行資源的分配,linux上用戶Username/UID分為以下類別:    管理員: root,0    普通用戶: 1-65535 普通用戶分為:系統用戶和登錄用戶兩種 系統用戶:1-499(cen…

    系統運維 2016-08-04
  • Linux的基礎文件管理命令

    Linux用于管理文件的一些基本常見的命令如下: ls:  列出指定目錄下的清單    -a  顯示所有文件包括隱藏文件    -l  顯示文件的詳細信息    -d  查看目錄自身   示例: cat:  可查看指定路徑下的文件文本 fi…

    Linux干貨 2016-11-06
  • 馬哥教育21期網絡班—第六周課程+練習—-成長進行時

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

    Linux干貨 2016-08-03
  • Mysql備份III

    Mysql備份III Mysqldump和mysqldumper A備份和恢復所有庫 $ time mysqldumo –all-databases > /mysql/backup/date.time.database.dump.sql $ echo $? $ ls&nbs…

    Linux干貨 2016-06-09
欧美性久久久久