Разрешить запуск сценария оболочки, содержащего sudo

Я пытаюсь разрешить конкретному пользователю запускать определенный файл .sh, в котором есть sudo chmod.

Я следовал этому руководству: Как разрешить выполнение команды для конкретного пользователя без пароля с файлом sudoers?

Мой файл sudoers теперь выглядит так:

the_user ALL=(ALL:ALL) NOPASSWD: /var/www/html/storage/fix_cache_permissions.sh

Однако, когда я запускаю команду:

sh /var/www/html/storage/fix_cache_permissions.sh

он умирает с этой ошибкой:

sudo: no tty present and no askpass program specified

Обновление

Я пробовал оба с sudo внутри файла .sh и снаружи при запуске команды. Оба результата приводят к одному и тому же сообщению об ошибке.

0
задан 30 September 2019 в 09:10

1 ответ

Вы пропускаете что-то здесь. sudoers файл относится к эти sudo команда. Путем выполнения sh yourprogram.sh Вы не используете эти sudo команда, Вы используете sh тот, который в свою очередь будет использовать sudo впоследствии.

, Таким образом, корректный способ выполнить, что Вы хотите, путем маркировки сценария как исполняемый файл так, чтобы пользователь затем мог записать

sudo /var/www/html/storage/fix_cache_permissions.sh

, и это не попросит пароль.

Примечания:

  1. , Так как Вы получаете эту ошибку, которая означает, что Вы не выполняете команду от своего рода терминала. Если это не просит пароль затем, я думаю, что это не будет проблемой.

  2. порядок команд в sudoers файле важен, и они переопределяют друг друга. При означании, что, если Вы пишете Вам, управляют и впоследствии в файле, существует что-то вроде этого:

    %sudo   ALL=(ALL:ALL) ALL
    

    Это переопределит что-либо. Так помещает Вашу строку в последние строки sudoers файла.

  3. Используя этот метод можно на самом деле удалить sudo в файле, так как весь сценарий будет работать как корень.

3
ответ дан 23 October 2019 в 10:28

Другие вопросы по тегам:

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