非root用户访问挂载的luks分区

信息安全 加密 卢克斯 特权升级 dm-crypt
2021-09-03 09:49:14

最近我搜索了 truecrypt 的替代品,并使用了 cryptsetup。我做的步骤:

  1. mkfs -t ext4 /dev/sdb1
  2. sudo cryptsetup open --type luks /dev/sdb1 enc_vol
  3. sudo mount /dev/mapper/enc_vol /mnt

之后,我(非 root 用户)可以 chdir 访问/mnt并查看文件,但不能在那里写任何东西。只有root可以写,但这对我来说很不方便。如图ls -l /dev/mapper/enc_vol所示,它是 root 拥有的符号链接,指向/dev/dm-1.

命令喜欢chown "username":"username"并且chmod 777不能将前面提到的符号链接的“根”更改为/dev/dm-1.

我的问题:如何挂载由 cryptsetup 加密的 LUKS 分区,以便能够以非 root 用户身份在其中写入文件?

3个回答

TLDR:将文件系统挂载到用户的主目录中。

这不是特定于 luks,因为它通常适用于安装。我没有用 ext4 测试过,但我看不出它与 ext3 不同的原因(我已经测试过)。

sudo cryptsetup luksOpen /dev/sdb1 enc_vol
mkdir ~/enc_vol_mnt
sudo mount /dev/mapper/enc_vol ~/enc_vol_mnt

普通用户现在应该能够读取、写入和删除 ~/enc_vol_mnt 中的文件和目录。

在superuser上还有其他一些解决这个问题的方法

-o users,rw,umask=0000附带说明一下,当要挂载的文件系统是 FAT 或 NTFS 时,您还可以使用挂载选项。mount 手册页对此有更多信息。

对于未来的读者:

新格式化的文件系统的根通常具有rwxr-xr-x 的权限,并且确实只能由根写入。

在第一次挂载时,取决于该分区的未来用途 - 将已挂载驱动器的根目录(而不是/dev中的设备!)分配给打算专门使用它的用户,或者其更改为rwxrwxrwxt使其在系统范围内可访问,与/tmp类似。或者使用介于两者之间的任何用户权限/所有者组合(例如可写入特定组的成员等)。

该设置在重新启动/重新安装后保持不变。

TL;博士:

mount /dev/DEVICE /SOMEWHERE
chown USER:GROUP /SOMEWHERE

或者

mount /dev/DEVICE /SOMEWHERE
chmod a+rwxt /SOMEWHERE

以下是在您的特定系统上尝试的一些事情。

您可以根据此邮件列表文章查看 udisksctl

假设您有 udisks2,这应该不是问题:

$ udisksctl 用法:udisksctl [OPTION...] 命令

命令:

help 显示此信息

info 显示有关对象的信息

dump 显示所有对象的信息

status 显示高级状态

monitor 监控对象的变化

mount 挂载文件系统

unmount 卸载文件系统

解锁加密设备

lock 锁定加密设备

loop-setup 设置循环设备

loop-delete 删除循环设备

power-off 安全关闭驱动器电源

smart-simulate 为驱动器设置 SMART 数据

使用“udisksctl COMMAND --help”获取每个命令的帮助。

“解锁”命令似乎对您有用。

或者,以 root 身份正确设置 fstab,可能从阅读Linux 的超级用户答案开始 - 以特定用户权限安装设备

要挂载具有特定权限的设备,您可以在挂载设备时使用 -o 选项指令。要安装您描述的设备,请运行:

mount -t deviceFileFormat -o umask=filePermissons,gid=ownerGroupID,uid=ownerID /device /mountpoint