權限管理

文件權限的種類:

1、UGO權限(即普通權限)

2、FACL文件訪問控制列表

3、文件的特殊權限(三種S權限)

4、文件的隱藏屬性attribute (文件系統權限)

 

 

 

1、文件的UGO權限基礎(即普通權限)

Linux系統中一切都是文件,文件和目錄的所屬權限——來分別規定所有者、所有組、其餘人的讀,寫,執行權限。

讀(read),寫(write),執行e(execute)簡寫即爲(r,w,x),亦可用數字(4,2,1)表示

例如下圖中的文件所有者(屬主)爲root,所有組(屬組)爲root,文件名爲instsall.log,權限位的第一個減號”“代表的是文件類型:-:普通文件,d:目錄文件,l:鏈接文件,b:塊設備文件,c:字符設備文件,p:管道文件

文件的權限爲r w -r - -r- -也就是分別表示所有者(屬主)有讀寫權限所有組(屬組)有讀權限其餘人也僅有讀權限

 

權限的相關知識:

三種權限:

權限

英文代號

數字代號

文件權限說明

目錄權限說明

讀read

r

4

能用cat、head、vi查看文件內容

能用ls命令查看

寫write

w

2

能用echo、vi、vim添加內容到文件中

即允許修改文件內容

能用mkdir、touch執行創建操作

執行exec

x

1

命令、程序、腳本必須得有x執行權限,才能運行

能用cd命令打開此目錄

7=4+2+1=rwx     5=4+1=r-x    6=4+2=rw-    4=r

777=rwx  rwx  rwx    755=rwx r-x r-x     644=rw- rr--  600=rw-  ---  ---

 

權限中的三類用戶:

用戶類別

英文代號

權限的範圍

用戶自己user

u

權限中的前3位

本組用戶group

g

權限中的中間3位

其他用戶other

o

權限中的最後3位

所有用戶all

a

會影響到權限中的9位

 

chmod命令

說明:chmod是change  mode的縮寫。用whatis  chmod和whereis  chmod可分別查詢chmod命令的相關信息。

功能:修改權限的命令:chmod  [選項]  權限  文件名或目錄名

常用選項:--help

-v    顯示執行過程

-R    遞歸修改目錄及其子目錄的所有文件權限。

 

權限修改中的代號:

u

g

o

a

+

-

=

用戶

其他用戶

所有用戶

添加權限

減掉權限

設置新的權限

 

實例:用head命令將/etc/passwd文件中的前3行導入到/b.txt文件中,然後執行以下權限修改操作。

head   -3   /etc/passwd  > /b.txt     (>大於號是重定向覆蓋輸出,即將原本顯示在屏幕上的信息覆蓋寫入到>指定的文件中)

cat  /b.txt

ls  -l   /b.txt

chmod  -v  0   /b.txt        清除文件的所有權限

chmod  -v  u+rw   /b.txt       給文件的屬主(user)權限設置成rw可讀可寫

chmod  -v  g+r    /b.txt       給文件的屬組(group)權限設置成r可讀

chmod  -v  o+r    /b.txt       給文件的其他(other)用戶權限設置成r可讀

chmod  -v   a+x   /b.txt       給文件的所有(all)用戶設置x可執行權限

chmod  -v   u=rw,g=r,o=r /b.txt   或chmod  -v  644   /b.txt   給文件的屬主、屬組、其他人重新授權

chmod  -v   a-r   /b.txt       給文件的所有用戶減掉r可讀的權限

rm  -f   /b.txt      刪除/b.txt文件

 

 

chown命令

說明:chown是change  owner的縮寫。用whatis  chown和whereis  chown可分別查詢chown命令的相關信息。

功能:修改文件的擁有者(屬主)和擁有組(屬組):chown  [選項]   用戶名:組名     文件名

常用選項:--help

-v    顯示操作過程

-R    遞歸修改目錄及其子目錄的所有屬主、屬組。

 

實驗1:在根目錄下創建一個文件/a.mp3,然後查看文件的詳細信息,修改文件的屬主爲bin,再修改文件的屬組爲adm,最後同時修改文件的屬主和屬組爲root,刪除此/a.mp3文件。

cd   /         進入根目錄

touch   a.mp3      在當前目錄創建a.mp3文件

ls  -l   /a.mp3     查/a.mp3文件的權限

chown   -v   bin   /a.mp3       修改/a.mp3文件的屬主爲bin

ll  a.mp3

chown   -v    :adm   /a.mp3      修改/a.mp3文件的屬組爲adm

chown   -v   root.root   /a.mp3

rm  -f  /a.mp3

 

 

 

umask命令

文件權限的掩碼:umask  [權限]

umask默認值:root用戶的是022,普通用戶的是002。

umask的功能:會影響到用戶創建的新文件、目錄的最終權限。

