8.3_Linux文件系統權限和特殊權限淺析

什么是Linux文件系統權限?

在Linux中的每一個文件或目錄都包含有訪問權限,這些訪問權限決定了誰能訪問和如何訪問這些文件和目錄。

8.3_Linux文件系統權限和特殊權限淺析

8.3_Linux文件系統權限和特殊權限淺析

Linux文件系統權限的分類

Linux中的權限分為:read(讀)、write(寫)、execut(執行)三種權限

文件和目錄表示的權限也各有不同

權限對于文件的意義:

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

w: 可修改內容,可破壞內容,但不能刪除文件本身

x: 針對二進制可執行的程序或腳本,可以把此文件提請內核啟動為一個進程,普通文件不需要執行權限

權限對于目錄的意義:

r: 可以使用ls命令查看目錄內容的文件信息

w: 可以創建、刪除文件

x: 可以使用ls -l命令來查看目錄內容的文件信息,并且可以使用cd命令切換此目錄為工作目錄

特別符號大寫X

假如設置權限的時候,類似于 chmod -R a=rwX DIR/ 中大X的意義

于文件的意義:

大X執行權限,如果像例子那樣子遞歸增加所有目錄和文件的權限,因為本來文件之間并不需要增加小x的權限,用X的話,本來沒有x權限的文件在增加權限以后也不會有x權限,只有那些本來就已經有x權限的文件,在用大X以后依然會給文件加上x權限。

于目錄的意義:

對于目錄來說,X和x的意義是一樣的,目錄需要x權限當然用大X的時候也會把權限一并加上。

注意:

X:只是給目錄x權限,不給文件x權限,不給文件x權限,是因為對于安全角度的考慮!

權限的八進制數字意義

用戶的不擁有某位權限,則使用-占位

    —   000   0    沒有任何權限

    –x   001   1    只有執行權限

    -w-   010   2    只有寫權限

    -wx   011   3    寫和執行權限

    r–   100   4    只讀權限

    r-x   101   5    讀和執行權限

    rw-   110   6    讀寫權限

    rwx   111   7    讀寫執行權限(所有權限)

這些權限,是保存在文件的元數據當中

控制文件的權限

8.3_Linux文件系統權限和特殊權限淺析

當我們創建一個文件的時候,假如我們要修改該文件的權限,那么,此時我們將會用到chmod的命令·

chmod:修改文件權限

8.3_Linux文件系統權限和特殊權限淺析

操作三類用戶的權限:使用8進制形式

      chmod [-R] OCTAL-MODE(8進制)file …

      對鏈接文件無效,左側以0補齊

EX.修改屬主為讀寫,屬組為只讀,其他沒有權限

8.3_Linux文件系統權限和特殊權限淺析

操作指定類別用戶的權限:使用u,g,o,a來賦權,用 = 或者 +/- 來進行

     u:屬主

     g:屬組

     o:其他

     a:所有

EX.使用 = 控制權限,修改權限為屬主讀寫,屬組讀寫,其他只讀。

8.3_Linux文件系統權限和特殊權限淺析

EX.使用 +/- 控制權限,修改權限為屬組去掉寫權限,其他去掉讀權限。

8.3_Linux文件系統權限和特殊權限淺析

chmod 命令還能參照其他文件的權限來進行設置權限

EX.參考文件b的權限來修改文件a的權限

8.3_Linux文件系統權限和特殊權限淺析

umask值

在上面的實驗,我們發現,我們創建一個文件的時候是有對應的默認的權限的

8.3_Linux文件系統權限和特殊權限淺析

要注意的是管理員的默認權限和普通用戶的默認權限是不同的

8.3_Linux文件系統權限和特殊權限淺析

那么默認權限是哪里控制的?

答:這個是由umask來控制的

直接輸入umask可以查看到用戶的umask值

8.3_Linux文件系統權限和特殊權限淺析

8.3_Linux文件系統權限和特殊權限淺析

我們可以看到,管理員和普通用戶的umask的默認值是不同,這個就是為什么管理員創建文件和普通用戶創建文件的權限不同的原因。

umask的這些數值的作用:通過umask值和用文件(目錄)默認值的計算,可以得出用戶的文件(目錄)初始的權限制。

