Скрипт bash sudo без запроса пароля - Manjaro NFS монтируется
Я некоторое время искал, почему моя конфигурация sudo не работает для монтирования локального NAS-сервера через NFS без запроса пароля - тем более, что он работал годами под Fedora и, похоже, не работает с той же конфигурацией под Manjaro. Идея состоит в том, чтобы просто позволить моей жене монтировать файлы по своему усмотрению, без запоминания сложных паролей и во избежание использования fstab, чтобы не замедлять время загрузки, когда он не находится в локальной сети. Сценарий достаточно прост и состоит из списка папок, таких как:
```bash
#!/bin/bash
mount -t nfs 192.168.X.X:/volume1/manon /mnt/NAS/manon -o auto,user,rw,noatime
# more folders…
exit 0
```
Конечно, он работает так, как задумано, когда используется с sudo, и дает пароль пользователя (также с удобным псевдонимом bashrc). Затем я проследил за вики-сайтом arch ( https://wiki.archlinux.org/index.php/Sudo), чтобы применить NOPASSWD к моему пользователю по заданному сценарию с этой строкой (я также попытался добавить pacman обновление системы для нашей цели здесь):
```
manon ALL=(ALL) NOPASSWD: /home/manon/.script/NASNFS.sh,/usr/bin/pacman -Syyu
```
что подтверждается sudo -lu:
```console
[manon@manonPC ~]$ sudo -lU manon
L'utilisateur manon peut utiliser les commandes suivantes sur manonPC :
(ALL) NOPASSWD: /home/manon/.script/NASNFS.sh, /usr/bin/pacman -Syyu
(ALL) ALL
```
Тем не менее, он по-прежнему запрашивает пароль - монтирование файлов или обновление системы - что бы я ни делал... Я также пытался добавить имя хоста в visudo или использовать группу%wheel (к которой принадлежит manon), но безрезультатно.
Кто-нибудь знает, какой шаг я пропустил и почему он не работает как в Fedora? Спасибо, что прочитали, и всего наилучшего,
1 ответ
Я наконец-то нашел ответ на свой вопрос - я опубликую его на тот случай, если он будет полезен любому, кто споткнется о ту же ошибку. Как указано в вики ( https://wiki.archlinux.org/index.php/Sudo):
Самый настраиваемый параметр должен идти в конце файла, так как более поздние строки переопределяют предыдущие.
Таким образом, проблема заключается не в том, чтобы полагаться на комментарии по умолчанию в файле visudo, поскольку существует последняя команда, которую можно легко принять за комментарий, но это не так:
#includedir /etc/sudoers.d
Это включает каталог, который действительно содержит файл с 10 установщиками, применяя поведение по умолчанию для группы wheel, переопределяя мою пользовательскую команду:
%wheel ALL=(ALL) ALL
Вот почему у меня был вывод sudo -lU manon:
[manon@manonPC ~]$ sudo -lU manon
L'utilisateur manon peut utiliser les commandes suivantes sur manonPC :
(ALL) NOPASSWD: /home/manon/.script/NASNFS.sh, /usr/bin/pacman -Syyu
(ALL) ALL
вместо сейчас:
[manon@manonPC ~]$ sudo -lU manon
L'utilisateur manon peut utiliser les commandes suivantes sur manonPC :
(ALL) ALL
(ALL) NOPASSWD: /home/manon/.script/NASNFS.sh
В заключение: остерегайтесь добавлять свое пользовательское правило в visudo в самом конце файла или создайте новый файл в папке sudoers.d, увеличивая имя файла.
Извините за шум, если это было очевидно, и надеюсь, что будет полезным для других. Всего наилучшего,