linux文件權限總結(創建root不可以刪除文件、只可追加的日志文件等)


文件類型

對於文件和目錄的訪問權力是根據讀訪問,寫訪問,和執行訪問來定義的。

我們來看一下 ls 命令的輸出結果

[root@iZ28dr6w0qvZ test]# ls -l
總用量 72
-rw-r--r--  1 root root 62199 3月   2 11:21 lsbin.txt
drwxr-xr-x 38 root root  4096 2月  29 16:11 Pics
-rw-r--r--  1 root root    54 2月  29 14:22 text.txt
-rw-r--r--  1 root root     0 3月   1 17:07 two words.txt

列表的前十個字符是文件的屬性。

這十個字符的第一個字符表明文件類型。

常用的文件類型(還有其它的,不常見類型): 

屬性 文件類型
- 一個普通文件
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個二進制數字,這種對應關系,正好映射到用來存儲文件模式所使用的方案上。下表展示了 我們所要表達的意思:

Octal Binary File Mode
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處理能力(標識)的進程能夠施加該選項。  

示例一:創建不可刪除的文件

# 設置
root@ubuntu:/tmp/test# chattr +i chenqionghe.txt
root@ubuntu:/tmp/test# rm -f chenqionghe.txt
rm: cannot remove 'chenqionghe.txt': Operation not permitted
# 解除
root@ubuntu:/tmp/test# lsattr chenqionghe.txt
----i---------e--- chenqionghe.txt
# 使用lsattr查看設置的參數 root@ubuntu:/tmp/test# chattr -i chenqionghe.txt root@ubuntu:/tmp/test# rm -f chenqionghe.txt  

示例二:創建只可能追加數據不能刪除的文件(不可使用vim,不可echo >,只能使用echo >>追加)

root@ubuntu:~# chattr +a chenqionghe.txt
root@ubuntu:~# rm chenqionghe.txt
rm: cannot remove 'chenqionghe.txt': Operation not permitted
root@ubuntu:~# echo 'aa' > chenqionghe.txt
-su: chenqionghe.txt: Operation not permitted
root@ubuntu:~# echo 'aa' >> chenqionghe.txt

  


免責聲明!

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



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