Bash sudo 脚本不提示输入密码 – Manjaro NFS 挂载
Posted
技术标签:
【中文标题】Bash sudo 脚本不提示输入密码 – Manjaro NFS 挂载【英文标题】:Bash sudo script without prompting for password – Manjaro NFS mounting 【发布时间】:2019-02-14 10:17:39 【问题描述】:我一直在寻找为什么我的 sudo 配置无法通过 NFS 挂载本地 NAS 服务器而不提示输入密码 - 更何况它在 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 wiki (https://wiki.archlinux.org/index.php/Sudo#Example_entries) 将 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#Example_entries):
最自定义的选项应该放在文件的末尾,因为 后面的行会覆盖前面的行。
因此问题在于不要依赖 visudo 文件中的默认 cmets,因为有一个最终命令很容易被误认为是注释 - 但不是:
#includedir /etc/sudoers.d
这包括一个确实包含 10 个安装程序文件的目录,在轮组上应用默认行为,覆盖我的自定义命令:
%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 文件夹中创建一个新文件,增加文件名。
如果这很明显,请原谅噪音,并希望对其他人有所帮助。 万事如意,
【讨论】:
以上是关于Bash sudo 脚本不提示输入密码 – Manjaro NFS 挂载的主要内容,如果未能解决你的问题,请参考以下文章
Linux Ubuntu 11.10 sudo命令后输入密码,为何提示不正确,不能临时拥有root权限,请问是哪里出现错误?