權限管理

權限管理包括普通權限、特殊權限、默認權限、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不久,學識有限,若有出入,請多多指教,若總結的不到位,望海涵。

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

(0)
M.SunM.Sun
上一篇 2017-07-30
下一篇 2017-07-30

相關推薦

  • Redis應用場景

    1.  MySql+Memcached架構的問題   實際MySQL是適合進行海量數據存儲的,通過Memcached將熱點數據加載到cache,加速訪問,很多公司都曾經使用過這樣的架構,但隨著業務數據量的不斷增加,和訪問量的持續增長,我們遇到了很多問題:   1.MySQL需要不斷進行拆庫拆表,Memcached也需不斷跟著擴容,擴容和維護工作占據…

    Linux干貨 2016-03-22
  • mysql并發控制

    并發控制: 鎖:Lock 1、鎖類型 : 讀鎖:共享鎖,可被多個讀操作共享; 寫鎖:排它鎖,獨占鎖; 2、鎖粒度: 表鎖:在表級別施加鎖,并發性較低; 行鎖:在行級另施加鎖,并發性較高; 3、鎖策略:在鎖粒度及數據安全性之間尋求一種平衡機制; 存儲引擎:級別以及何時施加或釋放鎖由存儲引擎自行決定; MySQL Server:表級別,可自行決定,也允許顯式請求…

    2016-11-18
  • wed服務基礎·httpd基礎配置詳解

    一、 Web Service基礎: service:計算機后臺提供的功能或計算機可以提供的某一種功能 Web Service本質:通過網絡調用其它網站的資源 根據來源的不同,分為兩種服務: 本地服務:使用同一臺機器提供的服務,不需要網絡 網絡服務:使用另一臺機器提供的服務,需要網絡   IANA互聯網地址授權機構(Internet Assigned…

    2017-06-09
  • 重返課堂

    1.學習目的: i. IT業發展日新月異,當前所掌握的知識已無法滿足工作需要。 ii. IT行業更新飛快,這就要求從業人員不斷的去學習,不斷的完善自己,才不至于被淘汰。 iii. 在這個大數據、云計算為王的時代,掌握Linux是入行“敲門磚”。 iv. 年齡已大,把握住人生不多的專門學習的機會,再博一次。 2.淺識Linux i. linux為何? Linu…

    2018-03-26
  • rsyslog+mysql+loganalyzer日志服務器搭建

    rsyslog+mysql+loganalyzer日志服務器搭建 環境 服務器端:192.168.25.129,centos7 客戶機端:192.168.25.130,centos7 rsyslog+Mysql服務器端的配置: 準備好msql server或mariadb server ]# yum -y install&nbs…

    Linux干貨 2016-11-07
  • if case語句練習

     1、 寫一個腳本/root/bin/createuser.sh,實現如下功能:使用一個用戶名做為參數,如果指定參數的用戶存在,就顯示其存在,否則添加之;顯示添加的用戶的id號等信息 [root@localhost bin]# cat createuser.sh #!/bin/bash # Date…

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