關于默認權限值,這里有一個計算的小公式

umask+默認權限值

默認權限值 = 文件權限 666 / 目錄權限 777

文件:666-umask=有奇數+1,偶數保留

目錄:777-umask

新建FILE權限: 666-umask

如果所得結果某位存在執行(奇數)權限,則將其權限+1

為什么文件的權限是666而不是777?rwx加起來應該是7,這個是由于安全考慮,因為到某些文件默認就有執行權限的話,意味著如果有心的人隨便去執行某些文件話,會引起系統出問題。而計算的時候,遇到奇數位置就需要+1,就是因為有的情況下計算出來的結果,會使權限帶有x的執行權限,為了避免這個情況,所以+1以后得出來的結果永遠是偶數,就可以避免這個情況了。

所以上圖,root的umask是022,用666-022=644=rw-r–r–,所以默認創建的文件就是這個權限

新建DIR權限: 777-umask

8.3_Linux文件系統權限和特殊權限淺析

以此圖為例,777-022=755=rwxrw-rw- ,所以目錄的文件的情況也是用777-umask值可以計算促回來

umask 本質:屏蔽掉最大權限相應的位,從而得出默認的權限

如果需要臨時設置umask值,可以輸出 umask=xxx

如果需要設置永久的umask值可以進入家目錄下 ~/.bashrc 或者.bash_profile 里面添加 umask xxx

如果需要設置全局的umask值,可以進入/etc/profile或者/ete/brshrc里面設置,但是并不建議這樣做

8.3_Linux文件系統權限和特殊權限淺析

從這個圖我們也可以了解到,為什么root賬號的umask值是022,而普通賬號的umask是022

設置umask值表示的方式可以有以下兩種

(1)umask數值設置只能是八進制的數字,即0-7

(2)可以使用 umask u=rw,g=r,o=r 這樣方式來設置

其他umask的使用小技巧

[root@centos ~]# umask -S #顯示對應權限,如果是文件的話,則減去x的權限即可

u=rwx,g=rx,o=rx

umask -p >> .bashrc 或者 .bash_profile #此命令輸出直接追加到環境變量文件里面就可以偷懶進去修改了,即輸出就可以直接被調用

Linux文件系統的特殊權限

三種特殊的權限:SUID SGID STICKY

執行特殊的權限前提:進程有屬主和屬組;文件有屬主和屬組

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

(2) 啟動為進程之后,其進程的屬主為發起者;進程的屬組為發起者所屬的組

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

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

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

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

這三個特殊權限也是能用八進制來表示的,并且作用在不同的位上,如下:

SUID 4 SGID 2 STICKY 1   4+2+1=7

user   group  other    

SUID(s):當一個用戶去運行該程序的時候,該用戶繼承所有者的權限。

8.3_Linux文件系統權限和特殊權限淺析

可以看見一個程序有的user位有一個s,替代原來的x,代表SUID的權限已經添加進去,且一般情況下我們看到的是紅底白字的文件的信息

SUID權限設定

chmod  4XXX FILE, 4表示SUID

chmodu+sFILE…

chmodu-s FILE…

注意:SUID: user,占據屬主的執行權限位

         s: 屬主擁有x權限

          S:屬主沒有x權限

注意:SUID只能應用在二進制程序里面,不能作用在目錄上面,此命令不能隨便加,太危險。

UID的作用:

當其他用戶執行SUID權限的二進制程序的時候,在ps aux里面顯示用戶,也會是SUID的二進制程序的屬于,大部分情況下面即是root

8.3_Linux文件系統權限和特殊權限淺析

8.3_Linux文件系統權限和特殊權限淺析

SGID 的作用  

(1)如果應用在二進制程序里面,啟動為進程之后,其進程的屬主為原程序文件的屬組,這種情況跟SUID功能類似

8.3_Linux文件系統權限和特殊權限淺析

當文件擁有SIG的權限的時候,在group位會有一個s,替代了原來的x,代表SGID的權限已經添加進去,且一般情況下我們看到的是黃底黑字的文件的信息

SGID權限設定

chmod  2XXX FILE…   2表示GUID

chmodg + sFILE…

chmodg – sFILE…

