2021-05-12 14:32:11
Linux建立root不可修改刪除而只可追加許可權的檔案
檔案型別
對於檔案和目錄的存取權力是根據讀存取,寫存取,和執行存取來定義的。現在介紹Linux檔案系統兩種很實用的許可權i和a。
使用 ls –l 命令可以顯示檔案的屬性以及檔案所屬的使用者和組。
列表的前十個字元是檔案的屬性。
這十個字元的第一個字元表明檔案型別。
常用的檔案型別(還有其它的,不常見型別):
屬性 | 檔案型別 |
---|---|
- | 一個普通檔案 |
d | 一個目錄 |
l | 一個符號連結。注意對於符號連結檔案,剩餘的檔案屬性總是"rwxrwxrwx",而且都是 虛擬值。真正的檔案屬性是指符號連結所指向的檔案的屬性。 |
c | 一個字元裝置檔案。這種檔案型別是指按照位元組流,來處理資料的裝置。 比如說終端機,或者數據機 |
b | 一個塊裝置檔案。這種檔案型別是指按照資料塊,來處理資料的裝置,例如一個硬碟,或者 CD-ROM 盤。 |
剩下的九個字元,叫做檔案模式,代表著檔案所有者,檔案組所有者,和其他人的讀,寫,執行許可權。
常用的Linux檔案許可權
- 444 r--r--r--
- 600 rw-------
- 644 rw-r--r--
- 666 rw-rw-rw-
- 700 rwx------
- 744 rwxr--r--
- 755 rwxr-xr-x
- 777 rwxrwxrwx
讀取的許可權等於4,用r表示;
寫入的許可權等於2,用w表示;
執行的許可權等於1,用x表示;
通過4、2、1的組合,得到以下幾種許可權:
0(沒有許可權);4(讀取許可權);5(4+1 | 讀取+執行);6(4+2 | 讀取+寫入);7(4+2+1 | 讀取+寫入+執行)
安全許可權的臨界點
1.目錄755,檔案644是相對安全的許可權;
2.使用者為root以及使用者組為root
chmod 更改許可權
通過八進位制表示法,我們使用八進位制數位來設定所期望的許可權模式。因為每個八進位制數位代表了 3個二進位制數位,這種對應關係,正好對映到用來儲存檔案模式所使用的方案上。下表展示了 我們所要表達的意思:
八進位制 | 二進位制 | 檔案模式 |
---|---|---|
0 | 000 | --- |
1 | 001 | --x |
2 | 010 | -w- |
3 | 011 | -wx |
4 | 100 | r-- |
5 | 101 | r-x |
6 | 110 | rw- |
7 | 111 | rwx |
通過傳遞引數 “600”,我們能夠設定檔案所有者的許可權為讀寫許可權,而刪除使用者組和其他人的所有 許可權。雖然八進位制到二進位制的對映看起來不方便,但通常只會用到一些常見的對映關係: 7 (rwx),6 (rw-),5 (r-x),4 (r--),和 0 (---)。
chmod 命令支援一種符號表示法,來指定檔案模式。符號表示法分為三部分:更改會影響誰, 要執行哪個操作,要設定哪種許可權。通過字元 “u”,“g”,“o”,和 “a” 的組合來指定 要影響的物件,
chmod 命令符號表示法
命令 | 解釋 |
u+x | 為檔案所有者新增可執行許可權。 |
u-x | 刪除檔案所有者的可執行許可權。 |
+x | 為檔案所有者,使用者組,和其他所有人新增可執行許可權。 等價於 a+x。 |
o-rw | 除了檔案所有者和使用者組,刪除其他人的讀許可權和寫許可權。 |
go=rw | 給群組的主人和任意檔案擁有者的人讀寫許可權。如果群組的主人或全域性之前已經有了執行的許可權,他們將被移除。 |
u+x,go=rw | 給檔案擁有者執行許可權並給組和其他人讀和執行的許可權。多種設定可以用逗號分開。 |
符號表示法的優點是, 允許你設定檔案模式的單個組成部分的屬性,而沒有影響其他的部分。
chown - 更改檔案所有者和使用者組
引數 | 結果 |
---|---|
cqh | 把檔案所有者從當前屬主更改為使用者 cqh。 |
cqh:users | 把檔案所有者改為使用者 cqh,檔案使用者組改為使用者組 users。 |
:cqh | 把檔案使用者組改為組cqh,檔案所有者不變。 |
cqh: | 檔案所有者改為使用者 cqh,檔案使用者組改為,使用者 cqh 登入系統時,所屬的使用者組。 |
chattr和lsattr -檔案或者目錄的隱藏屬性
chattr可以建立root都不能修改的檔案,但是它並不適合所有的目錄,不能保護/、/dev、/tmp、/var目錄
lsattr可以顯示chattr命令設定的檔案屬性
與chmod這個命令相比,chmod只是改變檔案的讀寫、執行許可權,更底層的屬性控制是由chattr來改變的。
chattr命令的用法:chattr [ -RVf ] [ -v version ] [ mode ] files…
最關鍵的是在[mode]部分,[mode]部分是由+-=和[ASacDdIijsTtu]這些字元組合的,這部分是用來控制檔案的
屬性。
+ :在原有引數設定基礎上,追加引數。
- :在原有引數設定基礎上,移除引數。
= :更新為指定引數設定。
A:檔案或目錄的 atime (access time)不可被修改(modified), 可以有效預防例如手提電腦磁碟I/O錯誤的發生。
S:硬碟I/O同步選項,功能類似sync。
a:即append,設定該引數後,只能向檔案中新增資料,而不能刪除,多用於伺服器紀錄檔檔案安全,只有root才能設定這個屬性。
c:即compresse,設定檔案是否經壓縮後再儲存。讀取時需要經過自動解壓操作。
d:即no dump,設定檔案不能成為dump程式的備份目標。
i:設定檔案不能被刪除、改名、設定連結關係,同時不能寫入或新增內容。i引數對於檔案 系統的安全設定有很大幫助。
j:即journal,設定此引數使得當通過mount引數:data=ordered 或者 data=writeback 掛 載的檔案系統,檔案在寫入時會先被記錄(在journal中)。如果filesystem被設定引數為 data=journal,則該引數自動失效。
s:保密性地刪除檔案或目錄,即硬碟空間被全部收回。
u:與s相反,當設定為u時,資料內容其實還存在磁碟中,可以用於undeletion。
各引數選項中常用到的是a和i。a選項強制只可新增不可刪除,多用於紀錄檔系統的安全設定。而i是更為嚴格的安全設定,只有superuser (root) 或具有CAP_LINUX_IMMUTABLE處理能力(標識)的進程能夠施加該選項。
建立不可刪除的檔案
i:不可修改許可權 例:chattr u+i filename 則filename檔案就不可修改,無論任何人,如果需要修改需要先刪除i許可權,用chattr -i filename就可以了。檢視檔案是否設定了i許可權用lsattr filename。
root@linuxidc:/home/linuxidc/www.linuxidc.com# lsattr linuxmi.txt
-----a--------e--- linuxmi.txt
root@linuxidc:/home/linuxidc/www.linuxidc.com# chattr +i linuxmi.txt
chattr: 沒有那個檔案或目錄 嘗試對linuxmi.txt進行stat呼叫時
root@linuxidc:/home/linuxidc/www.linuxidc.com# chattr +i linuxmi.txt
root@linuxidc:/home/linuxidc/www.linuxidc.com# rm -f linuxmi.txt
rm: 無法刪除'linuxmi.txt': 不允許的操作
root@linuxidc:/home/linuxidc/www.linuxidc.com# lsattr linuxmi.txt
----i---------e--- linuxmi.txt
root@linuxidc:/home/linuxidc/www.linuxidc.com# chattr -i linuxmi.txt
root@linuxidc:/home/linuxidc/www.linuxidc.com# rm -f linuxmi.txt
建立只可能追加資料而不能刪除的檔案(不可使用vim,不可echo >,只能使用echo >>追加)
a:只追加許可權, 對於紀錄檔系統很好用,這個許可權讓目標檔案只能追加,不能刪除,而且不能通過編輯器追加。可以使用chattr +a設定追加許可權。
root@linuxidc:/home/linuxidc/www.linuxidc.com# chattr +a linuxmi.txt
root@linuxidc:/home/linuxidc/www.linuxidc.com# rm linuxmi.txt
rm: 無法刪除'linuxmi.txt': 不允許的操作
root@linuxidc:/home/linuxidc/www.linuxidc.com# echo 'linuxidc.com' > linuxmi.txt
-su: linuxmi.txt: 不允許的操作
root@linuxidc:/home/linuxidc/www.linuxidc.com# echo 'linuxidc.com' >> linuxmi.txt
相關文章