權限管理

權限管理包括普通權限、特殊權限、默認權限、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: 文件:可查看(讀?。┪募热?/p>

   目錄:可以用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不久,學識有限,若有出入,請多多指教,若總結的不到位,望海涵。

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

(0)
M.SunM.Sun
上一篇 2017-07-30 20:47
下一篇 2017-07-30 20:58

相關推薦

  • 服務器故障的解決方法以及基本腳本的編寫

    1,當開機時一直重新啟動怎么辦? 在開機時就如字符界面后按下a鍵然后進入單用戶模式,通過設置 [root@CentOS6 boot]# vim /etc/inittab 這個文件,將里面的開機啟動項改為多用戶模式就可。 # id:3:initdefault: “/etc/inittab” 26L, 884C 講id這項設置完成后重新啟動就好。 2,忘記roo…

    Linux干貨 2017-05-15
  • linux 學習筆記

    第一周

    Linux干貨 2018-03-16
  • Linux 基礎(5)

    /etc/passwd           /etc/shadow         /etc/gpasswd (chage)            /etc/gshadow    usera…

    2017-07-22
  • 馬哥教育網絡班22期+第三周課程練習

    1、列出當前系統上所有已經登錄的用戶的用戶名,注意:同一個用戶登錄多次,則只顯示一次即可。     [root@zabbix ~]# who|awk '{print $1}'|sort| uniq 2、取出最后登錄到當前系統的用戶的相關信息。 &nb…

    Linux干貨 2016-08-23
  • 簡單的bash腳本查看任意網段的在線主機

    一前言         最近看到許多同志在寫ping某個地址段的bash腳本,我也心血來潮來了一發。  當然本人新手,大神勿噴。 二準備工作           linux系統的機…

    2017-03-02
  • scp命令介紹

    scp是secure copy的簡寫,用于在Linux下進行遠程拷貝文件的命令,和它類似的命令有cp,不過cp只是在本機進行拷貝不能跨服務器,而且scp傳輸是加密的。可能會稍微影響一下速度。當你服務器硬盤變為只讀 read only system時,用scp可以幫你把文件移出來。另外,scp還非常不占資源,不會提高多少…

    Linux干貨 2017-07-24
欧美性久久久久