檔案無法刪除?!

URL Link //n.sfs.tw/12112

2018-01-08 10:27:57 By 杜子

我的 Server 的作業系統都是 FreeBSD,剛剛在修改某支程式後發現無法儲存,

甚至連刪除都不行,會出現

Operation not permitted

的警告訊息!

原來,在 FreeBSD 還有一種特別的權限控制,稱之為「flags」,這些 flags 的設定可以讓我們用來保護特殊的檔案。

我們可以使用 ls 加參數 -o 來顯示:

# ls -ol filename

flags 的設定淩駕於一般的權限設定,我們可以設定的主要 flags 及其所代表的意義如下:

flags 意義
nodump 檔案不可以被 dump。(只有檔案擁有者和 root 可以設定)
sappnd 檔案只可以往後附加,不能刪除。(只有 root 可以設定)
schg 檔案不可以被更動,連 root 都不能刪除。(只有 root 可以設定)
uappnd 檔案只可以往後附加,不能刪除。(檔案擁有者和 root 才可設定)
uchg 檔案不可以被更動。(檔案擁有者和 root 才可設定)

 

如果我們要解除所設定的 flags 只要在上述的 flgs 之前加上 no 即可,例如 nouchg。

用法:

1. 為 filename 加上 schg

# chflags schg filename

2. 除去filename 的 schg

# chflags noschg filename

3. 除去整個目錄 (dirname) 裡所有檔案的 schg

# chflags -R noschg dirname

注意!

flags 的設定只有在 kernel security level 為 -1 或 0 時才可以被更改。如果 security level 為 1 或 2 時就不能更動 flags 了。