「nobody」ユーザーの目的は何ですか?


93

すべての人間のユーザーのリストを読んだ後、Ubuntuシステムに「nobody」という名前のユーザーアカウントがあることに気付きました。

また、次のコマンドとパスワードを使用して、ターミナルからこのアカウントにログインできることに気付きました。

sudo su nobody

誰も

私はまったく気にしませんが、このユーザーの目的は何ですか?Ubuntuの新規インストールでデフォルトで作成されますか、それとも特定のパッケージをインストールすることで作成されますか?


8
パスワードを使用してログインする場合、nobodyアカウントではなくsudoステップにパスワードを使用していることに注意してください(そして、それが機能する理由は、スーパーユーザーがパスワードを入力することなく誰にでもsuできるからです)下記、私は誰のシェルが/ sbinに/ nologinにするように設定されている場合、少なくともRH-誘導体を、あなたはまだでも、スーパーユーザー(別名ルート)を使用してログインすることはできないと考えている
FOON

これは現在デフォルトです(18.04+?)。sudo su nobodyreturn このアカウントは現在利用できません。ユーザーのシェルnobody /usr/sbin/nologingetent passwd nobody)に設定されているためです。
パブロA

@sarnold-あなたがほのめかしていると思う答えに対する私のコメントをご覧ください。それはソースを推論したり引用したりしないので、かなり貧弱な答えで​​す。さらに、nobodyアカウントとNFSの動作について知っているすべてのことに反します。root_squashそれにより、rootがリモートシステムのnobodyマッピングされます。これは何の多かれ少なかれ全く逆であるこの答え状態
vidarlo

回答:


85

特別な権限を必要としないものを実行するためにあります。通常、脆弱なサービス(httpdなど)のために予約されているため、ハッキングされた場合に、システムの残りの部分へのダメージを最小限に抑えることができます。

実際のユーザーとして何かを実行するのは対照的に、そのサービスが危険にさらされると(Webサーバーは任意のコードを実行するために悪用されることがあります)、そのユーザーとして実行され、そのユーザーが持っているすべてにアクセスできます。ほとんどの場合、これはrootになるのと同じくらい悪いです。

Ubuntu Wikiでnobodyユーザーについてもう少し読むことができます。

フォローアップに回答するには:

でこのアカウントにアクセスできないのはなぜsu nobodyですか?

sudo grep nobody /etc/shadow誰もパスワードを持っていないsuことと、アカウントパスワードなしではできないことを示します。sudo su nobody代わりに最もクリーンな方法です。それはかなり荒涼としたshシェルのままになります。

このアカウントを使用するように指示されている場合、特定の例を挙げることができますか?

プログラムの操作にアクセス許可が必要でない場合。これは、ディスクアクティビティが発生しない場合に最も顕著です。

これの実際の例はmemcached(キーと値のメモリ内キャッシュ/データベース/もの)で、私のコンピューターとサーバーにnobodyアカウントで実行されています。どうして?許可を必要としないだけで、ファイルへの書き込みアクセス権を持つアカウントを与えることは、不必要なリスクになります。


説明できるのであれば、あと2つだけです。1)なぜこのアカウントにアクセスできないのかsu nobody、2)このアカウントを使用するように指示されたときに特定の例を挙げていただけますか?
ラドゥラデアヌ

@RaduRădeanu1)パスワードが設定されていないためだと思いsuます。普通のユーザーとしては、ターゲットユーザーのパスワードを入力する必要があります。sudo -i次にsu nobody、パスワードを必要としないルートシェルから試してください。
CVn

2
Network File Systemローカルルートがリモートルートのようにすべてにアクセスできないようにマップrootnobodyます。
シルウェスター

1
@RaduRădeanu編集履歴に注意してください。元のコマンドをテストすると(元のコマンドではなく)、もともとダッシュ(/ bin / sh)シェルになっていたのですが、今は複製できません。元の編集は問題ありませんでした。変更したのは私ではありません。
オリ

1
linuxstandardbaseが述べているnobodyように、NFSは実際に/主に使用されていると常に思っていました。
ゴンザレス

29

多くのUnixバリアントでは、「nobody」は、ファイルを所有せず、特権グループも持たず、他のすべてのユーザーが持っているもの以外の能力を持たないユーザーアカウントの従来の名前です。

デーモンを制御する悪意のあるユーザーが受ける可能性のある損害を制限するために、デーモンを誰も、特にサーバーとして実行しないのが一般的です。ただし、このように複数のデーモンを実行すると、この手法の有用性が低下します。1つのデーモンの制御を取得すると、すべてのデーモンが制御されるためです。その理由は、誰もが所有するプロセスには、互いにシグナルを送信したり、お互いをデバッグしたりする能力がなく、互いのメモリを読み取ったり、修正したりすることさえできないためです。

http://en.wikipedia.org/wiki/Nobody_(username)から取得した情報。


-1:nobodyNFS専用であり、他のサービスやシステム管理者によって使用されるべきではありません。ありがとう。
sarnold

22

ユーザーnobodyはNFS専用です。

上記の回答nobodyは、「一般的な」匿名/ゲストスタイルのユーザーID であると想定しているため、かなり間違っています。

UNIX / Linuxアクセス制御モデルでは、匿名/ゲストスタイルのユーザーIDは存在せず、これらは悪い提案です。

  • デーモンをnobody、特にサーバーとして実行するのが一般的で、悪意のあるユーザーがそれらを制御できた場合の被害を制限するために。」次の理由により:「しかし、この手法の有用性は、 1つのデーモンがこのように実行されます。1つのデーモンの制御を取得すると、すべてのデーモンを制御できるようになるためです。
  • これの実世界の例はmemcached、キーと値のメモリ内キャッシュ/データベース/もの)であり、私のコンピューターと、そのnobodyアカウントで実行されているサーバーに座っています。なぜでしょうか。ファイルへの書き込みアクセス権を持っていたアカウントは、不必要なリスクになります。

