web-dev-qa-db-ja.com

Xサーバーがroot権限で実行されているかどうかを確認する方法

これはワンライナーです:Xサーバーがrootとして実行されているのかユーザーとして実行されているのかを確認する方法/コマンドはありますか?


これはワンライナーであるはずでしたが、残念ながら...最近Arch Linuxボックスをアップグレードしました。アップグレード後、Xがルートレスで実行されるようになったことが通知されました。公式のArch Linuxページを確認したところ、「Xはsystemd-logind [...]の助けを借りてルートレスになりました」 [1] これにより、Xがルートレスで実行されているかどうかを確認する方法に興味を持ちました。これはどのように行うことができますか?

4
lord.garbage

psでユーザーID(UID)を出力する方法はいくつかあります。簡単なものは-fです:

ps -fC X

実行中のすべてのXサーバーの情報が表示されます(複数存在する場合があります)。

これは、実行可能ファイルがXと呼ばれることを前提としています。そのようなプロセスがない場合は、他の何かをターゲットにする必要があります。ほぼ確実に少なくとも大文字のXが含まれているため(たとえば、XorgX11)、別の方法はgrepでフィルタリングすることです。

ps -o uid,comm -A | grep X

これにより列ヘッダーが削除されますが、UIDは左側の数値です。これが0の場合、プロセスはルートを実行しています。何も表示されない場合は、ps -fA | grep Xを試してください。これはもっと散らかっています。

最後に、名前に大文字のXが含まれるプロセスがない場合は、xを試してください。少なくとも、startxxinitなどの制御に使用されるコマンドを見つけることができます。ディスプレイマネージャは通常名前にこれを持っているので、dmを試すこともできます(gdmなど)。ただし、これらは実際にはXサーバーではなく、xinitがサーバーを起動しますが、サーバーの実行可能ファイルには多くの場合 setuidビットセット があります。つまり、xinitは非特権UID、Xは引き続きrootとして実行されます。

6
goldilocks