#bash #shell
#bash #оболочка
Вопрос:
Я пытаюсь найти все скрипты bash в каталогах, затем я хотел бы запустить их все с другим пользователем. В файлах bash я использую команду, доступную только для другого пользователя.
Я пробовал эти команды:
sudo -H -u otherUser find . -maxdepth 3 -type f -name '*myBashFile' -execdir {} ;
find . -maxdepth 3 -type f -name sudo -H -u otherUser '*myBashFile' -execdir {} ;
sudo -H -u otherUser bash -c 'find . -maxdepth 3 -type f -executable -name '*myBashFile' -execdir {} ;'
Я всегда получал ‘command not found’ для моей собственной команды в скрипте bash.
Комментарии:
1. Имеет ли другой пользователь доступ к вашей собственной команде?
2. Да, это так, если я запускаю скрипт с этим пользователем, все работает нормально
3. как вы становитесь этим пользователем? находится ли ваша собственная команда в ПУТИ к другому пользователю?
4. используйте полный путь к скрипту bash, в скрипте bash используйте полный путь к команде
5. рассматриваемый «код» отличается от реальности до такой степени, что ответ, вероятно, невозможен
Ответ №1:
Спасибо за ответы, ключом был ПУТЬ, это окончательный код, который работает:
#!/usr/bin/env bash
export PATH=$PATH:/path/of/the/command/
echo otherUserPassword | su -c 'find . -maxdepth 3 -type f -executable -name '*myBashFile' -execdir {} ;' otherUser