Linux普通權限及特殊權限講解

1.文件權限

文件權限主要是針對三類對象進行定義的:

                                       owner:屬主,u

                                       group:屬組,g

                                       other:其他,o

每個文件針對每個類定義了三種權限:

                                       readable: r

                                       writable: w

                                       excutable:x

三種文件權限:

                                       r: 可使用文件查看類工具獲取其內容

                                       w: 可修改其內容

                                       x: 可以把此文件提請內核啓動爲一個進程

三種目錄權限: 

                                       r: 可以使用ls查看此目錄中文件列表 

                                       w: 可在此目錄中創建文件,也可刪除此目錄中的文件 

                                       x: 可以使用ls -l查看此目錄中文件列表,可以cd進入此 目錄 

                                       X:只給目錄x權限,不給文件x權限

2.目錄權限:

      [root@iZ11yrfw9g3Z ~]# ll -d luyubo

     drwxr-xr-x 2 root root 4096 Aug  4 13:48 luyubo

                                       d表示文件類型

                                       rwxr-xr-x 每三個一組

                                       rwx表示所屬用戶權限

                                       r-x表示所屬組的權限

                                       r-x表示其他用戶權限

                                       2表示引用連接數

                                       root表示所屬用戶

                                       root表示所屬組

                                       4096表示文件大小

                                       Aug  4 13:48表示時間

                                       luyubo表示目錄

3.chmod命令:

    用法:chmod [選項]... 模式[,模式]... 文件...

   或:chmod [選項]... 八進制模式 文件...

   或:chmod [選項]... --reference=參考文件 文件...

    修改一類用戶的所有權限: u=  g= o= ug=  a= u=,g= 

    修改一類用戶某位或某些位權限 u+  u- g+ g- o+ o- a+ a- + 

 將每個文件的模式更改爲指定值。

       

  -c, --changes         類似 --verbose,但只在有更改時才顯示結果

      --no-preserve-root 不特殊對待根目錄(默認)

      --preserve-root 禁止對根目錄進行遞歸操作

  -f, --silent, --quiet         去除大部份的錯誤信息

  -v, --verbose         爲處理的所有文件顯示診斷信息

      --reference=參考文件 使用指定參考文件的模式,而非自行指定權限模式

  -R, --recursive 以遞歸方式更改所有的文件及子目錄

      --help         顯示此幫助信息並退出

      --version          顯示版本信息並退出

                                  chown 設置文件的所有者 

                                [root@localhost ~]# chown luyubo luyubo

4.chgrp命令使用方法

用法:chgrp [選項]... 用戶組 文件...

 或:chgrp [選項]... --reference=參考文件 文件...

將每個指定文件的所屬組設置爲指定值。

如果使用 --reference,則將每個文件的所屬組設置爲與指定參考文件相同。


                    -c, --changes 類似 --verbose,但只在有更改時才顯示結果

                        --dereference          影響符號鏈接所指示的對象,而非符號鏈接本身(默認值)

                    -h, --no-dereference 會影響符號鏈接本身,而非符號鏈接所指示的目的地

                        (當系統支持更改符號鏈接的所有者時,此選項纔有用)

                       --no-preserve-root         不特殊對待"/"(默認值)

                       --preserve-root         不允許在"/"上遞歸操作

                    -f, --silent, --quiet 去除大部份錯誤信息

                       --reference=RFILE 使用參考文件的所屬組,而非指定值

                    -R, --recursive         遞歸處理所有的文件及子目錄

                    -v, --verbose 爲處理的所有文件顯示診斷信息


以下選項是在指定了 -R 選項時被用於設置如何穿越目錄結構體系。

如果您指定了多於一個選項,那麼只有最後一個會生效。


        -H         如果命令行參數是一個通到目錄的符號鏈接,則遍歷符號鏈接

        -L         遍歷每一個遇到的通到目錄的符號鏈接

        -P         不遍歷任何符號鏈接(默認)


      --help 顯示此幫助信息並退出

      --version 顯示版本信息並退出

chgrp 設置文件的屬組信息

[root@localhost ~]# chgrp luyubo luyubo

5.默認權限介紹

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

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

                                       新建DIR權限: 777-umask

                                       非特權用戶umask是 002   權限是:775

                                       root的umask 是 022      權限是:755

                                       因爲root權限太大,風險是很大的,所以默認權限是低於普通用戶的

                                       umask: 查看當前mask值  #執行結果是:022

                                       umask #: 例如 umask 023   權限是754

                                       umask –S 模式方式顯示  #大s以字母方式顯示

                                       umask –p 輸出可被調用  #執行結果是:umask 022

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

