如何在 Linux 中无需 root 权限即可安装 VeraCrypt 驱动器?

如何在 Linux 中无需 root 权限即可安装 VeraCrypt 驱动器?

我在 Kubuntu 中使用 TrueCrypt 很长时间,使用键盘快捷键自动挂载驱动器。现在我使用 VeraCrypt,但在输入加密驱动器的密码后,系统总是提示我输入 sudo 密码。TrueCrypt 从来不需要这个。

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

此外,VeraCrypt 中的一个选项允许作为可移动介质安装的卷,但在我运行的 Linux 版本(v1.19)中根本不存在这个选项。

这是怎么回事?我如何才能让 VeraCrypt 的安装过程像可移动媒体一样运行?每次安装和卸载时都要输入密码,这很烦人。

答案1

一个选项是设置 veracrypt 的 SUID 位。这将确保它在每次运行时都具有 root 权限。

# chmod u+s /usr/bin/veracrypt

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

更好的选择:

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

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


在开始之前,您需要确保/usr/bin/veracrypt二进制文件不是可由团体或者其他

确认除所有者之外的其他人无法写入:

$ ls -lha /usr/bin/veracrypt
-rwxr-xr-x 1 root root 7.1M Sep 11  2019 /usr/bin/veracrypt

首先,创建一个新组:

# groupadd veracrypt_group

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

# usermod -aG veracrypt_group your_user

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

# visudo -f /etc/sudoers.d/veracrypt

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

%veracrypt_group ALL =(根)NOPASSWD:在/ usr / bin / veracrypt中

答案2

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

答案3

使用最新版本的 VeraCrypt(1.25 及更高版本),以下操作应该可以正常工作:

sudo tee <<EOM /etc/sudoers.d/veracrypt
%sudo ALL = (root) NOPASSWD:/usr/bin/veracrypt,/usr/bin/uptime
EOM

这给出了所有sudoers无需密码即可访问 veracrypt。

安全注意事项:一般来说,可以使用不受限制的mount权限获取 root 权限,例如通过挂载带有 setuid 的文件系统bash。但 VeraCrypt 总是使用 FUSE 默认值挂载文件系统nosuid,nodev,因此这种特定的攻击媒介实际上是不可能的。话虽如此,VeraCrypt 中可能存在其他漏洞,可以利用这些漏洞获取 root 权限。因此,仅允许受信任的用户(例如 sudoers)使用 VeraCrypt 更为安全。

相关内容