Users and Groups
每個使用者帳號會有一個 唯一 的識別號碼稱為 UID (User ID Number) 並從序號 500 開始,有關使用者帳號資訊儲存於 /etc/passwd、/etc/shadow,有關使用者群組資訊儲存於 /etc/group、/etc/ashadow。/etc/passwd 儲存使用者帳號資訊,為 7 個欄位並使用冒號 (:) 隔開
- Account ID: 使用者帳號名稱 (例如: weithenn)。
- Password: 使用者密碼,此欄位值為 X 則代表該使用者帳號有設定密碼 (密碼儲存於 /etc/shadow),此欄位值為 空白 則代表該使用者帳號不需密碼即可登入 (/etc/shadow 第二欄為 !!),可使用指令 passwd -S Account_ID 來檢查使用者密碼資訊 (例如: passwd -S weithenn)。
- UID: 使用者號碼 (User ID Number)。
- GID: 使用者群組號碼 (Group ID Number)。
- Remark: 使用者資訊,可使用指令 finger Account_ID 來 查詢 使用者資訊 (例如: finger weithenn),或使用指令 chfn Account_ID 來 設定 使用者資訊 (例如: chfn weithenn)。
- Home Directory: 使用者家目錄路徑,即該使用者帳號登入系統後預設登入目錄。
- Shell: 使用者帳號登入後 第一個 執行的程序。
如下為查詢使用者帳號 weithenn 資訊於 /etc/passwd、/etc/shadow 中內容。
# grep weithenn /etc/passwd /etc/shadow
/etc/passwd:weithenn:x:500:500::/home/weithenn:/bin/bash
/etc/shadow:weithenn:!!:14459:0:99999:7:::
/etc/group 儲存使用者群組資訊,為 4 個欄位並使用冒號 (:) 隔開
- Group_ID: 群組名稱 (例如: weithenn)。
- Password: 群組密碼 (密碼儲存於 /etc/ashadow)。
- GID: 使用者群組號碼 (Group ID Number),與 /etc/passwd 的 GID 欄位相互對應。
- Member: 群組成員,成員之間使用逗點 (,) 隔開。
Permission、OwnerShip
Linux 中有關檔案及目錄透過 使用者、群組、其它人 等三種關係來訂定其存取權限,您可透過指令 stat 來查詢檔案或目錄有關 UID、GID...等相關資訊。# stat install.log
File: `install.log'
Size: 38677 Blocks: 88 IO Block: 4096 regular file
Device: fd00h/64768d Inode: 917506 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2009-08-05 08:32:09.000000000 +0800
Modify: 2009-07-30 16:29:37.000000000 +0800
Change: 2009-07-30 16:29:45.000000000 +0800
有關於 讀取 (r)、寫入 (w)、執行 (x) 對於檔案及目錄的說明如下:
檔案及目錄的所有權 (OwnerShip)
擁有者 (Owner): 除了該檔案的建立者之外僅 root 能改變該檔案的擁有者 (owner),可使用 chown 指令來修改檔案及目錄的擁有者。- -R: 此參數可一次套用設定至所有子目錄及檔案。
- -v: 此參數可於指令執行後立即顯示執行結果。
群組 (Group): 除了該檔案的建立者 (且必須擁有該 GID) 之外僅 root 能改變該檔案的群組 (group)。
- 可使用 chgrp 指令來修改檔案及目錄的郡組。
檔案及目錄的權限 (Permission)
每個檔案及目錄均透過 10 個字符 (Ten-Character) 4 組數字來表示其權限。- 第 1 個字符: 特殊權限 (Suid、Sgid、Sticky)。
- 第 2 ~ 4 個字符: 使用者權限 (User Permission)。
- 第 5 ~ 7 個字符: 群組權限 (Group Permission)。
- 第 8 ~ 10 個字符: 其它人權限 (Other Permission)。
讀取 (r)、寫入 (w)、執行 (x) 權限其數字表示方式如下:
- 執行 (x): 為 2 的 0 次方其數值為 1。
- 寫入 (w): 為 2 的 1 次方其數值為 2。
- 讀取 (r): 為 2 的 2 次方其數值為 4。
可透過 chmod 指令並配合上述數字方式來快速指令檔案及目錄權限,如下列二個範例來進行說明:
chmod 664 file
- 擁有者有 (rw-) 權限,也就是有讀取、寫入的權限。
- 群組有 (rw-) 權限,也就是有讀取、寫入的權限。
- 其它人有 (r--) 權限,也就是有讀取的權限。
chmod 755 dir
- 擁有者有 (rwx) 權限,也就是有讀取、寫入、執行的權限。
- 群組有 (rwx) 權限,也就是有讀取、寫入、執行的權限。
- 其它人有 (r-x) 權限,也就是有讀取、執行的權限。
Lab
Lab 1. 請建立如下所示樹狀目錄結構、設定相關權限、執行刪除等作業
請利用 root 帳號建立如下所示樹狀目錄結構及設定相關權限。/ (根目錄)
d1 (目錄, 權限 775)
d11 (目錄, 權限 777)、f11 (檔案)
d111 (目錄, 權限 775)、f111 (檔案)
d1111 (目錄, 權限 777)
利用非 root 帳號執行下列動作。
$ rm -rf /d1
$ rm -rf /d1/d11/d111/d1111
Ans:
實作後您可發現透過非 root 帳號並無法刪除指定的目錄,原因再於能否刪除該子目錄必須看該使用者權限相對於該子目錄之 上一層 目錄而定,例如執行 rm -rf /d1 指令來刪除 /d1 資料夾必須檢查使用者權限相對 /d1 的上一層目錄也就是 /(根目錄) 的權限。
Reference
- Wikipedia - passwd (file)
- Wikipedia - Shadow password
- Wikipedia - Group (database)
- Wikipedia - User identifier (Unix)
- Wikipedia - Group identifier (Unix)
- Wikipedia - Home directory
- Wikipedia - Shell (computing)
- Wikipedia - Salt (cryptography)
- Wikipedia - Cryptographic hash function
- Wikipedia - File system permissions