Я должен смочь запустить два скрипта удара как sudo, не имея необходимость обеспечивать пароль.
Один из этих скриптов запущен на запуске, он проверяет на неактивность, и если так, потускнел ключи моего ноутбука с подсветкой.
Другой сценарий - просто что-то, что я использую много, таким образом, его удобное для выполнения его без пароля.
У меня была эта работа некоторое время, но во время обновления недавно, был перезаписан мой/etc/sudoers файл. Мне сохранили мою измененную копию, но по некоторым причинам, строки, которые я поместил там, больше не работают, меня просят обеспечить пароль.
Я нахожусь на Ubuntu 16.04. Вот мой текущий/etc/sudoers файл:
#
# This file MUST be edited with the 'visudo' command as root.
#
# Please consider adding local content in /etc/sudoers.d/ instead of
# directly modifying this file.
#
# See the man page for details on how to write a sudoers file.
#
Defaults env_reset
Defaults mail_badpass
Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin"
# Host alias specification
# User alias specification
# Cmnd alias specification
# User privilege specification
root ALL=(ALL:ALL) ALL
# CUSTOM:
ali ALL= NOPASSWD: /usr/local/bin/dim_keyboard.sh
ali ALL= NOPASSWD: /usr/local/bin/go
# Members of the admin group may gain root privileges
%admin ALL=(ALL) ALL
# Allow members of group sudo to execute any command
%sudo ALL=(ALL:ALL) ALL
# See sudoers(5) for more information on "#include" directives:
#includedir /etc/sudoers.d
Эти строки:
ali ALL= NOPASSWD: /usr/local/bin/dim_keyboard.sh
ali ALL= NOPASSWD: /usr/local/bin/go
то, что я вставил.
От рассмотрения подобных вопросов я, кажется, использую правильный синтаксис, но по некоторым причинам эти строки все еще не будут работать.
Какие-либо идеи?
Почему мы должны даже использовать sudo
для этого приложения?
можно использовать программу такой в качестве shc
, чтобы "скомпилировать" сценарии оболочки в автономный исполняемый двоичный файл, который можно просто добавить к sudoers
файл. Или, можно даже установить setuid
бит на нем так, это на самом деле работает как корень, не нуждаясь sudo
.
Так, давайте попробуем пример:
shc -f myscript.sh -o myscript
sudo chown -R root:root myscript
sudo chmod a+x myscript
sudo chmod u+s myscript
Это возьмет сценарий оболочки и превратит его в исполняемый файл C, который имеет setuid
корень. Каждый раз, когда это называют (с или без sudo
), это должно всегда работать (эффективно) как пользователь root.