AIXでは、以下をumask
使用してすべてのユーザーを確認できます。
cut -d : -f 1 /etc/passwd | while read ONELINE; do lsuser -a umask "$ONELINE"; done
umask
しかし、Linuxですべてのユーザーの設定を表示するには? (su
その後、各ユーザーのコマンドumask
?より良い方法はありますか?)
アップデート1:
su
一部のRHELサーバーでは、一部のユーザーのデフォルトシェルが一時停止/終了であるため、これはすべてのユーザーに最適ではありません。
shutdown:x:6:0:shutdown;asdf;asdf;F:/sbin:/sbin/shutdown
それでは、su
ユーザーにこれを行うと...サーバーがダウンしますか?
アップデート2:私はsuベースではなく答えのための賞金を作りました。
答え1
通常、umask
設定ファイルを介してシステム全体に設定されます/etc/login.defs
。
$ grep UMASK /etc/login.defs
UMASK 077
値はオーバーライドできますが、通常、および/etc/bashrc
//etc/profile
またはユーザー$HOME/.bashrc
(Bashを使用していると仮定)はそうではありません。
grep
上記のファイルで「umask」を見つけたら、RHELボックスでもこの内容を確認できます。
$ grep umask /etc/bashrc /etc/profile
/etc/bashrc: # By default, we want umask to get set. This sets it for non-login shell.
/etc/bashrc: umask 002
/etc/bashrc: umask 022
/etc/profile:# By default, we want umask to get set. This sets it for login shell
/etc/profile: umask 002
/etc/profile: umask 022
詳細はこちら:
/etc/bashrc
# By default, we want umask to get set. This sets it for non-login shell. # Current threshold for system reserved uid/gids is 200 # You could check uidgid reservation validity in # /usr/share/doc/setup-*/uidgid file if [ $UID -gt 199 ] && [ "`id -gn`" = "`id -un`" ]; then umask 002 else umask 022 fi
/etc/profile
# By default, we want umask to get set. This sets it for login shell # Current threshold for system reserved uid/gids is 200 # You could check uidgid reservation validity in # /usr/share/doc/setup-*/uidgid file if [ $UID -gt 199 ] && [ "`id -gn`" = "`id -un`" ]; then umask 002 else umask 022 fi
umask
したがって、少なくともRHELシステムでは、002
UIDが199より大きい022
場合はそうでない場合(システムアカウント)です。
答え2
以下を使用して確認できます(rootとして実行)。
for user in $(awk -F: '{print $1}' /etc/passwd);
do
printf "%-10s" "$user" ; su -c 'umask' -l $user 2>/dev/null
done
システムユーザーを確認したくない場合は、次のようにします。
for user in $(awk -F: '( $3 >= 500 ){print $1}' /etc/passwd);
do
printf "%-10s" "$user" ; su -c 'umask' -l $user 2>/dev/null
done
出力:
ram 0022
shyam 0022
suraj 0022
vinayak 0022
javed 0022