Назад | Перейти на главную страницу

разрешение отклонено с использованием sudo

У меня есть псевдоним в моем файле .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. У меня была эта проблема, как только я установил правильные разрешения, она сработала для меня