RHEL之(一)Red Hat Linux 文件權限


(一)Red Hat Linux 文件權限

Linux系統中不僅是對用戶與組根據UID,GID進行了管理,還對Linux系統中的文件,按照用戶與組進行分類,針對不同的群體進行了權限管理,用他來確定能通過何種方式對文件和目錄進行訪問和操作

 

一、概念

身份:一個用戶對於一個文件或者目錄而言,具有的身份。

1)文件的權限針對三類對象進行定義

owner 屬主,縮寫u

group 屬組,縮寫g

other 其他,縮寫o

root用戶是超級管理員,但root組是一個普通組。

 

2)每個文件針對每類訪問者定義了三種主要權限

r:Read 可讀--能夠讀取文件或者目錄內容的權限

w:Write 可寫--能夠修改文件或者目錄的內容

x:eXecute 可執行

針對文件而言,x叫可執行;

針對目錄而言,x是否能夠成為一個用戶的工作目錄

 

Tips

X:針對目錄加執行權限,文件不加執行權限(因文件具備執行權限有安全隱患)

root賬戶不受文件權限的讀寫限制,執行權限受限制

 

查看示例:

 

 

 

 

Tips:解讀-rw-r--r--

 

輸出結果的第一個字段就是描述文件和目錄權限的編碼。這個字段的第一個字符代表了對象的類型

 

 

 

 

-   代表文件

d   代表目錄

I   代表鏈接

c  代表字符型設備

b  代表塊設備

n  代表網絡設備

后面的有3組三字符的編碼,分別是對應的owner、group、other組,rwx對應的權限類型在上面已經給出。

 

 

 

 

 

Tips:文件權限在對於文件和目錄時具有不同的含義

文件權限:

r(read):可讀取此文件的實際內容,如讀取文本文件的文字內容;

w(write):可以編輯、新增或是修改文件的內容(不包含刪除文件);

x(execute):該文件具有可以被系統執行的權限;

 

文件夾權限:

r:表示具有讀取目錄結構列表的權限,當你具有一個目錄的r權限時,表示你可以查詢到該目錄下的文件名數據

w:表示具有改變目錄結構的權限,包括新建文件與目錄、刪除文件與目錄、重命名文件及目錄、移動文件及目錄位置

x:代表用戶能否進入該目錄成為工作目錄

 

利用一個示例進行說明:

 

如前所述:文件/etc/fstab的other組權限為r--,他的屬主為root,屬組為root。即當將使用者更換為user10時(此時他就是other身份),此時user10的權限就是r--(只可讀)

 

此時user10可以讀取/etc/fstab,但是若對文件進行修改時,當退出保存時,會報出以下錯誤,代表user10沒有/etc/fstab。同理,若該文件是個可執行文件(如.sh),user10也不能對他執行。

 

 

 

對於目錄權限的分析:

 

可知當使用用戶user10,具備的權限是r(可讀)和x(可執行)

當一個用戶針對一個目錄具備r權限的時候,是能夠查看到該目錄下的內容的,但只限一系列文件名以及目錄名稱若目錄r權限去掉,則無法讀取這個目錄下的文件名和目錄名。

 

 

other組加回r權限,而刪去x權限,此時的user10連進入目錄都做不到了(修改權限的方法在下面繼續探討)

 

Tips:總結

只要你想一個用戶針對一個目錄可訪問:具備讀取r和執行x權限是必要的,單純的r和單純的w都是沒有任何意義的。

而針對目錄的w(寫入)很簡單,即是否能在該目錄下創建或者刪除文件

 

所以,針對目錄的權限設置,存在以下3種情況:

<1> r-x

<2> rwx

<3> ---

以下這些情況基本不存在:

r-- :僅能讀取到目錄中的文件名,不能訪問目錄

-w- : 連目錄都訪問不到,寫權限沒有意義

--x :  只能cd進入訪問目錄,不能讀寫

rw- : 連目錄都訪問不到,讀寫權限沒有意義

-wx :只能訪問目錄不能讀取目錄內容,寫權限沒有意義

 

對於文件而言的權限設置,一般存在以下幾種

r-- 可以僅僅讀取

rw- 可以讀寫

rwx 可讀可寫可執行

--- 什么權限都沒有 

r-x 可讀可執行

 

 

(3)使用數字對權限的表示

可以將rwx分別對應一個三位數的二進制,當擁有此權限時,將該位置的數字置為1,否則為0。

因此 r=4 w=2 x=1 而每種身份各自的權限是各自三個權限數字的累加

示例如下:

 

 

一、權限修改

1、修改權限

命令:chmod 修改權限 要修改權限的文件或目錄

A、記號法

 

Tips

u:擁有者 g:所屬組 o:其他人

=:直接賦予權限

+:在原基礎上加權限

-:在原基礎上減權限

 

B、數字法

 

 Tips

數字表示權限的方式如前所述。

擁有者(u)的權限:rwx=4+2+1=7

所屬組的權限(g):r-x=4+1=5

其他人的權限(o):-wx=2+1=3

 

 

2、身份修改

A、修改所屬者:chown

命令:chown 要修改的所屬者 要修改的文件或目錄

 

 

 

 

B、修改所屬組:chgrp

命令:chgrp 要修改的所屬組 要修改的文件或目錄

 

