У меня есть псевдоним в моем файле .bashrc, который запускает исполняемый файл python следующим образом:
alias my-command="sudo -u apache /path/to/file.py"
Когда я бегу my-command
Он запрашивает мой пароль sudo, а затем запускает файл .py.
Однако скрипт python записывает в файл журнала, в который только apache имеет разрешение на запись. Когда я бегу my-command
это говорит Permission denied
когда он пытается записать в этот файл.
Когда я бегу sudo -u apache /path/to/file.py
непосредственно скрипт работает нормально.
Что я здесь делаю не так? Было бы лучше изменить мой псевдоним на:
my-command="/path/to/file.py"
а затем запустите:
sudo -u apache my-command
Проблема была связана с относительными путями. Я использовал псевдоним my-command
из моего домашнего каталога. Мой скрипт python записывал в файл относительно рабочего каталога. Когда я запускал команду напрямую (без псевдонима), я запускал ее из местоположения сценария python, так что это был рабочий каталог, поэтому сценарий имел разрешение на запись в файл.
Итак, когда я запускаю команду alias из правильного каталога, все работает, как ожидалось.
Если вы хотите, чтобы этот псевдоним работал, убедитесь, что у пользователя и группы есть правильные разрешения для запуска этого файла - вы также хотите убедиться, что тот же пользователь пытается запустить псевдоним, например, вы не хотите быть foo user, а ваш .bashrc - для пользователя bar. У меня была эта проблема, как только я установил правильные разрешения, она сработала для меня