實驗測試:用mkdir在根目錄下創建/dir目錄,用touch創建文件/file,然後分別查看/dir、/file的詳細信息,最後刪除文件和目錄。

umask     查看當前的umask值,它表示要去掉的權限

mkdir   /dir

touch   /file

ls  -ld   /dir    查看/dir目錄的詳細信息,也可以ll  -d  /dir

ls  -l   /file     查看/file文件的詳細信息,也可以ll  /file

rm  -rf  /dir  /file

文件、目錄最終權限的算法:滿權限-umask權限=最終權限

目錄的默認滿權限:777     例如:777-022=755     777-031=746       rwx  rwx  rwx

文件的默認滿權限:666     例如:666-022=644     666-031=646       rw-  rw-   rw-

滿權限

777

666

666

umask

022

022

031

計算過程

 

 

777-022

rwx  rwx  rwx

---   -w-   -w-

666-022

rw-  rw-  rw-

---   -w-   -w-

666-031

rw-  rw-   rw-  滿權限

---   -wx   --x  要去掉的權umask限

權限結果

rwx  r-x   r-x

即755

rw-  r--   r--

即644

rw-   r--  rw-

即646

---------------------

UGO權限管理中必須會的內容:

1、熟悉r讀、w寫、x執行權限

2、熟悉ls  -l和ls  -ld查看文件、目錄屬性中的權限

3、用chmod修改u、g、o權限

4、用chown修改文件的屬主和屬組

5、明白umask的作用,熟悉權限值是如何計算的

 

 

 

2、FACL文件訪問控制列表

FACL:文件訪問控制列表file  access  control  list,控制文件和目錄訪問權限的一種方式,FACL的級別高於普通的UGO權限(即用chmod設置的權限)。

 

facl應用場合:A用戶創建的某個文件,精確到只想讓B、C用戶讀寫,就可以用FACL權限實現。

 

getfacl命令

查看文件、目錄的FACL權限:getfacl    文件名

例如:getfacl   /etc/passwd

說明:文件和目錄的默認ACL權限跟UGO權限的值相同。

 

setfacl命令

設置文件的ACL權限:setfacl   [選項]   權限  文件名

常用選項:

選項

功能

選項

功能

--help

顯示命令幫助

-k

刪除默認的ACL權限

-m

即modify,設置或修改ACL權限

-R

遞歸設置ACL權限(對目錄及其子文件)

-x

刪除指定用戶的文件的ACL權限

-d

即default,設置默認的ACL權限(僅用於目錄,目錄中新創建的文件會繼承ACL權限)

-b

刪除所有的ACL權限



 

setfacl案例

需求:進入當前用戶的家目錄,在當前目錄中創建a.txt文件,對a.txt文件設置ACL權限,讓adm用戶對此文件有rw-權限,讓lp組對此文件有r--權限。查看a.txt文件的ACL權限。最後刪除a.txt文件。

功能

命令操作

進入當前用戶的家目錄

cd   或  cd  ~

在當前目錄下創建a.txt文件

touch  a.txt

查a.txt文件的ACL權限

getfacl  a.txt

在a.txt文件上添加adm用戶的ACL權限

setfacl  -m  u:adm:rw-   a.txt

在a.txt文件上添加bin組的ACL權限

setfacl  -m  g:bin:rw-   a.txt

查a.txt文件的ACL權限

getfacl  a.txt

強制刪除a.txt文件

rm  -f   a.txt

注意:如果ACL權限不起作用,說明分區掛載時沒有用acl選項來啓動文件系統的ACL權限功能。

 

3、文件的特殊權限(三種S權限)

SUID權限:

