-2

Linux の場合、 lognameにstdin (入力リダイレクト) を指定すると、ユーザーを特定できないのはなぜですか?

@> echo `logname`
<username>
@> echo `logname` < /dev/null
logname: no login name
@> echo `logname` < /dev/tty
logname: no login name

Moverover これはwhoamiには影響しないようです。

@> echo `whoami`
<username>
@> echo `whoami` < /dev/null
<username>

編集: OS バージョンの追加 (複数の異なる Linux マシンでテスト)。

@> uname -a
Linux <machine1> 2.6.18-164.el5 #1 SMP Tue Aug 18 15:51:48 EDT 2009 x86_64 x86_64 x86_64 GNU/Linux
@> uname -a
Linux <machine2> 2.6.18-238.el5 #1 SMP Sun Dec 19 14:22:44 EST 2010 x86_64 x86_64 x86_64 GNU/Linux
@> uname -a
Linux <machine3> 3.0.13-0.27-default #1 SMP Wed Feb 15 13:33:49 UTC 2012 (d73692b) x86_64 x86_64 x86_64 GNU/Linux
4

1 に答える 1

0

Unix/Linux システムでは、複数のユーザーが異なるウィンドウやsshセッションなどからログインできます。現在ログインしている各ユーザーは、セッションに関連付けられている場合と関連付けられていない場合がありますttyttyユーザーにセッションが割り当てられている場合、そのセッションにログインしているユーザーとの関連付けがシステムttyファイルに保存されutmpます (パスは異なる場合があります)。lognameは、まずあなたが何をしているのかを確認ttyし、次にファイル内の関連付けられたレコードを検索して、あなたが誰であるかを確認したいと考えてutmpいます。を実行するとlogname < /dev/nulllognameは から関連付けが解除されるttyため、検索する必要があるレコードを見つけられません。そのため、「ログイン名がありません」と報告されます。

于 2013-11-13T17:55:49.527 に答える