Linux系統中一切都是文件,文件和目錄的所屬與權限——來分別規定全部者、全部組、其他人的讀,寫,執行權限。算法
讀(read),寫(write),執行e(execute)簡寫即爲(r,w,x),亦可用數字(4,2,1)表示vim
例以下圖中的文件全部者(屬主)爲root,全部組(屬組)爲root,文件名爲instsall.log,權限位的第一個減號」–「表明的是文件類型:-:普通文件,d:目錄文件,l:連接文件,b:塊設備文件,c:字符設備文件,p:管道文件ide
文件的權限爲r w -r - -r- -也就是分別表示全部者(屬主)有讀寫權限,全部組(屬組)有讀權限,其他人也僅有讀權限。測試
權限的相關知識:ui
三種權限:spa
權限3d |
英文代號日誌 |
數字代號orm |
文件權限說明blog |
目錄權限說明 |
讀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- r—r-- 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權限管理中必須會的內容:
一、熟悉r讀、w寫、x執行權限
二、熟悉ls -l和ls -ld查看文件、目錄屬性中的權限
三、用chmod修改u、g、o權限
四、用chown修改文件的屬主和屬組
五、明白umask的做用,熟悉權限值是如何計算的
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權限功能。
功能:讓命令的執行者臨時擁有命令的屬主(root)權限(僅對有可執行權限的二進制程序[即命令]有效)
設置suid權限的方法:chmod u+s 文件名
例1:依次查看/bin/cat、/etc/shadow文件的屬性,切換到u1用戶,用cat 查看/etc/shadow文件,exit退出u1的登陸。
功能:在該目錄中建立的文件自動繼承此目錄的組屬性(只能夠對目錄設置),一般用於作文件共享時對某個目錄設置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目錄
功能:只容許root和文件的屬主刪除目錄中的文件(僅對目錄有效,一般用於作文件共享的目錄)
添加t權限的方法:chmod o+t 目錄
通常老師但願學生能夠將做業上傳到某個特定目錄——但爲了不某些小破壞份子,想禁止刪除其餘人文件的話,那就要設置SBIT位了,固然也能夠叫作特殊權限位之粘滯位(粘着位)。
案例:查看/tmp目錄的權限,建立用戶u一、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的緣故,一樣會有沒法刪除其餘人的文件的狀況。
問題:如何讓root也沒法刪除某個文件?
答:給這個文件用chattr設置i或a屬性便可。這樣能夠防止root用戶誤刪除重要文件。
問題:文件權限除了讀寫執行與SUID、SGID、SBIT外還有一種隱藏屬性,例如明明有權限刪除某個文件卻報錯了,或者僅能爲某個文件追加內容而不能減小內容,遇到這種很「奇怪」的文件,就要懷疑是文件被設置隱藏屬性了。
chattr命令用於設置文件的隱藏屬性(特殊屬性),格式爲:「chattr [選項] 文件」。
選項 |
做用 |
+/-i |
將沒法對文件內容進行修改,若對目錄設置後則僅能修改子文件而不能新建或刪除。 |
+/-a |
僅容許補充(追加)內容.沒法覆蓋/刪除(Append Only)。一般用於日誌文件。 |
S |
文件內容變動後當即同步到硬盤(sync)。 |
s |
完全從硬盤中刪除,不可恢復(用0填充原文件所在硬盤區域)。 |
A |
再也不修改這個文件的最後訪問時間(atime)。 |
b |
再也不修改文件或目錄的存取時間。 |
D |
檢查壓縮文件中的錯誤。 |
d |
當使用dump命令備份時忽略本文件/目錄。 |
c |
默認將文件或目錄進行壓縮。 |
u |
當刪除此文件後依然保留其在硬盤中的數據,方便往後恢復。 |
t |
讓文件系統支持尾部合併(tail-merging)。 |
X |
能夠直接訪問壓縮文件的內容。 |
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 |