2017-12-07 8 views
0

ich über SSH als Benutzer angemeldet, die gerade angemeldet wurde.Shell-Skript ausgeführt als root, wenn sie als aktuelle angemeldeten Benutzers ausführen soll

ich den Remote-Computer mit meinem Admin-Konto einzugeben.

ssh [email protected] 

fuhr dann fort mit:

su username_b (current login user) 

Das Ergebnis hat mich in der Bash-Prompt (was ich nicht verstehe) als der aktuelle Benutzer angemeldet (getestet diese whoami durch).

Q1: Wenn ich an den Benutzer wechseln, wer angemeldet ist, warum es mich in bash-Prompt setzen (das heißt ~bash$) - warum nicht ~ username_of_current_user$?

Nachdem ich das Bash-Skript erstellt und in das Verzeichnis des aktuellen Benutzers gestellt habe - das Skript wird von den Start-Agenten aufgerufen, obwohl es nicht funktioniert.

Die Fehlerprotokolle zeigten, dass eine der Variablenausgabe falsch ist: whoami = root, wenn es sollte = current_user_logged_in.

Q2: Warum wird das Skript von root aufgerufen?

+1

Try 'su - username_b' oder' su -l username_b' (sie sind gleich) eine vollständige Anmeldung als 'username_b' Benutzer zu emulieren. Die Umgebung wird minimal durch 'su benutzername_b' modifiziert. –

Antwort

1

su - ruft eine Login-Shell auf, nachdem der Benutzer gewechselt wurde. Eine Login-Shell setzt die meisten Umgebungsvariablen zurück und bietet eine saubere Basis.

su schaltet nur den Benutzer, bietet eine normale Shell mit einer Umgebung fast die gleiche wie mit dem alten Benutzer.

Das offensichtlichste Beispiel hierfür ist, dass ~ das Home-Verzeichnis von root ist, wenn Sie su - verwenden, aber Ihr eigenes Home-Verzeichnis, wenn Sie su verwenden.

Abhängig von Ihrem System kann es auch Unterschiede in prompt, PATH oder history file bedeuten.

Für weitere Informationen:

https://unix.stackexchange.com/questions/7013/why-do-we-use-su-and-not-just-su

Verwandte Themen