Ich habe RHEL 7 und möchte die Umgebungsvariable für sudo festlegen.
Ich habe es ausgeführt sudo su
, um zum Root-Benutzer zu wechseln und export
seine .bashrc
Datei hinzuzufügen. Dann habe ich sie mit neu geladen source
.
Wenn ich jetzt env
im root
Modus laufe, hat es eine Umgebungsvariable. Wenn ich es jedoch beende und laufe, sudo env
hat es keine Umgebungsvariable.
Warum passiert das?
Antwort1
sudo
führt Programme in seiner eigenen, begrenzten Umgebung aus (siehe Abschnitt UMGEBUNG im Handbuch man sudo
). Es wird nicht implizit bash
zum Ausführen von Programmen verwendet und ~/.bashrc
wird daher nicht ausgeführt, obwohl Sie es explizit aufrufen können:
sudo bash --rcfile=~root/.bashrc -c ProgramAndParameters
Sie können in der Ausführungszeichenfolge eine Umgebungsvariable festlegen:
sudo variable=value ProgramAndParameters
Sie können für beides standardmäßig einen Alias oder eine Funktion verwenden.
Sie können alternativ eine Umgebungsdatei hinzufügen /etc/sudoers
( man sudoers
weitere Informationen finden Sie unter).
Antwort2
sudoers-Eintrag wie unten
%DBTEAM ALL = (oracle) NOPASSWD: ALL
DBTEAM --> Gruppenname
Oracle --> Oracle-Benutzername
Wechseln Sie zum Zielbenutzer ohne Umgebungsvariable
sudo -s -u oracle
Wechseln Sie zum Zielbenutzer mit der Umgebungsvariable
sudo -i -u oracle