Unterschied zwischen $ LOGNAME und logname


11

Wenn echo $LOGNAMEoder lognameBefehle normalerweise ausgeführt werden, erhalten Sie dasselbe Ergebnis wie folgt:

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

Gibt es einen Unterschied zwischen ihnen?

Antworten:


16

Aus Umgebungsvariablen ,

$LOGNAMEist das gleiche wie $USERwas gibt

Der Name des aktuell angemeldeten Benutzers. Diese Variable wird vom System festgelegt. Sie sollten den Wert wahrscheinlich nicht manuell ändern.

Von man logname

logname - Anmeldename des Druckers


Im folgenden Beispiel anders verwendet :

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:~$

Hier sehen Sie Unterschiede nach der Anmeldung als root im Terminal,

  • $LOGNAMEgibt den Namen des aktuell im Terminal angemeldeten Benutzers an (dh root)
  • Während der lognameAnmeldename des Druckbenutzers, der sich in der Sitzung angemeldet hat (dh pandya)


5

Das Dienstprogramm logname wurde in 16.04 unterbrochen, anscheinend absichtlich, weil es möglich ist, den zurückgegebenen Wert zu hacken, was eine Sicherheitslücke sein könnte. https://bugzilla.gnome.org/show_bug.cgi?id=747046 Ich habe in einigen Skripten logname verwendet und fand es nützlich, weil es immer den gleichen Wert (meinen Anmeldenamen) zurückgab, unabhängig davon, ob ich es von einem aus anrief meine eigene Ebene oder von einem Sudo-Aufruf, während die Umgebungsvariablen $ USER und $ LOGNAME dies nicht tun. Ich habe mir keine Sorgen gemacht, dass sich jemand in meinen Computer hackt und den zurückgegebenen Wert ändert. Leider ... habe ich eine Problemumgehung gefunden. Ich habe eine Datei in meinem Home-Verzeichnis als solche erstellt

echo $USER > ~/.logname

Wenn ich auf meinen Lognamen zugreifen möchte (z. B. einer Bash-Variablen g_logname zuweisen), gehe ich folgendermaßen vor:

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

Dies funktioniert für mich, ob als ich selbst oder auf der Root-Ebene durch sudo, das die Zuweisung von "~" als mein Home-Verzeichnis beibehält. Ich kann eine .logname-Datei für das Home-Verzeichnis jedes Benutzers auf dem System erstellen. Ja, jemand könnte sich in meinen Computer hacken und diese Dateien ändern, aber ich mache mir darüber keine großen Sorgen. Ich möchte nur, dass meine Skripte funktionieren.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.