LINUX.ORG.RU

Почему sudo просит пароль при настройке доступа к скрипту группы wheel, а если предоставить доступ всем ALL, то не запрашивает?

 ,


0

1

Здравствуйте, уважаемые форумчане, почтенный аноним! С Новым годом!

У меня вопрос о работе 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).

★★

Последнее исправление: znavko (всего исправлений: 2)

%wheel ALL=(ALL) NOPASSWD: /usr/scripts/*, /wpa

Я не интересуюсь, почему ты делаешь так, а не иначе, а только на вопрос попробую ответить. А так:

%wheel ALL=(root) NOPASSWD: /usr/scripts/*, /wpa

Разумеется, ты должен быть в группе wheel

Zubok ★★★★★
()

# tail -n 1 /etc/sudoers

Это последняя только строчка. Тогда еще обрати внимание на это:

     When multiple entries match for a user, they are applied in order.  Where
     there are multiple matches, the last match is used (which is not neces‐
     sarily the most specific match).
Zubok ★★★★★
()
Ответ на: комментарий от Zubok

да. так работает, пароль не запрашивает.

sudoers такой

# cat /etc/sudoers 
root ALL=(ALL) ALL
%wheel ALL=(ALL) ALL
%wheel ALL=(root) NOPASSWD: /usr/scripts/*, /wpa
znavko ★★
() автор топика
Последнее исправление: znavko (всего исправлений: 2)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.