![如何在 Linux 中无需 root 权限即可安装 VeraCrypt 驱动器?](https://linux22.com/image/1513336/%E5%A6%82%E4%BD%95%E5%9C%A8%20Linux%20%E4%B8%AD%E6%97%A0%E9%9C%80%20root%20%E6%9D%83%E9%99%90%E5%8D%B3%E5%8F%AF%E5%AE%89%E8%A3%85%20VeraCrypt%20%E9%A9%B1%E5%8A%A8%E5%99%A8%EF%BC%9F.png)
我在 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 更为安全。