Solaris 採用傳統 Unix 離散存取控制 (DAC) 模型,結合 RBAC (Role-Based Access Control) 提供彈性的權限管理。本文系統整理用戶/群組生命週期、檔案權限模型、特殊權限位與實務操作。
| 類型 | 說明 | UID/GID 範圍 | |||
|---|---|---|---|---|---|
| 超級用戶 (root) | 系統完全控制權 | 0 | |||
| 系統/程序用戶 | 服務運行帳號,無登入 Shell | 1-99 (傳統)、100-999 (現代) | |||
| 一般用戶 | 互動登入,僅控制家目錄 | 1000+ (現代) |
| 檔案 | 用途 | 關鍵欄位 |
|---|---|---|
/etc/passwd | 用戶基本資訊 | 用戶名:密碼佔位:x:UID:GID:註解:家目錄:Shell |
/etc/shadow | 加密密碼與有效期 | 用戶名:加密密碼:最後修改:最小/最大/警告/非活動/過期天數 |
/etc/group | 群組定義 | 群組名:密碼佔位:GID:成員列表 |
/etc/default/useradd | useradd 預設值 | GROUP, HOME, INACTIVE, EXPIRE, SHELL, SKEL |
# ls -l 輸出格式 -rwxr-xr-- 1 user1 group1 1024 Jan 1 10:00 file.txt │││││││││ │││││││└─ 其他用戶:r-- (讀取) ││││││└──── 其他用戶:- (無寫入) │││││└───── 其他用戶:- (無執行) ││││└────── 群組用戶:r-x (讀/執行) │││└─────── 群組用戶:- (無寫入) ││└──────── 擁有者:rwx (讀/寫/執行) │└───────── 檔案類型:- 一般檔案、d 目錄、l 符號連結、b/c 區塊/字元裝置、s socket、p 管道 └────────── (保留位,如 setuid/setgid/sticky)
| 數值 | 權限 | 二進位 |
|---|---|---|
| 4 | 讀取 | 100 |
| 2 | 寫入 | 010 |
| 1 | 執行 | 001 |
| 7 | rwx | 111 |
| 6 | rw- | 110 |
| 5 | r-x | 101 |
預設權限:檔案 644 (rw-r--r--)、目錄 755 (rwxr-xr-x)
# 符號模式 chmod u+x file # 擁有者加執行 chmod g-w file # 群組減寫入 chmod o=r file # 其他設為唯讀 chmod a+rX dir # 所有人加讀取,目錄加執行 # 數字模式 chmod 750 file # rwxr-x--- chmod -R 750 dir/ # 遞迴修改 # 擁有權變更 chown user1 file # 變更擁有者 chown :group1 file # 變更群組 chown user1:group1 file # 同時變更 chown -R user1:group1 dir/ # 遞迴 # 預設權限遮罩 umask 022 # 預設遮罩,新檔案=666-022=644,新目錄=777-022=755 umask -S # 符號模式顯示:u=rwx,g=rx,o=rx
| 權限位 | 符號 | 數值 | 檔案效果 | 目錄效果 | 設定指令 |
|---|---|---|---|---|---|
| SetUID | s (擁有者執行位) | 4000 | 執行時以擁有者權限運行 | 無效 | chmod 4755 / chmod u+s |
| SetGID | s (群組執行位) | 2000 | 執行時以群組權限運行 | 新建檔案繼承目錄群組 | chmod 2755 / chmod g+s |
| Sticky Bit | t (其他執行位) | 1000 | 無效 (舊系統限刪除) | 僅擁有者/root可刪除檔案 | chmod 1777 / chmod +t |
/usr/bin/passwd、/usr/bin/su 需 root 權限修改 /etc/shadowchmod 2770 /proj; chgrp projteam /proj,新檔自動屬 projteam/tmp、/var/tmp 防止用戶誤刪他人檔案Solaris 支援 POSIX.1e ACL,提供比傳統 rwx 更細粒度的控制:
# 設定 ACL setfacl -m u:user2:rwx file # 給 user2 rwx setfacl -m g:group2:rx file # 給 group2 rx setfacl -m m::rwx file # 設定遮罩 setfacl -m o::- file # 其他無權限 # 查看 ACL getfacl file # 移除 ACL setfacl -x u:user2 file # 移除特定規則 setfacl -b file # 移除所有 ACL # 預設 ACL (目錄遺傳) setfacl -d -m u:user2:rwx dir/ # 目錄下新建檔自動套用
Solaris RBAC 允許將特權指令授予角色,用戶切換角色執行:
# 角色建立與授權 roleadd -c "Backup Operator" -m -d /export/home/backupop -s /bin/pfksh backupop usermod -R backupop user1 # 給 user1 backupop 角色 passwd backupop # 設定角色密碼 # 權限配置檔 /etc/user_attr # backupop::::type=role;profiles=Media Backup # 執行特權指令 su - backupop # 切換角色 pfexec /usr/sbin/ufsdump ... # 執行授權指令