Как добавить параметры оболочки при выполнении команд с su?

380
Rusty Weber

Ситуация. Я отлаживаю среду ограниченного пользователя, который связан со специальной оболочкой. Чтобы сделать это, мне нужно запустить команду от имени этого пользователя в полном контексте, используя su, как показано ниже:

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

Очевидно, я могу изменить команду и параметры команды, которую будет выполнять / bin / custom_shell, но как добавить параметр, с которым будет выполняться custom_shell? Пример эквивалента добавления параметра "--debug":

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

Примечание: sudo не будет работать для этого, так как существует много переменных профиля и изменений рабочего каталога, которые происходят при входе в систему. Отсюда причина, по которой я использую su. Кроме того, это странная прерывистая проблема, которую я должен иметь возможность сценария и запускать иначе, su - $ user и выполнение команды вручную может сработать ... Однако у меня нет такой роскоши.

0
Но разве все эти пользовательские переменные профиля не загружены в оболочку пользователя? Действительно ли имеет значение, вызывается ли он --shell su, а не другим способом? grawity 6 лет назад 0
Да .. Это важно. sudo -u $ user echo 1 очень отличается от контекста безопасности и рабочего каталога, чем su - $ user --command "echo 1". Rusty Weber 6 лет назад 0
Я думаю, это в основном потому, что вы передаете опцию `-l` /` --login` в su, но не в sudo. (И вообще, что делает --login? Он запускает саму оболочку с опцией -l. Больше ничего.) grawity 6 лет назад 0

0 ответов на вопрос

Похожие вопросы