關於權限管理的介紹

權限管理包括普通權限、特殊權限、默認權限、ACL權限。

這些權限都是針對u(owner)、g(group)、o(other)三類定義的。

設置權限時文件和目錄不同(此處把文件和目錄分開,一般說文件就包含目錄(linux思想:一切皆文件))如下圖所示,

分別用兩個用戶分別創建了一個目錄一個文件,可以看到同是目錄的liutest和test的權限不同,它倆同爲目錄爲啥子權限不一樣呢,然後又看了一下兩個文件,發現權限也不同,那這是爲啥呢?!

別急,小編君這就爲你解答:

一:默認權限

    這是因爲有一個叫umask值的東西存在,因此超級管理員root和普通用戶在創建文件和目錄時有了默認權限,那啥又是默認權限呢,

默認權限就是在最大權限減去umask值後得到的,那啥又是最大權限呢,最大權限是多少呢?!   目錄的默認最大權限爲777,文件默認最大權限是666,即

                                    目錄  文件

最大權限                      777   666

umask(普通用戶)     002  002

默認權限                       775   664

umask(root)                   022   022

默認權限                       755   644

如圖所示,普通用戶umask默認爲0002,root默認0022(這裏只看後三位,說的時候就是root的umask值爲022,普通用戶的umask值爲002,第一位是特殊權限位,一會兒會詳細單獨說的),而目錄的最大權限是777,文件的最大權限666,所以在創件文件和目錄時,先用最大權限減去umask之後,就是其默認權限。

例:

777 rwxrwxrwx     666 rw-rw-rw-

021 —-w—x         021—-w—x

756 rwxr-xrw-       646rw-r–rw-

總結一個規律:當umask值全部是偶數時,可以直接減,當umask值包含奇數時,對於目錄直接減,對於文件,減完後再加一。如下圖所示dir1的權限是756(777-021),而文件file的權限值爲656(666-021+1)

設置umask值:umask #(例:umask 004)

    這種設定只在當時生效,要想長期生效,需要在/etc/bashrc(所有用戶可以看到)、~/.bashrc (僅用戶自己可以看)這兩個配置文件裏,手動修改。

這裏注意區分一下拷貝文件和新建文件時文件的權限區別:

cp拷貝文件時,基於源文件的權限減去umask值;

創建文件時,基於最大權限減去umask值。

 

二:普通權限:

 

前面一直說權限,那接下來就來看一下,每一位具體的意思吧:

 

r: 文件:可查看(讀取)文件內容

   目錄:可以用ls查看此目錄下的文件列表(不能查看詳細信息)

w: 文件:可以修改文件內容

    目錄:單獨使用沒意義,與x結合使用時,可在此目錄下創建、刪除文件

x:文件:可以執行

    目錄:可以進去此目錄,與r結合使用,可以查看此目錄下文件的詳細信息(ls -l)

 

X:當文件本身沒有x權限時,則跳過,一般用於批量修改多個文件、目錄的權限時,自動跳過沒有執行權限的文件。(一般只給目錄,不給文件。)

 

權限分兩種方式:

1.字符:

   chmod u/g/o+r/w/x file

   chmod a=rwx file(a=ugo)

2.數字:

   0:—

   1:–x

   2:-w-

   3:-wx

   4:r–

   5:r-x

   6:rw-

   7:rwx

組合:rwxr-xr–    754

chmod用於修改權限,此功能只有root和所屬人有權限

例:chmod754  file

 

chmod –reference file1 file2複製file1的權限給file2

 

(chown –reference file1 file2複製file1的所屬人和所屬組給file2)

 

(chgrp –reference file1 file2複製file1的所屬組給file2)

 

有的人會有疑問,權限位是四位,怎麼一直說三位啊,第一位是啥?

 

三:特殊權限位

 

第一位呢,是特殊權限位,由suid、sgid、sticky組成,下面有個總結,就是有點長,但是比較完整,其實重點是最後一句。

suid

    當對一個可執行的二進制文件作用了SUID權限之後,任何擁有執行該文件權限的人,在執行的過程時都臨時擁有該文件所屬人的權限。

sgid

    當對一個可執行的二進制文件作用了SGID權限之後,任何擁有執行該文件權限的人,在執行的過程時都臨時擁有該文件所屬組的權限

     當對一個目錄作用了SGID權限之後,任何對該目錄有wx權限的用戶在該目錄下創建的文件及目錄的所屬組均爲該目錄的所有組。

