我有几个使用 VeraCrypt 加密的驱动器,当我插入包含其密钥文件的驱动器时,我希望能够将它们全部挂载到自动挂载。这样,我只需解密包含密钥文件的闪存驱动器,并且只需输入一个密码。我在 Nim 中创建了一个自动化程序来处理这个问题:https://github.com/TomAshley303/vermount
我的用法是让我的 vermount 程序在每次启动时运行。问题是,为了安装 VeraCrypt 卷,您需要提供 sudo 密码,所以我将 VeraCrypt 添加到/etc/sudoers
.
然而它根本不起作用。每次我的 veramount 程序运行时,VeraCrypt 都没有获得 sudo 访问权限。如果我在验证 sudo 后从命令行运行 veramount,例如运行类似的命令后sudo ls
,它工作正常。我想这可能是因为调用程序(veramount)需要添加到 sudoers,但这也不起作用。我得出以下结论:
%veracrypt ALL=(ALL:ALL) NOPASSWD: /usr/bin/veracrypt
%veramount ALL=(ALL:ALL) NOPASSWD: /home/user/Code/nim/mountkey/veramount
我的 sudoers 规则有问题吗?一定是出了什么问题。
编辑:我意识到在我的 Nim 代码中我没有使用 sudo 命令来运行 VeraCrypt。这是因为我希望使用我的用户帐户的权限来挂载我的驱动器,并且因为当您使用 VeraCrypt 挂载驱动器时,它会自动弹出一个对话框提示您输入 sudo 密码。
答案1
%veracrypt ALL=(ALL:ALL) NOPASSWD: /usr/bin/veracrypt
%veramount ALL=(ALL:ALL) NOPASSWD:/home/user/Code/nim/mountkey/veramount
应该有用户的名称,而不是 %veracrypt 和 %veramount,该用户应该具有执行脚本的 sudo 权限。像这样的东西:
myusername ALL = (root) NOPASSWD: /path/to/my/program
还要确保这是最后一行。保存并退出。