Wie sende ich als Root (oder ein anderer Benutzer) eine Pinnwand-Nachricht, ohne dass der ursprüngliche Benutzer identifiziert wird?
Wenn ich mir das Folgende anschaue, hätte ich erwartet, dass an der Wand die Nachricht angezeigt wirdvon rootaber es zeigt immer nochAdministrator1, Was vermisse ich?
Ich habe verschiedene sudo -i, -s ausprobiert, -c zum Senden von Befehlen verwendet, tmux, runuser, aber immer das gleiche Ergebnis. Ist es eine globale Einstellung in sudoers oder etwas anderes?
Zum Kontext: Dies war eine Testfrage, die ich nicht verstehen konnte und auf die ich keine Antwort bekommen habe!
[admin1@RHELPOC ~]$ sudo su -
[root@RHELPOC ~]# id
uid=0(root) gid=0(root) groups=0(root) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
[root@RHELPOC ~]# wall "whoisthis"
Broadcast message from admin1@RHELPOC (pts/0) (Fri Jan 8 13:58:40 2021):
whoisthis
Antwort1
Dies liegt daran, dass wall
es verwendet wird getlogin()
, um den Namen des Benutzers zu ermitteln.
if (!(whom = getlogin()) || !*whom)
whom = (pw = getpwuid(getuid())) ? pw->pw_name : "???";
if (!whom) {
whom = "someone";
warn(_("cannot get passwd uid"));
}
Und dann:
snprintf(lbuf, line_max,
_("Broadcast message from %s@%s (%s) (%s):"),
whom, hostname, where, date);
Aus der getlogin
Manpage:
getlogin() gibt einen Zeiger auf eine Zeichenfolge zurück, die den Namen des Benutzers enthält, der am Steuerterminal des Prozesses angemeldet ist, oder einen NULL-Zeiger, wenn diese Information nicht ermittelt werden kann.
...
Mit diesen Funktionen kann Ihr Programm eindeutig den Benutzer identifizieren, der ausgeführt wird (cuserid()) oder der sich in dieser Sitzung angemeldet hat (getlogin()). (Diese können abweichen, wenn Set-User-ID-Programme beteiligt sind.)