如何找到給定係統使用者的 umask 值?

如何找到給定係統使用者的 umask 值?

我想找到特定係統使用者的 umask 值,當以該使用者身分執行的腳本建立新目錄時套用該值。我使用的是 Ubuntu 16.04 和 20.04 系統。

我能找到的最接近的答案是這個問題。我一個字都看不懂,但我嘗試了劇本

for user in $(awk -F: '{print $1}' /etc/passwd); 
do 
    printf "%-10s" "$user" ; su -c 'umask' -l $user 2>/dev/null
done

在接受的答案中給出;它印製了“root”一詞,然後凍結了系統。

如何找到給定係統使用者的 umask 值?

答案1

要確定給定時間使用者的 umask,您只需umask以該使用者身分執行該命令即可。您在問題中給出的腳本從文件中獲取用戶列表/etc/passwd,然後umask連續對每個用戶運行命令。但它有一些問題,其中最重要的是,如果以非 root 使用者身分執行,它會掛起,等待密碼。

用戶可以隨時更改其 umask(實際上,用戶甚至不需要umask(umask 是特定於進程的),因此您不應該每次都依賴它。如果您需要知道使用者在執行 shell 腳本時擁有什麼 umask,只需將umask命令新增至該 shell 腳本即可。或者完全忽略 umask 並將chmod目錄設定為您想要的任何模式。

相關內容