从 udev 挂载 FUSE 给出“传输端点未连接”,作为 root 没问题

从 udev 挂载 FUSE 给出“传输端点未连接”,作为 root 没问题

我有一个 udev 规则来挂载我的 encfs 加密备份磁盘:

ACTION=="add",KERNEL=="sd*1",ENV{ID_SERIAL}=="Seagate_GoFlex_Desk_NA0MEYKM-0:0" ,SYMLINK="ext_hd",RUN+="/root/bin/mount.encfs 'Large Backup Drive' /dev/%k"

mount.encfs的内容是:

#!/bin/bash

set -e

export XAUTHORITY=/home/me/.Xauthority
export DISPLAY=:0.0

NAME=$1
DEV=$2
ENCRYPTED_MOUNT_POINT=/media/ext_hd.encfs
UNENCRYPTED_MOUNT_POINT=/media/ext_hd

[ ! -e $ENCRYPTED_MOUNT_POINT ] && mkdir $ENCRYPTED_MOUNT_POINT
[ ! -e $UNENCRYPTED_MOUNT_POINT ] && mkdir $UNENCRYPTED_MOUNT_POINT

mount -t ext4 $DEV $ENCRYPTED_MOUNT_POINT

encfs -o allow_other --extpass="ssh-askpass $NAME" \
$ENCRYPTED_MOUNT_POINT $UNENCRYPTED_MOUNT_POINT

当我插入磁盘时,我收到提示,但是当我尝试 ls /media/ext_hd 时,我得到经典的 FUSE:

ls: cannot access '/media/ext_hd': Transport endpoint is not connected

如果我手动卸载然后手动运行 mount.encfs,它就可以工作。

对于这两种情况, mount 的输出是相同的:

encfs on /media/ext_hd type fuse.encfs (rw,nosuid,nodev,relatime,user_id=0,group_id=0,default_permissions,allow_other)

我不知道是什么导致了这种情况,是谁的错,甚至下一步的调试步骤应该是什么。有任何想法吗?

相关内容