Linuxボックスで、root特権を持つすべてのユーザー(さらに良いことに、rootを持っているかどうかに関係なく一般的にすべてのユーザー)を一覧表示するにはどうすればよいですか?
Linuxボックスで、root特権を持つすべてのユーザー(さらに良いことに、rootを持っているかどうかに関係なく一般的にすべてのユーザー)を一覧表示するにはどうすればよいですか?
回答:
ルートパスワードを変更することを忘れないでください。root以外のユーザーがUID 0を持っている場合、そうすべきではありません。悪いアイデア。チェックする:
grep 'x:0:' /etc/passwd
繰り返しますが、これを行うべきではありませんが、ユーザーがルートグループのメンバーであるかどうかを確認するために:
grep root /etc/group
rootとしてコマンドを実行できるユーザーがあるかどうかを確認するには、sudoersを確認します。
cat /etc/sudoers
root権限でプログラムを実行できるようにするSUIDビットを確認するには:
find / -perm -04000
grep '[^:]*:[^:]*:0:' /etc/passwd
。特に+1は、SUIDを確認するためのものです。
UID 0を確認するには:
getent passwd 0
グループ内のユーザーを確認するにはroot
、wheel
adm
およびadmin
:
getent group root wheel adm admin
すべてのユーザーとそれらがメンバーになっているグループを一覧表示するには:
getent passwd | cut -d : -f 1 | xargs groups
getent passwd
代わりに使用するこの回答は実際には正しいです。/ etc / sudoersを確認することを忘れないでください。
純粋なルートはユーザーID「0」です。
システム内のすべてのユーザーは/ etc / passwdファイルにあります。
less /etc/passwd
rootのユーザーには、ユーザーIDとして「0」があります。これは3番目の列です。グループとして「0」を持つもの(4列目)には、いくつかのルート特権もあります。
次に、グループを見て、「root」、「wheel」、または「admin」グループの追加メンバーが誰であるかを確認します。
less /etc/group
これらのグループにリストされているユーザーは、特に「sudo」コマンドを使用して、いくつかのルート権限を持つことができます。
最後に確認するのは「sudo」設定で、このコマンドを実行する権限があるとリストされているユーザーを確認します。このファイル自体は十分に文書化されているため、ここでは再現しません。
less /etc/sudoers
これは、誰がルートアクセス権を持つことができるかという主要な領域をカバーしています。
consolehelper
およびPackageKit
。)
getent passwd
、定義されているデータベースに関係なく、すべてのシステムユーザー(ルートを含む)をpasswd形式でリストする必要があります。
すべてのユーザーを印刷するには
perl -n -e '@user = split /:/ ; print "@user[0]\n";' < /etc/passwd
UID 0を持つユーザーのみを印刷するには、他の人が言っているように、暗黙のルート特権を持つユーザーは次のようになります。
perl -n -e '@user = split /:/ ; print "@user[0]\n" if @user[2] == "0";' < /etc/passwd
getent passwd
代わりに使用してください。最初の「すべてのユーザーを印刷する」例では、これを試してくださいgetent passwd | perl -naF: -e 'print "$F[0]\n"'
すべてのユーザーのクイックリストを表示するには、passwd
コマンドの後にスペースを入力してから、タブを2回押して(オートコンプリートする)試してください。これはsu
コマンドでも機能します。
ルート特権ユーザーとして実行する必要があります。