特定のシステム ユーザーの 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。ただし、非ルート ユーザーとして実行すると、パスワードを待ってハングするなど、いくつかの問題があります。

ユーザーはいつでもumaskを変更できます(実際には、ユーザーは持っているumask はプロセス固有のものです) なので、毎回同じであるとは限らないことに注意してください。ユーザーがシェル スクリプトを実行しているときに、そのユーザーの umask を知る必要がある場合は、umaskそのシェル スクリプトにコマンドを追加するだけです。または、umask を完全に無視して、chmodディレクトリを任意のモードに設定します。

関連情報