6.Linux文件系統上的特殊權限

   1.SUID,SGID,Sticky 

    三種常用權限:r, w, x    user, group, other

       安全上下文

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

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

   (2) 啓動爲進程之後,其進程的屬主爲發起者;進程的屬組爲 發起者所屬的組

   (3) 進程訪問文件時的權限,取決於進程的發起者

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

   (b) 進程的發起者,屬於文件屬組;則應用文件屬組權限 

   (c) 應用文件“其它”權限

    2.SUID:

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

2.啓動爲進程之後,其進程的屬主爲原程序文件的屬主 

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

4.SUID設置在目錄上無意義

權限設定: chmod u+s FILE... chmod u-s FILE...

例如:設置二進制程序echo的屬主權限

       [root@localhost ~]# chmod u+s /bin/echo

   3.SGID:

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

       2.啓動爲進程之後,其進程的屬主爲原程序文件的屬組

       3.權限設定: chmod g+s FILE... chmod g-s FILE...

        例如:設置二進制程序echo的屬組權限

       [root@localhost ~]# chmod g+s /bin/echo

       4.SUID:user,佔據屬主的執行權限位 s:屬主擁有x權限 S:屬主沒有x權限

   4.目錄SGID:

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

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

       3.通常用於創建一個協作目錄

       4.權限設定: chmod g+s DIR... chmod g-s DIR...

       例如:設置/data/testdir/目錄內所有新建文件爲g1組。  

      [root@localhost data]# chgrp g1 testdir/
      [root@localhost data]# chmod g+s testdir/

       5.SGID:group,佔據屬組的執行權限位 s:group擁有x權限 S:group沒有x權限 

   5.Sticky位:

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

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

       3.sticky設置在文件上無意義 

       4.權限設定: chmod o+t DIR... chmod o-t DIR...

       5.例如:我們bo目錄加上t權限:

    [root@localhost home]# chmod o+t bo/
    [root@localhost home]# ll -d bo/
    drwxrwxrwt 2 root root 4096 8月   4 20:58 bo/

     切換用戶至tom嘗試刪除目前內的文件是沒有權限,但是我們的權限是777,這就是sticky的作用

      6.Sticky: other,佔據other的執行權限位 t: other擁有x權限 T:other沒有x權限

7.文件特定屬性

      1.chattr +i 不能刪除,改名,更改

      2.chattr +a 只能增加 

      3.lsattr 顯示特定屬性

8.訪問控制列表acl

     1.ACL:Access Control List,實現靈活的權限管理 

     2.除了文件的所有者,所屬組和其它人,可以對更多的用戶設 置權限 

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

     4.CentOS7.X之前版本,默認手工創建的ext4文件系統無ACL功能。需手動增加:tune2fs –o acl /dev/sdb1 mount –o acl /dev/sdb1  /mnt

     5.ACL生效順序:屬主,自定義FACL屬主,屬組,自定義FACL屬組,其他人

     6.ACL命令:

            getfacl 查看acl

            setfacl -x刪除權限

            setfacl -b徹底清空文件上面的acl

            setfacl -d設置默認acl權限,新建文件生效

            setfacl -k刪除設置默認acl權限

            setfacl -m u:::rw file設置所有者權限

            setfacl -m m:::rw file設置mask 權限

            設置mask,隻影響除所有者和other,其他權限不能比mask高,或者相等 

            設置acl之後  所屬組權限就不是組權限了,就是mask權限了 

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

     8.getfacl 可看到特殊權限:flags 

     9.默認ACL權限給了x,文件也不會繼承x權限。 ?base ACL 不能刪除

     10.setfacl -k  dir 刪除默認ACL權限 

     11.setfacl -b file1清除所有ACL權限 

     12. mask隻影響除所有者和other的之外的人和組的最大權限 Mask需要與用戶的權限進行邏輯與運算後,才能變成有限的權限 (Effective  Permission) 用戶或組的設置必須存在於m  ask權限設定範圍內纔會生效。 setfacl -m mask::rx file

     13. --set選項會把原有的ACL項都刪除,用新的替代,需要注意的 是一定要包含UGO的設置,不能象-m一樣只是添加ACL就可以. 

       例如:

            [root@localhost home]# setfacl --set u::rw,u:tom:rw,g::r,o::- bo/

9.備份和恢復ACL 

      1.主要的文件操作命令cp和mv都支持ACL,只是cp命令需要 加上-p參數。但是tar等常見的備份工具是不會保留目錄 和文件的ACL信息

       [root@localhost data]# getfacl -R testdir/ > acl.txt
       [root@localhost data]# setfacl -R -b testdir/
       [root@localhost data]# setfacl -R --set-file=acl.txt testdir/
       [root@localhost data]# getfacl -R testdir/


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