Linux

setfacl 將文件重置為預設權限?

  • March 7, 2021

我有一個包含以下預設 ACL 的目錄:

default:user:phptutor:rwx

但是,該目錄中的所有文件/目錄都沒有該預設權限(因為它是在創建後添加的)。

如何將父目錄的預設 ACL 複製到其中的每個文件夾和文件?

用於getfacl從目錄中獲取預設權限,然後通過管道將結果輸入setfacl以應用它。像這樣的東西應該​​工作:

getfacl -d <directory> | setfacl -R --set-file=- <directory>

我將進一步擴展這個答案,因為在我的情況下,首先創建了預設 ACL,但是複制具有權限的文件沒有應用預設 ACL(或者換句話說,使用了空的源 ACL)。

假設所有目錄都具有與頂層相同的預設條目,則可以通過兩個步驟來恢復 ACL,就像正常創建文件一樣:

  1. 僅恢復預設條目。它們將應用於所有目錄,以便將來在這些子目錄下創建的文件將繼承預設 ACL。
getfacl -d <directory> | setfacl -dR --set-file=- <directory>
  1. 將預設條目應用於所有文件和目錄,但不要重新計算遮罩 ( setfacl -nswitch)。此處的 grep 還刪除了基本 UNIX 權限和遮罩條目,因此 setfacl 可以將 ACL 與目前文件權限合併。
getfacl -d <directory> | grep -v :: | setfacl -R -n -M- <directory>

這些命令中的源目錄和目標目錄可以是相同的,這樣可以方便地在其下的許多文件和目錄上應用缺少的 ACL(您將重新對頂級目錄應用相同的權限,因此有效地對此無操作一)。

引用自:https://serverfault.com/questions/285597