
Als ich vor einiger Zeit mit dem nicht privilegierten LXC spielte, stellte ich fest, dass der Befehl zum Erstellen eines Containers fehlschlug, wenn ich su
zum Benutzer wechselte, aber funktionierte, wenn ich ssh user@localhost
mich anmeldete.
Dies ist keine LXC-bezogene Frage, aber ich frage mich, wie ich am besten den Benutzer wechseln kann, ohne Referenzen zu hinterlassen oder Variablen vom alten Benutzer mitzunehmen?
Danke!
Antwort1
Ein Unterschied zwischen su
und ssh
besteht darin, dass letzteres tatsächlich eine Login-Shell beinhaltet, während dies bei ersterem standardmäßig nicht der Fall ist – obwohl es eine neue interaktive Shell erstellt (siehe INVOCATION oben in man bash
für die Bedeutung voninteraktivUndAnmeldungMuscheln). Von man su
:
Aus Gründen der Abwärtskompatibilität ändert su standardmäßig das aktuelle Verzeichnis nicht und setzt nur die Umgebungsvariablen HOME und SHELL (plus USER und LOGNAME, wenn der Zielbenutzer nicht root ist). Es wird empfohlen, immerverwenden Sie die Option --login(anstelle der Abkürzung -), um Nebenwirkungen durch das Mischen von Umgebungen zu vermeiden.
Sie können es also ausprobieren su --login
und prüfen, ob es das gewünschte Ergebnis bringt.
Ich gehe davon aus, dass Sie eine GUI verwenden, weshalb Sie nicht einfach beenden und sich erneut anmelden. DasMaiist ohnehin möglich (hängt, glaube ich, von Ihrem Init-System ab), indem Sie es einfach login
von dem Terminal aus ausführen, das Sie verwenden. Wenn es funktioniert, sollten Sie die normale login:
Eingabeaufforderung sehen und wenn Sie fertig sind, können Sie exit
von dort aus wie folgt vorgehen su
.