我可以使用 sudo mount.cifs 挂载我的驱动器......我可以通过 sudo umount /mnt/mountpoint 卸载
它提示我输入密码,所以我将 sudoers 文件更改为 NOPASSWD:ALL 现在它没有提示我。
我有一个应用程序,我希望能够在运行该应用程序时由任何有权访问该应用程序的人安装驱动器,但是如果我这样做 sudo -u username mount.cifs.... 然后它会提示我输入用户密码尝试做这个。这将全部被编写脚本或执行命令,就像从命令行一样。
我需要它做的是为运行应用程序的任何人提供至少执行挂载命令的能力,尽管我也希望它能够创建目录(mkdir),以便我可以从控制文件创建挂载和然后它可以创建目录,然后根据给定的参数进行连接。我已经编写了代码来检查挂载是否存在,如果不存在则创建或连接,但不知道如何解决 sudo 命令的工作原理。
我想避免写这个,以便每次资源不可用并且挂载下降时,它不需要发送消息让某人登录并手动执行此操作。
手册页解释了
mount(8)
要做什么。(这可能是个坏主意,但如果您的 mount 命令语法正确,它就可以工作,这很容易。)
我想出了为我做这件事的最好方法。
所有用户都将是组 jbase 的成员。您可以在 sudoers 文件中提供组 sudo 信息。
我添加了这一行:
%jbase ALL=(ALL) NOPASSWD: /usr/bin/mount, /usr/bin/umount, /usr/sbin/mount.cifs, /usr/bin/mkdir
我现在可以执行 sudo mount.cifs .... 并且不会提示 jbase 组中的任何人输入密码。