Linux, sudo env hat keine Umgebungsvariable, während der Root-Benutzer hat

Linux, sudo env hat keine Umgebungsvariable, während der Root-Benutzer hat

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 exportseine .bashrcDatei hinzuzufügen. Dann habe ich sie mit neu geladen source.

Wenn ich jetzt envim rootModus laufe, hat es eine Umgebungsvariable. Wenn ich es jedoch beende und laufe, sudo envhat es keine Umgebungsvariable.

Warum passiert das?

Antwort1

sudoführt Programme in seiner eigenen, begrenzten Umgebung aus (siehe Abschnitt UMGEBUNG im Handbuch man sudo). Es wird nicht implizit bashzum Ausführen von Programmen verwendet und ~/.bashrcwird 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 sudoersweitere 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

verwandte Informationen