sticky

    當對一個目錄作用了sticky之後(只限制組用戶,目錄的owner不受影響),該目錄下的文件僅其所屬人才能刪除。

一些常用命令:

用字符:

    chmod u+s file   權限值爲4***,即只有suid

    chmod g+s file   權限值爲2***,即只有sgid

    chmod o+t file    權限值爲1***,即只有sticky

也可以用數字:

    chmod  3*** file   既有sticky又有sgid

    chmod  5*** file   既有sticky又有suid

    chmod  6*** file   既有suid又有sgid

    chmod  7*** file   都有,all

若文件本身帶有x權限時,爲s、t,反之,則是S、T

如下圖所示:

四:ACL權限

ACL(Access Control List)訪問控制列表

CentOS7當中,無論是操作系統安裝時還是之後手工創建的文件系統(xfs、ext4)均會開啓ACL功能。

CentOS6及之前的版本,僅操作系統安裝時創建的文件系統纔會默認開啓ACL,手工創建的文件系統,需要手工開啓ACL功能。

1.mount -o acl /dev/sda7  取消的方式,重新掛載時不指定即可

2.mount -o remount,acl /dev/sda7

   以上兩種方式開啓的ACL可以通過 mount |grep sdaX 查看

3.tune2fs -o acl /dev/sda7 取消的方式 tune2fs-o ^acl /dev/sda7

   使用以上方式開啓的ACL可以通過

tune2fs-l /dev/sda7 |grep option查看

以上很少用到,這裏就不做演示了。

ACL權限判斷的順序

   先判斷是否是文件的OWNER,如果是,則執行OWNER的權限後結束,如果不是OWNER,則判斷是否是ACL的USER,如果是則執行USER權限後結束,如果不是ACL的USER, 則判斷是否屬於GROUP或ACL GROUP,如果是,則取最大權限。如果不屬於任何GROUP,則執行OTHER。

   即:所有人->所有組->其他人

ACL的設置:(設置權限後,ll查看到權限位的末尾有+號,代表已經設置了ACL權限,這時再想查看權限就用getfacl file查看,當然ll也還能用,只是看不到ACL的權限而已)

   setfacl-m u/g:user/group:r/w/x file

首先創建目錄

然後設置ACL權限,並觀察其權限處的變化

然後:通過getfaclfile查看ACL:

設置默認的ACL:

   setfacl-m d:u/g:user/group:r/w/x file

(僅影響新創建的文件及子目錄,對當前目錄沒影響)

刪除一條ACL權限:

   setfacl-x u/g:user/group file

僅刪除一條默認的ACL權限:

   setfacl-x d:user/group file

刪除所有ACL權限

   setfacl-b file

刪除默認的ACl權限:

   setfacl-k file

以上操作常與-R連用,遞歸設置對目錄及其子目錄的操作

主要的文件操作命令cp和mv都支持ACL,只是cp命令需要加上-p 參數。

   getfacl-R /PATH/TO > acl.txt連同其子目錄文件的ACL權限一同導入acl.txt

   setfacl-R -b /tmp/dir1連同子目錄的ACL全刪除

   setfacl-R –set-file=acl.txt /tmp/dir1(兩種還原)

   setfacl–restore acl.txt(第二種)

注意:

設置過ACL權限後,操作chmod g+/- r/x/w file這條命令,用ll命令查看權限時也能看到所屬組位權限的變化,但是,用getfacl file查看所屬組位沒變化,實際上改變的只是mask值。但chmod u+/- r/x/w所屬人權限無論使用ll查看還是,getfacl file查看,都會變成設置的值、

這裏的mask是所有除所有者OWNER和root外的user和group的權限的並集。

也可以使用setfacl -mmask::r/w/x file設置其權限值

另外涉及到一些特殊權限:

   chattr+i file 不能file進行刪除、修改,改名等

   chattr-i file 取消這種權限限制

   chattr+a file 只能追加內容

   chattr -a file 取消這種權限限制

OK,內容目前到此,小編君剛學Linux不久,學識有限,若有出入,請多多指教,若總結的不到位,望海涵。


原178上的博客地址http://www.178linux.com/83422

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