Die Situation. Ich debugge die Umgebung eines eingeschränkten Benutzers, der auf eine spezielle Shell angewiesen ist. Dazu muss ich als dieser Benutzer einen Befehl in seinem vollständigen Kontext mit su wie folgt ausführen:
su - $user -c "echo hello world" --shell /bin/custom_shell
Ich kann natürlich den Befehl und die Parameter des Befehls ändern, den /bin/custom_shell ausführen wird, aber wie füge ich einen Parameter hinzu, mit dem custom_shell ausgeführt wird? Beispieläquivalent zum Hinzufügen eines „--debug“-Parameters:
root->su - $user
$user->/bin/custom_shell --debug --command "echo hello world"
Hinweis: sudo funktioniert hierfür nicht, da beim Anmelden viele Profilvariablen und Änderungen am Arbeitsverzeichnis stattfinden. Aus diesem Grund verwende ich su. Außerdem handelt es sich hierbei um ein seltsames, zeitweiliges Problem, das ich per Skript ausführen können muss. Andernfalls könnte es funktionieren, wenn ich su - $user verwende und den Befehl manuell ausführe. Diesen Luxus habe ich jedoch nicht.