$ LOGNAMEとログ名の違い


12

ときecho $LOGNAMElognameコマンドが正常に動作し、次のように同じ結果が得られます。

pandya@pandya-desktop:~$ echo $LOGNAME
pandya
pandya@pandya-desktop:~$ logname
pandya

それで、それらの間に何か違いがありますか?

回答:


17

環境変数から、

$LOGNAME$USER与えるものと同じ

現在ログインしているユーザーの名前。この変数はシステムによって設定されます。値を手動で変更しないでください。

から man logname

logname-ユーザーのログイン名を出力します


次の例で使用方法が異なる Expained :

pandya@pandya-desktop:~$ sudo su
root@pandya-desktop:/home/pandya# echo $LOGNAME
root
root@pandya-desktop:/home/pandya# logname
pandya
root@pandya-desktop:/home/pandya# exit
exit
pandya@pandya-desktop:~$

ここでは、ターミナルにrootとしてログインした後の違いを確認できます。

  • $LOGNAME端末に現在ログインしているユーザーの名前を示します(つまりroot
  • 一方、セッションlognameログインしたユーザーのログイン名を印刷します(つまりpandya


6

16.04ではユーティリティのログ名が壊れていますが、これは意図的なものであり、返される値をハッキングすることが可能であり、セキュリティ上の欠陥である可能性があります。 https://bugzilla.gnome.org/show_bug.cgi?id=747046 一部のスクリプトでlognameを使用していて、それを私自身のレベルまたはsudo呼び出しからの環境変数$ USERおよび$ LOGNAMEはそうではありません。私は誰かが私のコンピュータに侵入して、それが返す値を変更することを心配していませんでした。ああ....回避策を見つけました。そのようにホームディレクトリにファイルを作成しました

echo $USER > ~/.logname

私が自分のログ名にアクセスする場合(たとえば、Bash変数g_lognameに割り当てる)、こうすることでアクセスします。

declare g_logname="$(<~/.logname)";

これは、自分自身でも、sudoを介したルートレベルでも機能します。ホームディレクトリとして「〜」の割り当てを維持します。システム上の各ユーザーのホームディレクトリ用の.lognameファイルを作成できます。はい、誰かが私のコンピュータに侵入してこれらのファイルを変更する可能性がありますが、私はそれについて本当に心配していません。スクリプトを機能させたいだけです。

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