Jak dodać parametry powłoki podczas wykonywania poleceń za pomocą su?

0

Sytuacja. Debuguję środowisko użytkownika z ograniczonym dostępem, który jest przeniesiony do specjalnej powłoki. Aby to zrobić, muszę uruchomić polecenie jako ten użytkownik w pełnym kontekście, używając su w następujący sposób:

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

Mogę oczywiście zmienić komendę i parametry komendy, którą wykona / bin / custom_shell, ale jak dodać parametr, z którym będzie wykonywany custom_shell? Przykładowy odpowiednik dodania parametru „--debug”:

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

Uwaga: sudo nie będzie działać z tego powodu, ponieważ podczas logowania jest wiele zmiennych profilu i zmian w katalogu roboczym. Dlatego używam su. Jest to również dziwny, sporadyczny problem, który wymaga skryptu i uruchomienia w inny sposób, su - $ user i ręczne uruchomienie polecenia może działać .. Jednak nie mam tego luksusu.

Rusty Weber
źródło
Ale czy nie są ładowane wszystkie te niestandardowe zmienne profilu przez powłoka użytkownika? Czy to naprawdę ma znaczenie, czy jest wywoływane przez su -shell, a nie w inny sposób?
grawity
Tak .. To ma znaczenie. sudo -u $ użytkownik echo 1 różni się bardzo od kontekstu bezpieczeństwa i roboczego katalogu niż su - $ user --command "echo 1".
Rusty Weber
Myślę, że to głównie dlatego, że mijasz -l / --login opcja su, ale nie sudo. (A co w takim razie robi --login? Uruchamia powłokę z opcją -l.
grawity