id および whoami コマンドは他のユーザーを表示します。

id および whoami コマンドは他のユーザーを表示します。

最近奇妙なことを見つけて、この動作について説明してもらいました。

# Ok, I logged in as root

# Am I root? Sure.
╭─root@s1 ~
╰─# whoami && id
root
uid=0(root) gid=0(root) groups=0(root)


# Now i want to log in as user1
╭─root@s1 ~
╰─# su - user1


# What? nginx instead of user1?
╭─nginx@s1 ~
╰─$ whoami && id
nginx
uid=498(nginx) gid=500(user1) groups=500(user1)


# So, what is my home dir?
╭─nginx@s1 ~
╰─$ echo $HOME
/home/user1

したがって、質問は次のようになります。whoamiidコマンドが他のユーザーを表示するのはなぜですか?

私はこのサーバーの管理者ではなく、彼がサーバーに何をしたのかわかりませんが、この質問は私にとって興味深かったです。

答え1

安全ですか?

これはオペレーティングシステムを損なうことなくnginxを監視することができます(そしてnginxはあなたを監視します)。オペレーティングシステムのリスクよりも人間(したがってあなたの質問)に対する妨害が大きいです。

Unix / Linuxカーネルの場合、プロセスとファイルはユーザーIDによって制御されます(単純化のためにグループを削除します)。

psまたはと一緒に使用すると、ls -lこれらのコマンド(psおよび)はIDとユーザー名が一致するようにls読み取られます。/etc/passwdIDが複数回言及されている場合は、最初の発生で停止するのがルールです。

どのように2人のユーザーが同じIDを持つことができますか?

ただし、既定のオプションを使用すると、useraddこれらの競合の問題を回避できます。

  1. useradd既存のIDを強制的に使用できます(-o--non-uniqueオプション)。
  2. /etc/passwd手動で編集したり、スクリプトに複数のユーザーを含めることができます。

あなたの場合、管理者は意図的にこれを行っていない可能性があります。管理するホストが多いシェルだけがあり、競合する問題があるかどうかを確認していません。

nginxホストの作成時にインストールできるため(インストールプロセスでユーザーが作成されますnginx

nginx:x:498:498::/var/www:/bin/false

到着/etc/passwd

/etc/passwd次に、後で編集とmkdir+の組み合わせでユーザーを追加し、chown順番に追加します。

user1:x:498:500::/home/user1:/bin/zsh
user2:x:499:500::/home/user2:/bin/zsh

到着/etc/passwd

誰かが故意にこのようなことをする理由は何ですか?

複数のログインシェル(例:bash、csh、fish、kde...)が必要な場合があります。その場合は複数のエントリを使用できます。たとえば、次のようになります。

archemar:x:101:101:Archemar:/home/archemar/bash:/bin/bash
arcsh:x:101:101:Archemar:/home/archemar/csh:/bin/csh
arfish:x:101:101:Archemar:/home/archemar/fish:/bin/fish
arkde1:x:101:101:Archemar:/home/archemar/kde1:/bin/bash
arkde2:x:101:101:Archemar:/home/archemar/kde2:/bin/bash

これにより、別のログインを使用し、特定の設定ファイルを維持しますsudochshコマンドです。

上記の構成は、システム管理者が目を痛めるようになります。他の$HOME値は異なる結果を生成しますPATH=$HOME/bin:..(あなたが探しているものです)。しかし、まだ共通の部分が必要であり、最終的に$PATH構成が最も適していません。最も簡単です。

自動化されたソフトウェアテストを実行し、別のディレクトリ(この場合はホームディレクトリ)を維持し、テストユーザーに一意のIDを提供することもできます。

しかし、私の言葉は...

pwck(パスワード確認)警告が発生します。

関連情報