linux中,每個檔案擁有三種許可權
f dir許可權位最佳實戰
許可權 | 對檔案的影響 | 對資料夾的影響 |
---|---|---|
r | 可讀取/閱讀檔案的內容 | 可以列出目錄內容,無法cd,ls -l看到檔名,屬性是亂碼. |
w | 可修改檔案的內容; 如果沒r,vim可以強制寫入,echo可以重定向 | 可以在目錄中建立,刪除,修改目錄下檔名(前面3個功能都需要有x), 檔案的刪除受父目錄的影響,因為檔名在父目錄的block裡存著,和檔案本身許可權無關 |
x | 可以作為命令執行,root只需x, 普通使用者需r+x | 可以進入dir; 沒r無法列出,沒w無法刪除和建立檔案,重新命名檔案 |
f | 說明 |
---|---|
r | 閱讀 |
-w- | 重定向寫入 |
--x | root執行 |
r-x | 普通使用者執行 |
dir | 說明 |
---|---|
r | 列出檔名字 |
r-x | 列出檔名字+進入dir+屬性 |
rwx | 列出檔名字+進入dir+屬性,新建,刪除,改名檔案 |
為何linux ext4檔案系統目錄預設大小是4k?
ext4檔案刪除&訪問原理
演示環境
使用者測試準備:
[root@maotai ~]# groupadd incahome # 一個家庭(maotai, maomao的家)
[root@maotai ~]# usermod maotai -g incahome # 讓家庭主人maotai屬於incahome這個家(模擬user)
[root@maotai ~]# useradd maomao -g incahome # 讓家庭主人maomao屬於incahome這個家(模擬user)
[root@maotai ~]# useradd test # 外面的人,主人及家庭成員以外的人(模擬其他人other)
建立檔案的測試準備
[root@maotai ~]# mkdir /maotai -p
[root@maotai ~]# echo "echo maotailinux" >/maotai/test.sh
[root@maotai ~]# chmod +x /maotai/test.sh
[root@maotai ~]# cat /maotai/test.sh
echo maotailinux
[root@maotai ~]# ls -l /maotai/test.sh
-rwxr-xr-x 1 root root 17 Dec 6 04:38 /maotai/test.sh
[root@maotai ~]# ls -l /maotai/test.sh
-rwxr-xr-x 1 root root 17 Dec 6 04:38 /maotai/test.sh
結論1: maotai,maomao,test三個使用者擁有同樣的其他使用者許可權,即讀和執行,沒有寫的許可權。
[root@maotai ~]# chown maotai.incahome /maotai/test.sh
[root@maotai ~]# ll /maotai/test.sh
-rwxr-xr-x 1 maotai incahome 17 Dec 6 04:38 /maotai/test.sh
結論2:
maotai 擁有對應使用者的許可權,即讀寫和執行許可權。
maomao 擁有對應使用者組(incahome)的許可權,即讀和執行的許可權,沒有寫的許可權.
test 擁有對應其他使用者的許可權,即讀和執行的許可權,沒有寫的許可權。
[root@maotai ~]# ll /maotai/test.sh
-rwxr-xr-x 1 maotai incahome 17 Dec 6 04:38 /maotai/test.sh
[root@maotai ~]# chmod g+w,o-x /maotai/test.sh # 給使用者組加上w許可權,給其他使用者去掉x許可權。
[root@maotai ~]# ls -l /maotai/test.sh
-rwxrwxr-- 1 maotai incahome 27 Dec 6 04:59 /maotai/test.sh
總結測試結論:
Linux普通檔案的讀寫執行許可權說明:
1.可讀r: 表示有**讀取,閱讀**檔案內容的許可權;
2.可寫w: 表示具有**新增,修改**檔案內容的許可權
1.如果沒有r配合,那麼**vi**會提示無法編輯,(但可強制編輯),**echo**可以重定向或追加。
2.特別提醒:**刪除檔案(修改檔名等)**的許可權是**受父目錄的許可權控制**,和檔案本身許可權無關。
檔名是儲存在上一級目錄的block裡。所以要看父目錄有沒有許可權,才能執行刪除。
3.可執行x: 表示具有執行檔案的許可權。
1.檔案本身要能夠執行
2.**普通使用者**同時還具備r的許可權才能執行
3.**root**只要有**x的許可權**就能執行。
總結Linux目錄的讀、寫、執行許可權說明
1.可讀r:表示具有瀏覽目錄下面檔案及子目錄的許可權,即ls dir。
a、如果沒有x許可權,不能放進目錄裡,即無法cd dir。
b、如果沒有x許可權,ls列表時可以看到所有檔名,但是會提示無許可權訪問目錄下的檔案。
c、如果ls -l列表,所有的屬性會帶有問號,也會提示無許可權訪問目錄下的檔案,但是可以看到所有檔名。
2.可寫w: 表示具有增加、刪除或修改目錄內檔名(一般指檔名)的許可權,需要x許可權配合。
3.可執行x: 表示具有進入目錄的許可權,例如cd dir。
但是沒有r無法列表檔案及目錄,沒有w無法新建和刪除。
注意: 預設許可權是安全許可權的臨界點,工作中儘量給這個臨界點,或者小於臨界點,不要大於臨界點。
如下所示,超級使用者建立目錄預設是755,檔案是644.
[root@n1 maotai]# mkdir dir
[root@n1 maotai]# touch file
[root@n1 maotai]# ls -lrt
drwxr-xr-x 2 root root 4096 2月 8 11:05 dir
-rw-r–r– 1 root root 0 2月 8 11:06 file
檔案的時間戳
屬性 | 解釋 |
---|---|
檔案的 Access time | atime 讀取檔案/執行檔案 時更改的。如cat 1.log |
檔案的 Modified time | mtime 寫入檔案時 隨檔案內容的更改而更改的。如echo 1 > alog |
檔案的 Create time | ctime 寫入檔案/更改所有者/許可權/連結 設定時隨 Inode的內容更改而更改的。如ln if.sh if1.sh |
影響範圍及區別 | atime >= ctime >= mtime |
umask對檔案計算結果為奇數時加1
umask奇數位許可權問題--這種計算不靠譜
檔案許可權遇到奇數要在奇數位-1 ,資料夾不變
檔案許可權計算小結論----這種靠譜補一些
檔案許可權計算
建立檔案預設最大許可權為666 (-rw-rw-rw-),預設建立的檔案沒有可執行許可權x位。
對於檔案來說,umask的設定是在假定檔案擁有八進位制666的許可權上進行的,檔案的許可權就是666減去umask(umask的各個位數字也不能大於6,如,077就不符合條件)的掩碼數值;
重點在接下來的內容,如果umask的部分位或全部位為奇數,那麼,在對應為奇數的檔案許可權位計算結果分別再加1就是最終檔案許可權值。
目錄許可權計算
建立目錄預設最大許可權777(-rwx-rwx-rwx),預設建立的目錄屬主是有x許可權,允許使用者進入。
對於目錄來說,umask的設定是在假定檔案擁有八進位制777許可權上進行,目錄八進位制許可權777減去umask的掩碼數值。
檔案許可權的一般計算方法:
預設檔案許可權計算方法
1)假設umask值為:022(所有位為偶數)
6 6 6 ==>檔案的起始許可權值
0 2 2 - ==>umask的值
---------
6 4 4
2)假設umask值為:045(其他使用者組位為奇數)----需要額外處理
6 6 6 ==>檔案的起始許可權值
0 4 5 - ==>umask的值
---------
6 2 1 ==>計算出來的許可權。由於umask的最後一位數字是5,所以,在其他使用者組位再加1。
0 0 1 +
---------
622 ==>真實檔案許可權
預設目錄許可權計算方法(不需要額外處理)
7 7 7 ==>目錄的起始許可權值
0 2 2 - ==>umask的值
---------
7 5 5