Ich habe zwei Benutzer namens Alice und Sally auf meinem Ubuntu 22.04-System. Alice hat ihre Umgebungsvariablen in der .profile-Datei konfiguriert und sie funktionieren für sie ordnungsgemäß. Wenn Alice jedoch mit dem Befehl sudo -s -u sally zum Benutzer Sally wechselt, werden die Umgebungseinstellungen aus Alices .profile nicht für Sally übernommen.
alice@dev7 192 0 % echo $appuser
alice
alice@dev7 193 0 % env | grep appuser
appuser=alice
alice@dev7 194 0 % sudo -s -u sally
sally@dev7 196 0 % echo $appuser
sally@dev7 197 0 %
Ich habe überprüft, dass die .profile-Datei in Sallys Home-Verzeichnis vorhanden ist und die erforderliche Konfiguration aufweist. Ich möchte verstehen, warum die Umgebungsvariablen für Sally nicht angewendet werden, wenn Alice mit sudo -s -u sally zu ihrem Benutzer wechselt. Sind zusätzliche Schritte oder Konfigurationen erforderlich, um sicherzustellen, dass die Umgebungseinstellungen übernommen werden, wenn Benutzer auf diese Weise gewechselt werden?
Antwort1
~/.profile
wird bei der Benutzeranmeldung verwendet ... Daher sudo -u user
müssen Sie dies verwenden, -i, --login
um „die durch den Kennwortdatenbankeintrag des Zielbenutzers angegebene Shell als Anmelde-Shell auszuführen“, und zwar wie folgt:
sudo -i -u sally
Beachten: Sie können die Optionen -i
und nicht gleichzeitig angeben -s
.
Wenn Sie jedoch die Shell-Wahl Ihres aktuellen Benutzers beibehalten möchten, können Sie sudo su ...
Folgendes verwenden:
sudo su - sally --shell "$SHELL"
oder geben Sie die Shell Ihrer Wahl beispielsweise /bin/bash
folgendermaßen an:
sudo su - sally --shell /bin/bash
unabhängig von der Shell, die durch den Kennwortdatenbankeintrag des Zielbenutzers angegeben ist.