(2)如果應用在目錄里面,所有用戶在此目錄下面創建的文件(包括子目錄)的時候的屬組跟目錄的屬組一致。此作用通常用于創建一個協作目錄。

SGID權限設定

chmodg + sDIR…

chmodg -s DIR…

注意:SGID: group,占據屬組的執行權限位

         s: group擁有x權限

         S:group沒有x權限

注意:root賬號和root組的概率是不同的,root組也只是屬于一個普通的組

這個意義跟windows操作系統里面的administrators組的意義是不一樣的

STICKY 粘滯位的作用

具有寫權限的目錄通常用戶可以刪除該目錄中的任何文件,無論該文件的權限或擁有權,在目錄設置Sticky位,只有文件的所有者或root可以刪除該文件。(注意STICKY位作用在文件上面的話沒有用)

8.3_Linux文件系統權限和特殊權限淺析

當目錄擁有STICKY的權限的時候,在other位會有一個t,替代了原來的x,代表STICKY的權限已經添加進去,且一般情況下我們看到的是綠底黑字的文件的信息

chmod  1XXX FILE, 1表示STICKY

chmod  o+t

注意:Sticky: other,占據other的執行權限位

          t: other擁有x權限

          T:other沒有x權限

以上SUID,SGID,和STICKY都必須要配合有x的權限的。

刪除這3個的時候必須用 chmod u-s,g-s,o-t FILE 這樣的命令,不能用0777這樣等的命令修改。

Linux文件系統的特殊權限之ACL

什么是ACL?

ACL:Access Control List,實現靈活的權限管理,除了文件的所有者,所屬組和其它人,ACL的特別之處就是可以對單一用戶實現對文件和目錄的權限控制。

注意:

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

CentOS7.X之前版本,默認手工創建的ext4文件系統無ACL功能。需手動增加:

tune2fs –o acl/dev/sdb1

mount –o acl/dev/sdb1 /mnt

具有acl權限的文件會有一個+,我們可以用getfacl FILE的命令去查看該文件的ACL權限,如下圖所示。

8.3_Linux文件系統權限和特殊權限淺析

下面我們給與本來沒有對a文件任何操作的wan用戶rw的ACL的權限

8.3_Linux文件系統權限和特殊權限淺析

通過上圖我們可以發現,給與wan用戶rw的ACL權限以后,用戶wan就可以對a文件進行讀寫的操作,但是之后當我們刪除掉ACL的權限以后,wan用戶就沒有讀寫a文件的權限了,這就是ACL的作用。

通過上圖,我們還能發現ACL中有一個mask的權限

這個權限的作用是:

mask影響除所有者和other的之外的人和組的最大權限

mask需要與用戶的權限進行邏輯與運算后,才能變成有限的權限(Effective Permission)

用戶或組的設置必須存在于mask權限設定范圍內才會生效。

下面我們來演示一下mask的用法:

首先,給用戶wan增加rwx的權限

8.3_Linux文件系統權限和特殊權限淺析

通過上圖,我們可以看見:mask的值是rwx,跟用戶wan的權限是一樣的,

還有一點不知道大家留意到沒有,group組的權限本來是—,但是顯示文件的時候,現在的卻是rwx的權限,這是怎么回事呢?下面再給大家繼續演示。

8.3_Linux文件系統權限和特殊權限淺析

這里設置mask的值為r,此時觀察a文件的組的權限變成了r–,用戶wan本來的后面也多了一個#effective:r–

的字樣,用wan用戶向a文件里面寫入數據,發現此時數據寫不進去。通過此實驗我們可以發現,

mask的值可以限制本來用戶的最大權限,而且文件上面現在的屬組的權限,在增加ACL以后,顯示出來的這個值,實際上是mask的值。要注意的是mask值的修改只影響除所有者和other的之外的人和組的最大權限。

注意,有ACL的情況下面,更改(組group)的權限,實際上就是更改mask的權限,實際的(組group)的權限不受影響,但是不作用。

setfacl 的常用選項

getfacl file |directory            查看ACL的信息

setfacl -m mask::rx file           使用mask值限制成為rx的權限

setfacl -m u:USERNAME:rw FILE      增加用戶的rw的ACL權限

setfacl -x u:USERNAME FILE | DIR   刪除用戶的ACL權限

