Wie wechsle ich den Benutzer, ohne dass ein Verweis auf den alten erfolgt?

Wie wechsle ich den Benutzer, ohne dass ein Verweis auf den alten erfolgt?

Als ich vor einiger Zeit mit dem nicht privilegierten LXC spielte, stellte ich fest, dass der Befehl zum Erstellen eines Containers fehlschlug, wenn ich suzum Benutzer wechselte, aber funktionierte, wenn ich ssh user@localhostmich 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 suund sshbesteht 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 bashfü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 --loginund 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 loginvon 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 exitvon dort aus wie folgt vorgehen su.

verwandte Informationen