權限解析

一、文件權限

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

       文件的權限即是指文件本身賦予了用戶什么樣的權力,也就是說用戶能不能打開文件,能不能修改文件這些屬性都是由文件權限標記和賦予的。文件的權限一般包括讀、寫、執行三種權限。讀也就是用戶有讀文件的能力,八進制表示為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

相關推薦

  • 磁盤陣列RAID

    磁盤陣列RAID 什么是RAID RAID的全稱是Redundant Array of Inexpensive Disks 可以釋義為 廉價磁盤冗余陣列,后來的RAID里的字母I被認為是Independent,即獨立的磁盤冗余陣列。 RAID的作用 由于服務器中磁盤讀寫率太大,所以磁盤經常損壞,raid可以讓壞了一塊磁盤時,服務器不至于巖機。當然這只是其中的…

    Linux干貨 2017-06-18
  • Nginx 功能概述與基礎應用!

           本篇博客主要有三個部分組成,目的在于讓大家了解ningx的主要功用及作為web server的基礎配置;通過本篇博客能夠讓您對nginx理解更加深入,以便于更好的使用它!                  …

    2017-05-14
  • linux之/home目錄轉移分區。

    linux之/home目錄轉移分區。     I,基本思路,將/home目錄的數據轉移到新的分區,再將/home目錄掛載到新的分區。     II,添加硬盤,進行分區,添加新硬盤不重啟機器識別命令echo “- – -”  /sys/class/scsi_host/host#/scan,然后進行 …

    Linux干貨 2017-06-19
  • 常用進程查看工具

    進程是我們學習Linux中常常接觸的概念,他是程序被運行起來的一種表現形態。 了解進程的工作狀態,管理進程的工作狀態,可以讓我們更清楚的知道,系統正在做什么,整體的進度是怎么樣的。 想要了解進程的工作狀態,我們就需要借助一些常用的工具來查看,想要對進程進行管理,我們也需要工具來實現。下面我們一起來看一看常用的查看進程工具有哪些,這些工具是如何使用的,有什么特…

    2017-05-09
  • N25-第九周作業

    1、寫一個腳本,判斷當前系統上所有用戶的shell是否為可登錄shell(即用戶的shell不是/sbin/nologin);分別統計這兩類用戶的個數;通過字符串比較來實現; #!/bin/bash     echo “可登錄類型有有$(awk -F: ‘/[^\<nologin\>…

    Linux干貨 2017-03-11
  • 作業–文本處理工具

    1、找出ifconfig命令結果中本機的所有IPv4地址。 [root@liang ~]# ifconfig        #centos6下 eth0      Link encap:Et…

    Linux干貨 2016-08-10
欧美性久久久久