Linuxですべてのユーザーのumaskをチェックする方法は?


18

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ベースの回答に対して報奨金を作成しました。


私はすでに回避システムユーザ($ 3>の500)のために言及している、手段はUID 500の上にチェック
ラーフルパティル

繰り返しますが、システムユーザーを除外せずに、すべてのユーザーのumaskを確認する必要があります:)
gaskoピーター

有効なシェルをチェックすることができます、どう思いますか?、シェルが/ bin / bash以外の場合、そのユーザーはスキップできます。じゃない?
ラーフルパティル

回答:


9

以下を使用して確認できます。

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

1
わかりました、ありがとう、しかしユーザーに「su」せずにumaskをチェックする方法はありますか?
ガスコピーター

を手動で設定している場合は、~.bashrcこのファイルにgrepすることができます。
ラーフルパティル

それは多くの場所で設定することができます...それがgrepが最良の解決策ではない理由です
ガスコピーター

その後、我々は多くの場所でチェックする必要が
ラーフルパティル

共通ファイルでユーザーごとにumaskを設定している場合は、より良いはずです。たとえば、.bashrc
Rahul Patil

10

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
    

したがって、少なくともRHELシステムでumask002、UIDが199を超える場合は022そうであり、そうでない場合は(システムアカウント)です。


Ubuntuおよび(おそらく)Debianベースのシステムの場合、これを行う必要~/.profileがあります。これは、ユーザーごとにコメント解除および変更できるように、ファイルの先頭にデフォルト値がコメントされています。
code_dredd
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.