Выполнить скрипт оболочки без ввода пароля
Я хочу выполнить скрипт, который требует привилегий суперпользователя без ввода пароля. Есть похожие вопросы / ответы, но, похоже, не работает для меня.
Я поместил свой скрипт в /home/kf/bin (я сам добавил каталог bin) и включил этот каталог в свой путь, чтобы я мог запускать его из любого места.
Сценарий: trim.sh
:
#! /bin/sh
sudo fstrim -v /
Я изменил владельца сценария на root
:
sudo chown root:root /home/kf/bin/trim.sh
и сделал его исполняемым
sudo chmod 700 /home/kf/bin/trim.sh
Затем я добавил строку в мой файл sudoers с visudo
:
kf ALL=(ALL) NOPASSWD: /home/kf/bin/trim.sh
Когда я снова войду в систему и выполню скрипт с trim
Мне все еще нужно ввести свой пароль. Я знаю, что могу сделать cron для этого, но я также хочу иметь возможность выполнять скрипт вручную, не вводя мой пароль. Любая помощь приветствуется.
редактировать:
Мой файл sudoers выглядит так:
Defaults env_reset
Defaults mail_badpass
Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin: /usr/bin:/sbin:/bin"
root ALL=(ALL:ALL) ALL
kf ALL=(ALL) NOPASSWD: /home/kf/bin/trim.sh
%admin ALL=(ALL) ALL
%sudo ALL=(ALL:ALL) ALL
2 ответа
Измените строку в файле sudoers на:
kf ALL=(ALL) NOPASSWD: /sbin/fstrim
Я не рекомендую добавлять скрипт в /etc/sudoers
потому что сценарий может быть изменен и каждая команда (весь сценарий) будет выполняться с правами суперпользователя.