Wie fügt man beim Ausführen von Befehlen mit su Shell-Parameter hinzu?

432
Rusty Weber

Die Situation. Ich debugiere die Umgebung eines eingeschränkten Benutzers, der in eine spezielle Shell umbenannt wird. Dazu muss ich als Benutzer einen Befehl in seinem vollständigen Kontext ausführen und dabei su wie folgt verwenden:

su - $user -c "echo hello world" --shell /bin/custom_shell 

Ich kann natürlich den Befehl und die Parameter des Befehls, den / bin / custom_shell ausführen wird, ändern. Wie füge ich jedoch einen Parameter hinzu, mit dem die custom_shell ausgeführt wird? Beispiel für das Hinzufügen eines Parameters "--debug":

root->su - $user $user->/bin/custom_shell --debug --command "echo hello world" 

Hinweis: Sudo wird dafür nicht funktionieren, da beim Anmelden viele Profilvariablen und Änderungen im Arbeitsverzeichnis vorgenommen werden. Daher benutze ich su. Dies ist auch ein seltsames, zeitweiliges Problem, das ich in der Lage sein muss, Skripts zu erstellen und ansonsten auszuführen. Su - $ user und das Ausführen des Befehls von Hand könnte funktionieren. Allerdings habe ich diesen Luxus nicht.

0
Aber werden nicht alle diese benutzerdefinierten Profilvariablen _by_ von der Shell des Benutzers geladen? Ist es wirklich wichtig, ob es von su'sshell aufgerufen wird und nicht auf andere Weise? grawity vor 5 Jahren 0
Ja .. es ist wichtig. sudo -u $ user echo 1 unterscheidet sich stark von einem Sicherheits- und Arbeitsverzeichniskontext als su - $ user --command "echo 1". Rusty Weber vor 5 Jahren 0
Ich denke, das liegt hauptsächlich daran, dass Sie die `-l` /` --login`-Option an su übergeben, aber nicht an sudo. (Und was macht --login überhaupt? Es führt die Shell selbst mit der Option -l aus. Sonst nicht viel.) grawity vor 5 Jahren 0

0 Antworten auf die Frage