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 挂载的主要内容,如果未能解决你的问题,请参考以下文章

如何从需要 SUDO 的 php 调用 shell 脚本?

需要 sudo 密码的 Bash 脚本

自定义 Sudo 命令

如何为bash中提示输入的命令提供密码?

从 bash 脚本添加 ssh-add 并自动输入密码

Linux Ubuntu 11.10 sudo命令后输入密码,为何提示不正确,不能临时拥有root权限,请问是哪里出现错误?