setfacl -b FILE                    徹底清空所有ACL權限

setfacl -M FILE | DIR              以指定格式導入ACL配置

setfacl -Rm g:sales:rwX directory  遞歸增加目錄下面組group的ACL權限

setfacl -m g:salesgroup:rw file| directory  增加組group的ACL權限

setfacl -m d:u:USERNAME:rx directory     設置用戶對該目錄下面創建的文件有遞歸的rx的權限

(setfacl -m d:u:wang:rx directory 這個里面的d選項,就是影響以后在該文件夾下面創建文件的時候默認也帶有原來ACL的權限)

setfacl -k dir 清除默認acl權限

setfacl -X file.acl directory

getfacl file1 | setfacl –set-file=-file2 復制file1的acl權限給file2

(–set選項會把原有的ACL項都刪除,用新的替代,需要注意的是一定要包含UGO的設置,

不能象-m一樣只是添加ACL就可以)

如: setfacl –set u::rw,u:wang:rw,g::r,o::- file1

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

如何備份和恢復ACL的權限

備份:getfacl -R * 目錄/路徑/*  >  /root/acl.bak (備份到指定文件里面)

恢復:setfacl -R –set-file=/root/acl.bak *

最后說明:以上說了幾種權限,這里給大家說話一下,權限只是針對文件系統,假如文件系統換成諸如WINDOWS操作系統里面的vfat文件系統的話,文件權限就不一定能夠支持了。

原創文章,作者:~微風~,如若轉載,請注明出處:http://www.www58058.com/29167

(0)
~微風~~微風~
上一篇 2016-08-05
下一篇 2016-08-05

相關推薦

  • 磁盤文件系統基礎(一)

    磁盤的主要硬件單元有:     1、磁頭:通過電磁感應的方式對磁盤數據進行讀寫。     2、磁道:在磁盤自傳過程中磁頭劃過的圓形軌跡,這些軌跡是肉眼看不見的特色磁化區域。     3、扇區:磁盤上的每個磁道被等分為若干個圓弧,這些圓弧被稱…

    Linux干貨 2016-10-27
  • shell腳本變成之數組、字符串處理及其它功能補充

    數組定義:                  能夠存儲多個元素的內存空間,每個元素在數組中具有特定的索引編號,我們可以通過變量名和索引編號來查看數組中的某一元素。    &nbsp…

    Linux干貨 2016-08-24
  • vim編輯器

    導讀:      本章將主要介紹Linux中的一種常用文本編輯器vim,具體內容如下:       □使用vi和vim的三種主要模式       ?移動光標,進入插入模式       ?改變、刪除、復制文本     &n…

    Linux干貨 2016-08-15
  • 初識selinux

    一、selinux介紹     1.selinux歷史     SELinux: Secure Enhanced Linux,是美國國家安全局「NSA=The National Security Agency」和SCC(Secure Computing Corporation)開…

    Linux干貨 2016-09-21
  • (總結)MySQL自帶的性能壓力測試工具mysqlslap詳解

    PS:今天一同事問我有木有比較靠譜的mysql壓力測試工具可用。其實mysql自帶就有一個叫mysqlslap的壓力測試工具,還是模擬的不錯的。下面舉例說說。mysqlslap是從5.1.4版開始的一個MySQL官方提供的壓力測試工具。通過模擬多個并發客戶端訪問MySQL來執行壓力測試,同時詳細的提供了“高負荷攻擊MySQL”的數據性能報告。并且能很好的對比…

    Linux干貨 2015-02-10
  • 解決CentOS SSH 連接慢

    1、關閉DNS反向解析在linux中,默認就是開啟了SSH的反向DNS解析,這個會消耗大量時間,因此需要關閉。配置文件路徑 vim /etc/ssh/sshd_configUseDNS=no 在配置文件中,雖然UseDNS yes是被注釋的,但默認開關就是yes 2、關閉SERVER上的GSS認證在authentication gssapi-with-mic…

    Linux干貨 2018-01-10

評論列表(1條)

  • 馬哥教育
    馬哥教育 2016-08-07 23:58

    文章的層次結構清晰明了,內容豐滿,有理論有實踐。 圖片清晰,指示明確,結合文字引導,可謂圖文并茂。

欧美性久久久久