今天來講Linux中重要的一個概念: 檔案權限
首先先來看一下 ls -l
中的其中幾行輸出
-rwxr-xr-x 1 c8763yee c8763yee 94 Sep 19 12:49 a.sh
drwxr-x--- 5 c8763yee c8763yee 4096 Oct 2 14:50 c8763yee/
lrwxrwxrwx 1 root root 4 Nov 24 2022 vigr -> vipw*
crw-rw-rw- 1 root kvm 10, 232 Oct 2 12:09 kvm
brw-rw-rw- 1 root disk 7, 7 Oct 2 12:09 loop7
其中第一個字母代表檔案類型:
- -
: 檔案
- d
: 目錄
- l
: link file
- b
: 裝置中周邊設備
- c
: I/O serial device
後面9個字母代表該檔案的基本權限
其中基本權限也可以以數字表示,如上面的第一個: rwxr-xr-x
可以用數字表示為755,也就是owner: read, write, execute; group: read, execute; others: read, execute
因此我們發現r=4, w=2, x=1,然後將每組的rwx加起來後放在一起就是相對應的數字
在 Linux 底下的連結檔有兩種,一種是類似 Windows 的捷徑功能的檔案,可以讓你快速的連結到目標檔案(或目錄); 另一種則是透過檔案系統的 inode 連結來產生新檔名,而不是產生新檔案!這種稱為實體連結 (hard link)。 這兩種玩意兒是完全不一樣的東西呢!現在就分別來談談。[name=vbird]
又稱實體連結, 硬式連結或實際連結,就像上面提到的,是透過檔案系統的 inode 連結來產生新檔名,換句話說Hard Link只是在某個目錄下新增一筆檔名連結到某 inode 號碼的關連記錄而已。
也因此,如果你刪掉其中一個"檔案"(不管source還是其中一個dest),都不會影響到原本檔案。不過有個例外,如果新增的Hard Link剛好將目錄的 block 填滿時就會新加一個 block 來記錄檔名關連。
Hard Link的另一個特點是只能在同一filesystem中Link,而且不能link目錄
可以使用ln source dest
建立Hard Link
又稱符號連結A.K.A捷徑,這個則是建立獨立的檔案讓資料的讀取指向link目標檔名(這個也是該link file的內容)。source被刪除後該link會無法開啟。
可使用ln -s source dest
或cp -s source dest
建立symbolic link
有時候我們會看到在使用chmod時的permission會有4碼,這個就代表該檔案設立了特殊權限,後3碼表示普通權限,而前面第一碼就是表示特殊權限。
對於特殊權限,如果檔案或資料夾本身沒有x權限,添加特殊權限後在對應用戶組中會以大寫的S或T表示
https://linux.vbird.org/linux_basic/centos7/0210filepermission.php
https://www.ibm.com/docs/zh-tw/aix/7.1?topic=links-linking-files-ln-command
https://linux.vbird.org/linux_basic/centos7/0230filesystem.php#link
https://dywang.csie.cyut.edu.tw/dywang/linuxsecurity/node39.html