功能:命令的執行者臨時擁有命令的屬主(root)權限(僅對有執行權限的二進制程序[即命令]有效

設置suid權限的方法:chmod  u+s  文件名

例1:依次查看/bin/cat、/etc/shadow文件的屬性,切換到u1用戶,用cat 查看/etc/shadow文件,exit退出u1的登錄。

 

SGID權限:

功能:在該目錄中創建的文件自動繼承此目錄的屬性只可以對目錄設置通常用於做文件共享時對某個目錄設置g+s權限

設置SGID權限:chmod  g+s   目錄名

比如我們將某個部門的工作目錄給予了SGID權限,這樣所有人創建的文件都歸相同的工作組,這樣方便以後的管理。

chmod命令用於修改文件或目錄的權限,格式爲:”chmod [參數] 權限 文件或目錄名稱”。

chown命令用於修改文件或目錄的所屬主與所屬組,格式爲:“chown [參數] 所屬主:所屬組 文件或目錄名稱”。

chmod與chown的命令參數很簡單記——對於文件不加參數,遇到目錄加大寫-R(遞歸,修改目錄內所有文件的屬性)

創建工作目錄並給予SGID權限:

mkdir  /d1

chmod  -v  777  /d1

chmod  -v  g+s  /d1

切換至普通用戶u1,在該目錄創建文件:

su   u1

touch   /d1/a

ll  -d  /d1/a      驗證此文件的屬組是哪個組,會發現a文件的屬組跟/d1目錄相同,都是屬於root組。

exit   退出u1用戶的登錄

rm  -rfv  /d1    刪除/d1目錄

 

 

SBIT(Sticky Bit)權限:

功能:只允許root和文件的屬主刪除目錄中的文件(僅對目錄有效,通常用於做文件共享的目錄)

添加t權限的方法:chmod  o+t   目錄

一般老師希望學生可以將作業上傳到某個特定目錄——但爲了避免某些小破壞份子,想禁止刪除其他人文件的話,那就要設置SBIT位了,當然也可以叫做特殊權限位之粘滯位(粘着位)

 

案例:查看/tmp目錄的權限,創建用戶u1、u2,臨時切換到u1用戶,創建文件/tmp/u1f,設置u1f文件權限爲777,退出u1用戶的登錄,然後切換到u2用戶,用u2用戶刪除/tmp/u1f文件,看是否能刪除。

查看/tmp目錄的屬性:ls  -ld   /tmp     發現/tmp目錄有t權限

創建用戶u1:useradd  u1

創建用戶u2:useradd  u2

切換到u1用戶:  su  - u1

創建文件/tmp/u1f: touch  /tmp/u1f

修改/tmp/u1f權限爲777: chmod  -v  777   /tmp/u1f

退出u1用戶的登錄:exit

切換到u2用戶:su   u2

查看/tmp/u1f文件的屬性:ll  /tmp/u1f

刪除/tmp/u1f文件:rm  -f  /tmp/u1f      會提示“無法刪除”(因爲/tmp目錄有t權限)。

退出u2用戶的登錄:exit

 

強調:刪除該文件時會提示錯誤,即便權限很充足,但因爲特殊權限SBIT的緣故,同樣會有無法刪除其他人的文件的情況

4、文件的隱藏屬性attribute (文件系統權限)

文件的隱藏屬性attribute (文件系統權限)

問題:如何讓root也無法刪除某個文件?

答:給這個文件用chattr設置i或a屬性即可。這樣可以防止root用戶誤刪除重要文件。

 

問題:文件權限除了讀寫執行與SUID、SGID、SBIT外還有一種隱藏屬性,例如明明有權限刪除某個文件卻報錯了,或者僅能爲某個文件追加內容而不能減少內容,遇到這種很“奇怪”的文件,就要懷疑是文件被設置隱藏屬性了。

chattr命令

chattr命令用於設置文件的隱藏屬性(特殊屬性),格式爲:“chattr [選項] 文件”。

選項

作用

+/-i

將無法對文件內容進行修改,若對目錄設置後則僅能修改子文件而不能新建或刪除。

+/-a

僅允許補充(追加)內容.無法覆蓋/刪除(Append Only)。通常用於日誌文件。

S

文件內容變更後立即同步到硬盤(sync)。

s

徹底從硬盤中刪除,不可恢復(用0填充原文件所在硬盤區域)。

A

不再修改這個文件的最後訪問時間(atime)。

b

不再修改文件或目錄的存取時間。

D

檢查壓縮文件中的錯誤。

d

當使用dump命令備份時忽略本文件/目錄。

c

默認將文件或目錄進行壓縮。

u

當刪除此文件後依然保留其在硬盤中的數據,方便日後恢復。

t

讓文件系統支持尾部合併(tail-merging)。

X

可以直接訪問壓縮文件的內容。

 

 

 

lsattr命令

lsattr命令用於顯示文件的隱藏權限,格式爲:“lsattr [選項] 文件”。

選項

作用

a

顯示所有文件和目錄。

l

顯示隱藏屬性的全稱(默認簡寫成一個字母)。

R

遞歸處理,將指定目錄下的所有文件及子目錄一併處理。

d

若目標文件爲目錄,請加此參數。

任務:用root用戶體驗文件的隱藏權限i、a。

功能

命令操作

將echo命令後的字符覆蓋寫入到/a.txt文件中

echo  hello  > /a.txt

查看/a.txt文件內容

cat  /a.txt

查看/a.txt文件的

lsattr   /a.txt

給文件添加隱藏權限a

chattr  +a   /a.txt

將echo後的字符追加寫入到/a.txt文件中

echo  hi  >> /a.txt

查看文件內容

cat  /a.txt

刪除/a.txt文件,此時無法刪除,因爲有a權限

rm  -f  /a.txt

給/a.txt文件去掉a權限

chattr  -a   /a.txt

刪除/a.txt文件,此時正常刪除

rm  -f  /a.txt

 



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