萬盛學電腦網

您现在的位置: 萬盛學電腦網 >> 作業系統 >  >> Linux 教學

Linux 檔案預設權限與隱藏屬性深度解析

Linux 檔案系統的權限機制包含基礎的 rwx 權限位、特殊權限位(SUID/SGID/Sticky Bit)以及較少被注意的隱藏屬性(chattr/lsattr)。本文將從 umask 預設權限計算、chattr 隱藏屬性配置、特殊權限位實戰三個維度,完整剖析 Linux 權限體系。

一、umask:預設權限的「減法器」

umask 示意圖

1. 基礎概念

  • 檔案最大權限:666 (rw-rw-rw-) —— 預設無執行權限
  • 目錄最大權限:777 (rwxrwxrwx) —— 需執行權限才能 cd 進入
  • umask 為「拿掉」的權限位,最終權限 = 最大權限 - umask

2. 實測範例

# 預設 umask 0022
[root@www ~]# umask
0022
[root@www ~]# touch test1; mkdir test2
[root@www ~]# ll
-rw-r--r-- 1 root root 0 ... test1   # 666-022=644
drwxr-xr-x 2 root root 4096 ... test2 # 777-022=755

# 修改 umask 0002(保留群組寫入)
[root@www ~]# umask 0002
[root@www ~]# touch test3; mkdir test4
[root@www ~]# ll
-rw-rw-r-- 1 root root 0 ... test3   # 666-002=664
drwxrwxr-x 2 root root 4096 ... test4 # 777-002=775

3. 安全建議

  • root:預設 022,限制他人寫入
  • 一般用戶:常用 002,允許同群組協作
  • 可在 /etc/profile 或 ~/.bashrc 永久設定

二、chattr / lsattr:隱藏屬性管理

這些屬性位於 inode 層面,ls -l 看不見,需用 lsattr 查看,chattr 修改,且多數需 root 權限。

1. 常用屬性表

屬性效果適用對象權限需求
i不可刪除、改名、建立連結、寫入/新增資料檔案/目錄root
a僅能追加資料(append only)檔案root
S同步寫入磁碟(如同 sync 掛載選項)檔案root
A不更新 atime(存取時間),減少 I/O檔案/目錄一般用戶
c自動壓縮儲存,讀取自動解壓檔案root
ddump 備份時略過檔案/目錄root
s刪除時徹底清空磁碟區塊,不可復原檔案root
u刪除時保留資料區塊,可嘗試救援檔案root
jext3/4 系統下,資料先寫入 journal檔案root

2. 實戰範例

# 設定 i 屬性(防刪除)
[root@www tmp]# touch attrtest
[root@www tmp]# chattr +i attrtest
[root@www tmp]# rm attrtest
rm: cannot remove 'attrtest': Operation not permitted

# 移除屬性
[root@www tmp]# chattr -i attrtest

# 查看屬性
[root@www tmp]# lsattr attrtest
----ia---j--- attrtest   # i=不可異動, a=僅追加, j=journal

3. lsattr 參數

  • -a:顯示隱藏檔屬性
  • -d:目錄本身屬性(不列出內容)
  • -R:遞迴顯示子目錄

三、特殊權限位:SUID / SGID / Sticky Bit

1. SUID(Set User ID)

  • 僅對二進位執行檔有效
  • 執行者需具 x 權限
  • 執行期間擁有檔案擁有者的權限(常用於 passwd、su、ping)
  • 符號:擁有者 x 位變為 s(如 -rwsr-xr-x)

2. SGID(Set Group ID)

符號:群組 x 位變為 s(如 -rwxr-sr-x)

3. Sticky Bit (SBIT)

  • 僅對目錄有效
  • 使用者在目錄下只能刪除/改名自己的檔案,即使擁有 w 權限
  • 經典應用:/tmp(drwxrwxrwt)
  • 符號:其他人 x 位變為 t(如 drwxrwxrwt)

4. 數值與符號模式設定

# 數值:SUID=4, SGID=2, SBIT=1
chmod 4755 file   # -rwsr-xr-x (SUID)
chmod 6755 file   # -rwsr-sr-x (SUID+SGID)
chmod 1755 dir    # drwxr-xr-t (SBIT)

# 符號模式
chmod u+s file           # 加 SUID
chmod g+s dir            # 加 SGID
chmod o+t dir            # 加 SBIT
chmod u=rwxs,go=x file   # 精確控制:-rws--x--x

四、權限排查檢查清單

  1. ls -l 觀察基礎權限與特殊位(s/t/S/T)
  2. lsattr 檢查隱藏屬性(i/a 等)
  3. getfacl 查看 ACL 擴充權限(若啟用)
  4. sudo -l 確認 sudoers 授權
  5. ps aux | grep <proc> 觀察實際執行身分

深入理解 umask、隱藏屬性與特殊權限位,能從根源上避免誤刪、提權風險與協作衝突,是 Linux 系統管理進階的必修課。

copyright © 萬盛學電腦網 all rights reserved
對象效果
二進位執行檔執行期間獲得檔案所屬群組權限
目錄1. 使用者需 rx 進入
2. 新建檔案/目錄自動繼承該目錄的群組
3. 適用於團隊共享目錄