Здравствуйте, уважаемые форумчане, почтенный аноним! С Новым годом!
У меня вопрос о работе sudo и о файле sudoers. Следующий код в файле /etc/sudoers позволяет пользователям из группы 'wheel' запускать с правами root небольшой скрипт, который перезапускает сервисы wpa-supplicant и networking через herd. Этот скрипт находится в двух местах:
- /usr/scripts/wpa
- /wpa
# tail -n 1 /etc/sudoers
%wheel ALL=(ALL) NOPASSWD: /usr/scripts/*, /wpa
Меня интересует, почему такая конфигурация запрашивает пароль, а при указании ALL вместо %wheel не запрашивает пароль?
Также любопытен вопрос, почему где-то настройки sudo пишут в несколько строк так:
%wheel ALL=(ALL) NOPASSWD: /usr/scripts/wpa
%wheel ALL=(ALL) NOPASSWD: /usr/scripts/openvpnru
%wheel ALL=(ALL) NOPASSWD: /usr/scripts/openvpnfr
%wheel ALL=(ALL) NOPASSWD: /usr/scripts/wpa
А в моей системе такая запись вызывает ошибку, и принимается только перечисление через запятую, то есть как в начале?
Версия sudo и система такие:
$ sudo --version
Sudo version 1.9.4p2
Sudoers policy plugin version 1.9.4p2
Sudoers file grammar version 48
Sudoers I/O plugin version 1.9.4p2
Sudoers audit plugin version 1.9.4p2
$ uname -a
Linux antelope 5.10.4-gnu #1 SMP 1 x86_64 GNU/Linux
Сам скрипт используется при потере соединения и для смены провайдера.
Листинг скрипта /wpa
#!/bin/sh
usage() {
echo "Usage: $0 provider"
echo "where provider is one of using providers"
exit 1
}
if [ $# -eq 0 ]
then
echo "No arguments supplied"
usage
fi
case "$1" in
"isp")
echo "Connecting to ISP provider"
cp /etc/wpa_supplicant/wpa_isp.conf /etc/wpa_supplicant/wpa_supplicant.conf
herd stop networking
herd stop wpa-supplicant
sleep 8
herd start wpa-supplicant
sleep 8
herd start networking
;;
"mob")
echo "mob"
echo "Connecting to Mobile provider"
cp /etc/wpa_supplicant/wpa_mob.conf /etc/wpa_supplicant/wpa_supplicant.conf
herd stop networking
herd stop wpa-supplicant
sleep 8
herd start wpa-supplicant
sleep 8
herd start networking
;;
*)
echo "Provider is not of cases"
exit 2;
esac
Итак, мои вопросы такие:
1. Почему при наделении всех правом запускать скрипт - ALL - sudo не запрашивает пароль, а при наделении такими правами группы wheel запрашивается пароль?
2. Почему система ругается, если писать доступы с одинаковыми настройками в несколько строк, и принимает, если через запятую?
3. Куда мне положить свои скрипты?
4. Какой сервис надо перезапустить, чтобы изменения вступили в силу? Сейчас без перезагрузки изменения не применяются (система OS Guix).