Permissions

將現有文件/目錄的權限與將要創建的文件/目錄的權限進行比較

  • February 22, 2022

假設我正在使用系統呼叫創建具有某些名稱和模式參數的文件或目錄,並且操作失敗並顯示EEXIST.

假設我知道我目前umaskeuid、 和egid,如何判斷現有文件/目錄是否具有與操作成功時系統呼叫所創建的權限等效的權限。

AFAIK,對於經典權限,如果 .st_gid == egid && .st_uid == euid && (.st_mode & 07777) == (RequestedMode & 07777 & ~CurrentUmask)發現/預期的文件類型匹配,答案將是真實的。

如何將其擴展到具有訪問控制列表的系統?

要將其擴展到 ACL,您將acl_get_file使用創建文件的路徑進行呼叫,並ACL_TYPE_DEFAULT請求目錄上的預設 ACL。如果有,那就是預設情況下將應用於您嘗試創建的文件的 ACL。

然後,您將acl_get_file在現有文件上使用ACL_TYPE_ACCESS, 來檢索文件上的實際 ACL。

我認為沒有用於比較 ACL 的 ACL 函式,因此留給讀者作為練習。

引用自:https://unix.stackexchange.com/questions/691727