如何在 Linux 中没有 root 的情况下安装 VeraCrypt 驱动器?

jmb*_*eck 8 linux mount truecrypt removable-media veracrypt

我在 Kubuntu 中长期使用 TrueCrypt,其中我使用键盘快捷键自动挂载驱动器。现在我使用 VeraCrypt,但在输入加密驱动器的密码后,总是提示我输入 sudo 密码。这在 TrueCrypt 中从来没有必要。

我突然想到我可以将驱动器安装为可移动媒体(这是一个不需要 root 密码的操作),但是当将驱动器安装到 /mount/(安装可移动媒体的位置)时,我仍然获取 sudo 密码请求。

此外,VeraCrypt 中的一个选项允许Volume Mounted as Removable Medium,但这个选项在我在 Linux (v1.19) 中运行的版本中根本不存在。

这里发生了什么?我怎样才能要求 VeraCrypt 安装过程像可移动媒体一样运行?每次安装和卸载都输入我的密码很烦人。

小智 6

一种选择是在 veracrypt 上设置 SUID 位。这将确保它在运行时具有 root 权限。

# chmod u+s /usr/bin/veracrypt
Run Code Online (Sandbox Code Playgroud)

不过,一般来说,我会尽量避免使用 SUID 或 SGID 位,因为它们允许任何有权执行二进制文件的用户以提升的权限使用它。

更好的选择:

如果您有的话,您的另一个选择sudo是为 veracrypt 创建一个具有无密码 sudo 权限的组。

这肯定比总是需要密码的安全性稍差一些,就像创建这样的 sudo 规则时的情况一样。 请务必仔细阅读本文并了解其含义,以确保不会造成安全风险!


在开始之前,您需要确保该/usr/bin/veracrypt二进制文件不可groupother写入。

确认它不能被所有者以外的其他人写入:

$ ls -lha /usr/bin/veracrypt
-rwxr-xr-x 1 root root 7.1M Sep 11  2019 /usr/bin/veracrypt
Run Code Online (Sandbox Code Playgroud)

首先,创建一个新组:

# groupadd veracrypt_group
Run Code Online (Sandbox Code Playgroud)

接下来,将您的用户添加到组中:

# usermod -aG veracrypt_group your_user
Run Code Online (Sandbox Code Playgroud)

现在您可以用来visudo创建新的 sudo 规则:

# visudo -f /etc/sudoers.d/veracrypt
Run Code Online (Sandbox Code Playgroud)

这将允许无需密码即可veracrypt_group运行。/usr/bin/veracrypt

%veracrypt_group ALL=(root) NOPASSWD:/usr/bin/veracrypt


小智 1

当我的 veracrypt 容器位于不属于打开容器的用户所拥有的目录中时,我在 Linux Mint 中遇到了这个问题。即使用户可以写入该目录(并拥有容器文件)。将其移动到用户拥有的文件夹可以阻止 veracrypt 提示输入管理员密码。