Вопрос или проблема
Если у меня есть пользовательский скрипт, и я хочу запустить его с правами sudo, но без запроса пароля, я обычно делаю запись в своем файле sudoers, как показано ниже:
username ALL = NOPASSWD: sha512:d5655d0f3f1772046a2ff996942d2f1e5s3f9e9fcb93dc062463ec9584sd67cbcecf459215ac627s5eff2036df47a7c6f036e6f75e53c83362dc42024s95b795 /home/username/script.sh
Контрольная сумма sha512 защищает скрипт от манипуляций, позволяя ему выполняться от имени root без пароля.
У меня есть некоторые записи, которые требуют выполнения конкретного скрипта конкретным бинарным файлом, например:
Debian-snmp ALL = NOPASSWD: /bin/sh /etc/snmp/raspberry.sh
Какой правильный синтаксис для включения контрольной суммы sha512 для скрипта raspberry.sh
? У пользователя Debian-snmp нет оболочки, поэтому мне нужно указать это в этой строке, чтобы сделать выполнение raspberry.sh
, но я не могу понять правильный синтаксис для sha512.
Ответ или решение
Для защиты выполнения скриптов с привилегиями суперпользователя без запроса пароля, используя хеш-сумму SHA-512 в настройках файла sudoers, необходимо следовать определенной структуре синтаксиса. В приведенной вами ситуации, когда пользователь Debian-snmp
не имеет интерактивной оболочки, вам нужно будет правильно прописать хеш-сумму для скрипта raspberry.sh
.
Создание хеш-суммы SHA-512
Сначала создадим SHA-512 хеш вашего скрипта raspberry.sh
. Это можно сделать с помощью команды:
sha512sum /etc/snmp/raspberry.sh
Этот процесс выдаст строку, подобную следующей:
d565d0f3f1772046a2ff996942d2f1e5s3f9e9fcb93dc062463ec9584sd67cbcecf459215ac627s5eff2036df47a7c6f036e6f75e53c83362dc42024s95b795 /etc/snmp/raspberry.sh
Конструкция записи в sudoers
Для записи в файл sudoers с использованием SHA-512, вы можете использовать следующий синтаксис:
Debian-snmp ALL=(ALL) NOPASSWD: sha512:d565d0f3f1772046a2ff996942d2f1e5s3f9e9fcb93dc062463ec9584sd67cbcecf459215ac627s5eff2036df47a7c6f036e6f75e53c83362dc42024s95b795 /bin/sh /etc/snmp/raspberry.sh
В этой записи:
Debian-snmp
— имя пользователя, для которого назначены права.ALL=(ALL)
— указывает, что этот пользователь может запускать указанный скрипт от имени любого пользователя (в том числе и root).NOPASSWD:
— позволяет выполнять данное действие без запроса пароля.sha512:<хеш>
— это ваш сгенерированный SHA-512 хеш, который защищает от изменений скрипта./bin/sh /etc/snmp/raspberry.sh
— это полный путь до исполняемого файла с необходимыми аргументами.
Заключение
Использование хеш-сумм в sudoers файле добавляет уровень безопасности к управлению доступом для выполнения скриптов, особенно в ситуациях, когда требуется избежать ввода пароля. Будьте осторожны при редактировании файла sudoers, так как ошибки могут привести к потере доступа к sudo. Рекомендуется использовать команду visudo
, которая проверяет файл на наличие синтаксических ошибок перед его сохранением.
Следуйте данным рекомендациям, и вы сможете уверенно управлять правами пользователей с использованием SHA-512 хешей в sudoers.