nobodyユーザーID 65534 のユーザー名は、特定の目的のために作成および予約されており、NFSツリーエクスポートの「マップされていない」ユーザーおよびユーザーIDのプレースホルダーとしてのみ使用する必要があります。

つまり、NFSツリーエクスポート用にユーザー/ IDマッピングが設定されていない限り、エクスポート内のすべてのファイルはが所有してnobodyいるように見えます。この目的は、インポートシステム上のすべてのユーザーがそれらのファイルにアクセスできないようにすることです(「他の」アクセス許可がない限りrootnobody

従って、使用することは非常に悪い考えであるnobodyため任意のその目的は、誰にもアクセス可能であってはならないファイルのためのユーザー名/ユーザーIDになることですので、他の目的。

Wikiエントリも非常に間違っています。

UNIX / Linuxのプラクティスでは、個別のアクセス制御ドメインを必要とする「アプリケーション」またはアプリケーション領域ごとに新しいアカウントを作成し、NFSの外部で再利用nobodyすることはありません


この回答はソースを引用しておらず、ソースを引用している他のいくつかの回答と明示的に矛盾ています。現在の報奨金は、この回答が特に優れていることを示しています。
vidarlo


@ mook765その部分は結構です。ただし、NFSについての段落では、理解しません。たとえば、root_squashon rootはuser nobodyにマッピングされるため、所有者nobodyがいるファイルはまったく意味がありません。さらに、ファイルのアクセス権はUNIXの所有権とは別であるため、誰も所有していないファイルはだれにもアクセスできないことを意味します。私は答えのすべてが間違っていると言っているのではなく、その要素が私にとってほとんど意味がないかまったく意味がないというだけです:)
vidarlo

1
@vidarlo、この回答は、ファイルの所有者をに設定することを示唆しているわけではありませんnobody。それを言っていますnobodyNFSは、マッピング時のアクセス許可を使用するためのもので、それは私に最も重要なポイントです。どのように NFSを使用すると、nobodyそれが事実未満面白いです使用しますnobody。ありがとう。
サーノルド

@sarnold私の意見では、この問題の答えはまだ明らかに間違っています。ユーザーが回答とを読んだ場合man exports、彼は非常に混乱している可能性があります。
vidarlo

17

nobodyユーザーは、インストール(Ubuntuのデスクトップ13.04で確認)新鮮にデフォルトで作成されます。

多くの* nixバリアントでnobodyは、ファイルを所有せず、特権nobodyグループも持たず、他のすべてのユーザーが持つもの以外の機能を持たないユーザーアカウントの従来の名前です(ユーザーとグループは/etc/sudoersファイルにエントリを持ちません) 。

デーモンnobodyを制御する悪意のあるユーザーが受ける可能性のある損害を制限するために、デーモンとして、特にサーバーを実行するのが一般的です。ただし、このように複数のデーモンを実行すると、この手法の有用性が低下します。1つのデーモンの制御を取得すると、すべてのデーモンが制御されるためです。その理由は、nobody所有プロセスは相互にシグナルを送信し、相互にデバッグすることもできるため、相互のメモリを読み取ったり、修正することさえできるためです。

ソースウィキペディア-誰も(ユーザー名)


nobody出資のプロセスがお互いに信号を送り、さらには誰が所有するプロセスは、他の誰もが所有するプロセスのメモリを読み書きできることを意味し、Linux上でお互いをPTRACEすることができます。

これはnobody/etc/passwdファイル内のユーザーのサンプルエントリです。

alaa@aa-lu:~$ grep nobody /etc/passwd
nobody:x:65534:65534:nobody:/nonexistent:/bin/sh

お気づきかもしれませんが、nobodyユーザーは/bin/shログインシェルおよび/nonexistentホームディレクトリとして機能します。名前が示すように、/nonexistentデフォルトでは ディレクトリは存在しません。

もしあなたが妄想しているのなら、nobodyのデフォルトシェルを 設定することができ/usr/sbin/nologin、そのnobodyユーザーのsshログインを拒否します。

ソースLinuxG.net-LinuxおよびUnixの誰もいないユーザー


Wikipediaから誤った段落が削除された場合、この回答は+1に値します。ありがとう。
sarnold

3

誰も特別なユーザーおよびグループアカウントではありません。これは実際のユーザー名(およびグループ名)であり、プロセスやユーザーでさえ使用できるため、文字通りnobodyではありませ。たとえば、一部のApache構成には、Webサイトのファイルとディレクトリを所有するユーザー/グループとして誰もいない。問題は、NFSディレクトリやWebサーバーなど、複数のプロセスがnobodyユーザーを使用する場合に発生します。


0

' 小さな修正' ユーザーnobodyはNFS専用です。'答え。nobodyまた、ユーザーは、この時点でバインドマウントと特権のないコンテナに使用されます。

これは、systemd-nspawn、特に--bindマウントオプションから取得されます。

このオプションを--private-usersと組み合わせて使用​​する場合、結果のマウントポイントはnobodyユーザーが所有することに注意してください。これは、マウントとそのファイルとディレクトリが、コンテナに存在しない関連するホストユーザーとグループによって引き続き所有され、ワイルドカードUID 65534(nobody)の下に表示されるためです。そのようなバインドマウントが作成された場合、-bind-ro =を使用して読み取り専用にすることをお勧めします。

systemd-nspawn

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