iT邦幫忙

2023 iThome 鐵人賽

DAY 26
0

檔案權限

今天來講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個字母代表該檔案的基本權限

  • 這9個字母以3個字母為1組,分成owner/group/others三個組,每組的權限分別為read, write execute,以r,w,x表示。

其中基本權限也可以以數字表示,如上面的第一個: rwxr-xr-x可以用數字表示為755,也就是owner: read, write, execute; group: read, execute; others: read, execute
因此我們發現r=4, w=2, x=1,然後將每組的rwx加起來後放在一起就是相對應的數字

基本權限

  • r (read contents): 表示對於該身分具有讀取檔案或目錄結構清單的權限
  • w (modify contents): 可以編輯、新增或者是修改該檔案或目錄結構的權限,或者有在目錄中
    • 新增檔案
    • 刪除檔案(檔案權限不影響刪除)
    • 重新命名
    • 移動檔案
  • x (eXecute):該檔案具有可以被系統執行的權限。或者對於目錄來說,可以以該目錄作為工作目錄

link file

在 Linux 底下的連結檔有兩種,一種是類似 Windows 的捷徑功能的檔案,可以讓你快速的連結到目標檔案(或目錄); 另一種則是透過檔案系統的 inode 連結來產生新檔名,而不是產生新檔案!這種稱為實體連結 (hard link)。 這兩種玩意兒是完全不一樣的東西呢!現在就分別來談談。[name=vbird]

Hard Link

又稱實體連結, 硬式連結或實際連結,就像上面提到的,是透過檔案系統的 inode 連結來產生新檔名,換句話說Hard Link只是在某個目錄下新增一筆檔名連結到某 inode 號碼的關連記錄而已。
也因此,如果你刪掉其中一個"檔案"(不管source還是其中一個dest),都不會影響到原本檔案。不過有個例外,如果新增的Hard Link剛好將目錄的 block 填滿時就會新加一個 block 來記錄檔名關連。
Hard Link的另一個特點是只能在同一filesystem中Link,而且不能link目錄
可以使用ln source dest建立Hard Link

Symbolic Link

又稱符號連結A.K.A捷徑,這個則是建立獨立的檔案讓資料的讀取指向link目標檔名(這個也是該link file的內容)。source被刪除後該link會無法開啟。
可使用ln -s source destcp -s source dest建立symbolic link

特殊權限

有時候我們會看到在使用chmod時的permission會有4碼,這個就代表該檔案設立了特殊權限,後3碼表示普通權限,而前面第一碼就是表示特殊權限。
對於特殊權限,如果檔案或資料夾本身沒有x權限,添加特殊權限後在對應用戶組中會以大寫的S或T表示

  • SUID: 設置使文件在執行階段具有文件所有者的權限
    • 對應數字為4
    • 形式為將owner中的x改為S(-rws------)
    • 只能用於binary檔案
  • SGID: 用戶在該目錄中建立的文件所屬群組與該目錄所屬的群組相同
    • 對應數字為2
    • 形式為將group中的x改為S(d---rwS---)
    • 只對目錄有效
  • SBIT: 設置後只有owner與自己能夠刪除該檔案
    • 對應數字為1
    • 用於防止刪除指定目錄的檔案
    • 形式為將group中的x改為T(d------rwt)
    • 使用者需在該目錄下具有w及x的權限
    • 只對目錄有效

REF

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


上一篇
Day25: 切割與掛載硬碟
下一篇
Day27: 實體機安裝Arch Linux
系列文
I Use Linux BTW: 談Linux與其指令30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言