asc*_*hil 15
我不知道执行此操作的单命令方法。GUI 程序正在对磁盘进行相当多的询问以采取“正确”的方法,您需要自己做一些工作。不过,您不需要 sudo,而且我认为由此产生的事件序列相对轻松。
udisksctl从udisks2包中使用:
udisksctl unlock -b /path/to/disk/partition
udisksctl mount -b /path/to/unlocked/device
Run Code Online (Sandbox Code Playgroud)
您的用户帐户需要获得适当的授权才能使上述功能正常工作。在 Debian 和 Ubuntu 上,这意味着将您的帐户添加到plugdev组中。
完成磁盘后:
udisksctl unmount -b /path/to/unlocked/device
udisksctl lock -b /path/to/disk/partition
udisksctl power-off -b /path/to/disk/or/partition
Run Code Online (Sandbox Code Playgroud)
下面介绍了如何设置(通过命令行)以使使用磁盘的过程尽可能轻松。我假设您想将整个 USB 驱动器用作单个文件系统。其他配置将需要修改说明。变体警告:我还没有找到一种在加密容器中使用 LVM 的方法,该方法将允许非特权帐户断开所有连接。(我没有看到通过udisksctl.停用卷组的方法。)
出于说明的目的,我们会说磁盘是/dev/sda. 您将需要文件系统的名称,以便以后更容易引用。我会用“ example”。
运行sudo parted /dev/sda并运行以下命令:
mklabel gpt
mkpart example-part 1MiB -1s
quit
Run Code Online (Sandbox Code Playgroud)
该mkpart命令可能会提示您稍微调整参数。您应该可以接受其推荐的数字。
该分区现在可以通过/dev/disk/by-partlabel/example-part.
sudo cryptsetup luksFormat /dev/disk/by-partlabel/example-part
Run Code Online (Sandbox Code Playgroud)
通过提示。
sudo cryptsetup luksOpen /dev/disk/by-partlabel/example-part example-unlocked
Run Code Online (Sandbox Code Playgroud)
加密设备现在可在/dev/mapper/example-unlocked。这不会是永久性的;它仅用于设置过程。
假设您使用的文件系统是 XFS。几乎任何其他传统文件系统都会以相同的方式工作。重要的是添加一个标签,您可以稍后引用:
sudo mkfs -t xfs -L example /dev/mapper/example-unlocked
Run Code Online (Sandbox Code Playgroud)
文件系统的块设备现在可以通过/dev/disk/by-label/example.
默认情况下,文件系统只能由 root 访问。在大多数情况下,您可能希望您的用户帐户可以访问这些文件。假设您的帐户名称是“ user”:
udisksctl mount -b /dev/disk/by-label/example
sudo chown user:user /media/user/example
Run Code Online (Sandbox Code Playgroud)
udisksctl unmount -b /dev/disks/by-label/example
sudo cryptsetup luksClose example-unlocked
Run Code Online (Sandbox Code Playgroud)
这是你会经常做的事情。插入USB驱动器后,
udisksctl unlock -b /dev/disks/by-partlabel/example-part
udisksctl mount -b /dev/disks/by-label/example
Run Code Online (Sandbox Code Playgroud)
如果您的用户帐户是“ user”,则文件系统现在将安装在/media/user/example.
卸载文件系统:
udisksctl unmount -b /dev/disks/by-label/example
udisksctl lock -b /dev/disks/by-partlabel/example-part
udisksctl power-off -b /dev/disks/by-partlabel/example-part
Run Code Online (Sandbox Code Playgroud)
现在您可以断开 USB 驱动器的连接。