追加読書

追加読書

testインストール中にシステムにログインするために使用するユーザーを作成したとします。私のrootユーザーは " root"です。また、ユーザーごとに2つのターミナルセッションを個別に開きました。今問題は " w"、" who"、または" finger"コマンド(私のルートターミナルセッションで)ログインしたすべてのユーザーを一覧表示するには、testユーザー " "が2回入ってくるのを見ることができます(他のTTYを使うtest)、実際には ''&''でなければなりませんroot。新しいユーザー「」を作成しても、test1元のユーザー名「」が現在ログインしているユーザーの名前であることがわかります(testコマンド出力)。次のように:wwhofingerRHEL7端子 なぜこれですか?

PS:使用RHEL7

答え1

su - username他のユーザーのログインに使用する新しい端末ウィンドウ

これはあなたの思考エラーです。 誰ですかいいえログイン。

suログインセッションは作成されません。ログインメカニズムではありません。別のユーザーアカウントでプログラムを実行するように「ユーザーを切り替える」と、そのユーザーが使用できる権限の総数にそのアカウントの権限を追加します。既存のログインセッションそれは実行され続けます。

これらのさまざまなコマンドで報告されるログインデータベースには、ログインセッションが一覧表示されます。権限の追加既存のもちろん、セッションはこれを変更しません。

(一部のGUI端末エミュレータ(すべてではありません)は、提供する各エミュレートされた端末のログインデータベースエントリを追加します。あなたの場合はそうです。いいえ su行為。このエントリは、端末を使用suしてシェルでコマンドを実行するずっと前に追加されました。 )

追加読書

答え2

test以前にユーザーが使用していたセッションを終了したことがありますかkill -9

utmpオペレーティングシステムとオペレーティングシステムがファイルの更新を処理する方法によっては、ユーザーwtmpセッションを終了すると、ファイルkill -9のセッション履歴がutmp「セッションアクティブ」のままになることがあります。

同じ(擬似)TTYデバイスを使用する新しいセッションが初期化されると、エントリに書き込まれたコードは、utmpTTYデバイスのスロットがアクティブアイテムですでに使用されていることを確認し、次の空きスロットを使用します。

wその後、whoまたは同じコマンドはfinger一度に1人のユーザーだけがTTYデバイスを使用できるという合理的な期待を持っているので、特定のTTYデバイスの1つのアイテムを見つけると他のアイテムを見つけることはありません...無効な古い項目を表示します。

このutmpdumpコマンドを使用すると、utmpバイナリファイルをテキスト形式でダンプし、utmpの破損が発生したかどうかを確認できます。その後、テキストバージョンを編集して古いアイテムを削除し、それを使用して破損したアイテムを削除したutmpdump -r新しいバイナリを再構築できます。utmp

または、すべてのユーザーをしばらくログアウトしたままにできる場合は、他のユーザーをログアウトし、utmpファイルを0サイズに切り捨ててから、ログアウトして再度ログインします。

# echo "Everyone logout now, please" | wall
# > /var/run/utmp
# <logout>

今後この問題を最初から回避するには、orのkill -HUP代わりにtoを使用してシェルセッションを終了してください。kill -9kill -KILL

答え3

あなたが書いた

また、ユーザーごとに2つのターミナルセッションを個別に開きました。

その後、コメントで新しい端末ウィンドウを開き、次のように指定しました。

次に、「su - ユーザー名」を使用して別のユーザーにログインします。

ターミナルウィンドウを開くと、アイテムが作成されますutmp。このsuコマンドはそうではありません。したがって、あなたが開くすべてのウィンドウは、あなたがログインした元のユーザーアカウントに登録されます。

関連情報