Veracrypt 与 /etc/udev/rules.d

Veracrypt 与 /etc/udev/rules.d

考虑一下我有/etc/udev/rules.d/91-checkveracrypt.rules

ACTION=="add", ATTRS{idVendor}=="1234", ATTRS{idProduct}=="1234", RUN+="/home/user/tryveracrypt.sh"

/home/user/tryveracrypt.sh

reqsubstr="/dev/disk/by-id/usb-AAAAA-0:0-part1"
for word in $DEVLINKS
do
  if [ "$word" == "$reqsubstr" ] ; then
     /usr/bin/su user -c '/bin/bash /home/user/mountveracrypt.sh'
     exit
  fi
done

最后mountveracrypt.sh

sudo veracrypt -t -k /home/user/key -p "" --pim=0 --protect-hidden=no /dev/disk/by-id/usb-AAAAA-0:0-part1 --slot=1 --verbose --non-interactive > /tmp/mount 2>&1

/usr/bin/veracrypt/etc/sudoers,所以 veracrypt 不要求输入密码。./mountveracrypt.sh以用户身份调用可以正常工作。我理解tryveracrypt.sh是以 root 身份运行的,所以我调用的是,mountveracrypt.sh这样su user挂载就对用户可用了。

如果我尝试:

sudo su
./mountveracrypt.sh
exit (go back to user)
veracrypt -t -l

我得到:

Error: No volumes mounted.

sudo veracrypt -t -l得到:

1: /dev/disk/by-id/usb-AAAAA-0:0-part1 /dev/mapper/veracrypt1 /media/veracrypt1

好的。很好。以 root 身份安装时,该卷仅供 root 使用。让我恼火的是,当我插入 USB 时,它会运行/udev/rules.d/脚本。

cat /tmp/mount

Volume "/dev/disk/by-id/usb-AAAAA-0:0-part1" has been mounted.

veracrypt -t -l

Error: No volumes mounted.

sudo veracrypt -t -l

Error: No volumes mounted.

为什么??我无法以用户身份访问挂载,甚至无法以 root 身份访问。我遗漏了什么?

编辑:

我无法卸载该卷,veracrypt -d因为 veracrypt 看不到它。我需要重新启动系统才能拔下它。

udev/rules 是否以不同于 root 的用户身份运行?虽然我曾经使用过它whoami,并且它显示 root,并按su user -c 'whoami'预期显示用户。

另外,我在 udev/rules 中编写了一个脚本来挂载 veracrypt、复制一些文件并卸载,它运行正常。我只是无法在从 udev/rules 调用的脚本之外访问文件并卸载 veracrypt。

相关内容