Tips使用命令修改所屬者或所屬組為user10后,管理員(root)還是可以對該目錄進行操作。所以root用戶擁有最高的權限,也可以看做無論怎么更改,root擁有系統上所有文件的所有權限

 

 

 

 

 

 

二、默認權限

 

 

 

 

創建目錄的默認權限為755,創建文件的默認權限為644

決定默認權限的是一個叫umask(反掩碼)的默認屬性,root用戶umask的值默認為0022

 

一個目錄的創建權限等於:滿權限(777)-umask值=777-022=755

一個文件的創建權限等於:滿權限(666)-umask值=666-022=644

Tips:root用戶和普通用戶的umask值不一樣的。(可以查看/etc/profile文件)

 

 

 

 

Tips修改umask值

臨時修改:直接使用命令--umask 修改后的值

永久修改:編輯配置文件/etc/profile --vim /etc/profile,修改的位置如下圖,修改后需要source /etc/profile之后永久生效。

 

 

三、特殊權限

(1)SUID

作為一個普通用戶,是否可以自己更改自己的密碼呢?答案是可以的。

 

 

 

 

Linux系統的所有用戶名和密碼均存放在文件/etc/shadow中。修改一個用戶的密碼,其實就是更改配置文件 /etc/shadow

 

由上圖可知,該文件任何人均沒有修改的權限,即便是root用戶。

但是為什么普通用戶user40卻能執行passwd命令對自己的密碼進行更改呢?

linux系統中,當執行一個命令時,其實就是執行在/usr目錄中的一個二進制可執行文件,可以使用命令which來定位到某個命令對應的二進制可執行文件(如下圖所示)

 

可以看到,命令passwd的二進制可執行文件的所屬者權限中,執行權限的位置上從x變成了s,也就是我們所說的GUID

普通文件:rwx   SUID的文件:rws 

SUID:當一個s權限出現在所屬者x位上

作用: 當一個普通用戶user40去執行一個帶有SUID的二進制文件 (passwd),那么這個用戶(test1)在執行過程中,會暫時獲得獲取到這個二進制文件(passwd)的擁有者(root)的權限后續操作比如修改文件(passwd) 這個文件的時候,會拿着(root)這個擁有者的身份去執行,這個操作僅僅對二進制文件生效。

原理:普通用戶執行passwd→/etc/shadow→root身份去執行

 

 

 

 

Tips

如果是rwS,則本身文件是沒執行權限的,僅僅獲得了SUID功能而已,SGID同樣適用。

操作命令:chmod u+s filename/directoryname

 

 

(2)SGID

SUID同理,當一個s權限出現在屬組x位上時,為SGID

A、針對二進制文件:文件執行過程中獲取文件屬組的權限。

B、針對目錄:默認情況下,我們新建一個文件或目錄的時候,它的屬組是這個用戶的初始組。

 

 

加上SGID之后,其下新建的目錄及文件會繼承該目錄的(不繼承屬主)。

操作命令:chmod g+s filename/directoryname

 

 

 

 

(3)sticky(粘滯位)

sticky bit:僅對目錄生效,若該目錄其他人other)的執行權限出現了t,那么該目錄下的文件或目錄,僅文件所有者及root用戶能刪除

操作命令:chmod o+t filename/directoryname

 

通過目錄可以看出里面的文件f3和f5的所屬者分別對應root和user10。此時如果使用user20對這兩個文件進行刪除操作,會提示因沒有權限而被拒絕。

 

Tips

超級權限數值法:suid 4XXX / sgid 2XXX / sticky bit 1XXX

 

 

4)寫保護特殊權限:i和a

操作方法:

修改:chattr +i/+a filename

列出:lsattr filename

+i:硬寫保護,只能讀不能寫,不能刪除

 

加了硬寫保護后,不能刪除,不能通過重定向修改文件。

 

也不能用vim直接修改

 

 

+a:軟寫保護,只能讀不能寫,不能刪除原有內容,但是能通過重定向追加更新內容

 

 

 

可以通過重定向的方式(echo)修改文件

 

 

5)給特定用戶設置對應的權限--ACL

需要給不同用戶設置對應不同的文件(目錄)權限時,可以通過設置文件訪問控制列表,即ACL(Access Control List)規則來實現。

查看acl:getfacl

設置acl:setfacl

 

A、通過getfacl獲取文件(目錄)的ACL列表

 

 

B、setfacl設置ACL規則

為文件設置:

setfacl -m u:user10:rw- /tmp/testprivillege/f1

 

 

 

為目錄(若是遞歸)設置:

setfacl -Rm u:user20:rwx /tmp/testprivillege/

 

 

 

由於是遞歸的添加,可以看到該目錄下的文件也會添加上對應的規則

 

 

 

 

C、刪除ACL規則

刪除一條記錄:

setfacl -x u:user20 /tmp/testprivillege/f1

 

 

 

刪除所有記錄:

setfacl -b /tmp/testprivillege/f1

 

 

D、默認ACL:定義用戶對於文件的ACL的最大權限

設置默認ACL:

[root@servera test_privillege]# setfacl -d 權限 /tmp/testprivillege 

移除默認ACL:

[root@servera test_privillege]# setfacl -k /tmp/testprivillege

 

Tips:

參考鏈接:https://www.cnblogs.com/ftl1012/p/setfacl.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM