test
インストール中にシステムにログインするために使用するユーザーを作成したとします。私のrootユーザーは " root
"です。また、ユーザーごとに2つのターミナルセッションを個別に開きました。今問題は " w
"、" who
"、または" finger
"コマンド(私のルートターミナルセッションで)ログインしたすべてのユーザーを一覧表示するには、test
ユーザー " "が2回入ってくるのを見ることができます(他のTTYを使うtest
)、実際には ''&''でなければなりませんroot
。新しいユーザー「」を作成しても、test1
元のユーザー名「」が現在ログインしているユーザーの名前であることがわかります(test
コマンド出力)。次のように:w
who
finger
なぜこれですか?
PS:使用RHEL7
答え1
su - username
他のユーザーのログインに使用する新しい端末ウィンドウ
これはあなたの思考エラーです。 誰ですかいいえログイン。
su
ログインセッションは作成されません。ログインメカニズムではありません。別のユーザーアカウントでプログラムを実行するように「ユーザーを切り替える」と、そのユーザーが使用できる権限の総数にそのアカウントの権限を追加します。既存のログインセッションそれは実行され続けます。
これらのさまざまなコマンドで報告されるログインデータベースには、ログインセッションが一覧表示されます。権限の追加既存のもちろん、セッションはこれを変更しません。
(一部のGUI端末エミュレータ(すべてではありません)は、提供する各エミュレートされた端末のログインデータベースエントリを追加します。あなたの場合はそうです。いいえ su
行為。このエントリは、端末を使用su
してシェルでコマンドを実行するずっと前に追加されました。 )
追加読書
- ジョナサンデボインポラード(2014)。ユーザー権限を削除するためにsuを乱用しないでください。。よく与えられる答えです。
- ジョナサンデボインポラード(2018)。Unixログインデータベース。よく与えられる答えです。
- https://unix.stackexchange.com/a/441817/5132
- https://unix.stackexchange.com/a/283543/5132
答え2
test
以前にユーザーが使用していたセッションを終了したことがありますかkill -9
?
utmp
オペレーティングシステムとオペレーティングシステムがファイルの更新を処理する方法によっては、ユーザーwtmp
セッションを終了すると、ファイルkill -9
のセッション履歴がutmp
「セッションアクティブ」のままになることがあります。
同じ(擬似)TTYデバイスを使用する新しいセッションが初期化されると、エントリに書き込まれたコードは、utmp
TTYデバイスのスロットがアクティブアイテムですでに使用されていることを確認し、次の空きスロットを使用します。
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 -9
kill -KILL
答え3
あなたが書いた
また、ユーザーごとに2つのターミナルセッションを個別に開きました。
その後、コメントで新しい端末ウィンドウを開き、次のように指定しました。
次に、「su - ユーザー名」を使用して別のユーザーにログインします。
ターミナルウィンドウを開くと、アイテムが作成されますutmp
。このsu
コマンドはそうではありません。したがって、あなたが開くすべてのウィンドウは、あなたがログインした元のユーザーアカウントに登録されます。