すべてのユーザーをルートで一覧表示するにはどうすればよいですか?


35

Linuxボックスで、root特権を持つすべてのユーザー(さらに良いことに、rootを持っているかどうかに関係なく一般的にすべてのユーザー)を一覧表示するにはどうすればよいですか?


1
「ルート権限」とはどういう意味ですか。UID = 0のユーザーを意味しますか?
クリスS

何でもできる機能を持つユーザー。基本的に-可能であれば、ユーザーをメンバーであるグループとともにリストする必要があります。
エリック

2
お使いのコンピューターの場所がわかっていれば、歩いて電源コードを引っ張ることができます。それは、「私はあなたのリストに載っていること」を意味する「何でもする」とみなされます。Rafiqには3つの最も一般的なものがリストされていますが、さらに多くの可能性があり、システムまたはセットアップ方法に注意する必要があります。
クリスS

回答:


42

ルートパスワードを変更することを忘れないでください。root以外のユーザーがUID 0を持っている場合、そうすべきではありません。悪いアイデア。チェックする:

grep 'x:0:' /etc/passwd

繰り返しますが、これを行うべきではありませんが、ユーザーがルートグループのメンバーであるかどうかを確認するために:

grep root /etc/group

rootとしてコマンドを実行できるユーザーがあるかどうかを確認するには、sudoersを確認します。

cat /etc/sudoers

root権限でプログラムを実行できるようにするSUIDビットを確認するには:

find / -perm -04000


厳密には、最初のパスワードは、シャドウパスワードファイルがユーザーにある場合にのみ機能します。私はそれがほとんど常に、これらの日ですが、念のため、私は迅速なPerlの仕事をしてくれたことに同意することを明示的チェック欄3
MADHATTERサポートモニカ

4
これは最初のパターンよりも優れたパターンですgrep '[^:]*:[^:]*:0:' /etc/passwd。特に+1は、SUIDを確認するためのものです。
追って通知があるまで一時停止します。

33

UID 0を確認するには:

getent passwd 0

グループ内のユーザーを確認するにはrootwheel admおよびadmin

getent group root wheel adm admin

すべてのユーザーとそれらがメンバーになっているグループを一覧表示するには:

getent passwd | cut -d : -f 1 | xargs groups

9
/ etc / passwdファイルに誤って依存する他のすべての回答とは異なり、getent passwd代わりに使用するこの回答は実際には正しいです。/ etc / sudoersを確認することを忘れないでください。
mivk

これをありがとう。はるかに明確。私にとってこれは受け入れられた答えです。
フィディバックス

6

純粋なルートはユーザーID「0」です。

システム内のすべてのユーザーは/ etc / passwdファイルにあります。

less /etc/passwd

rootのユーザーには、ユーザーIDとして「0」があります。これは3番目の列です。グループとして「0」を持つもの(4列目)には、いくつかのルート特権もあります。

次に、グループを見て、「root」、「wheel」、または「admin」グループの追加メンバーが誰であるかを確認します。

less /etc/group

これらのグループにリストされているユーザーは、特に「sudo」コマンドを使用して、いくつかのルート権限を持つことができます。

最後に確認するのは「sudo」設定で、このコマンドを実行する権限があるとリストされているユーザーを確認します。このファイル自体は十分に文書化されているため、ここでは再現しません。

less /etc/sudoers

これは、誰がルートアクセス権を持つことができるかという主要な領域をカバーしています。


特権エスカレーション権を付与できる場所については、serverfault.com / questions / 205598 /…も参照してください。(すなわち、consolehelperおよびPackageKit。)
mattdm

2
すべてのユーザーが/ etc / passwdにいるとは限りません。たとえば、LDAPにあります。ただしgetent passwd、定義されているデータベースに関係なく、すべてのシステムユーザー(ルートを含む)をpasswd形式でリストする必要があります。
mivk

3

すべてのユーザーを印刷するには

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

それは良いライナーですが、制限に注意してください(MadHatterはこれを既に認識していると確信しています)-グループをチェックせず、sudoersをチェックしません。彼が言うように、暗黙のルートだけをチェックします。
ラフィクマニア

2
/ etc / passwdを解析しないでください。ユーザーは別の場所で定義できます。getent passwd代わりに使用してください。最初の「すべてのユーザーを印刷する」例では、これを試してくださいgetent passwd | perl -naF: -e 'print "$F[0]\n"'
。– mivk

2

すべてのユーザーのクイックリストを表示するには、passwdコマンドの後にスペースを入力してから、タブを2回押して(オートコンプリートする)試してください。これはsuコマンドでも機能します。

ルート特権ユーザーとして実行する必要があります。


これはzsh固有の機能ですか?BashはopenSUSE上のファイルのみを提案します。
-jgillich

Debian(Squeeze)でbashでテスト済み。誰もこれを公式にサポートするとは思わないが、それは近道だ。
エメラルド

更新:これはEl Capitanでは機能しなくなりました。おそらくセキュリティ上の理由で修正されました。
エメラルド

0

ワンライナーの回答がなかったことに悩まされました...すべてのUID 0(ルート)アカウントを一覧表示する場合は、次を使用します。

cat /etc/passwd | cut -f1,3,4 -d":" | grep"0:0" | cut -f1 -d":" | awk '{print $1}'

ベスト、

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.