在 ro 模式下(或使用任何选项)自动挂载 NTFS 分区失败

在 ro 模式下(或使用任何选项)自动挂载 NTFS 分区失败

看来这个错误已经修复一年多了: https://bugzilla.redhat.com/show_bug.cgi?id=1180663

我们什么时候可以期待 Ubuntu 发行版的更新?

我花了大约半天时间尝试调试为什么我无法以只读模式自动挂载 ntfs 文件系统。

这个错误报告对我有帮助,并且使用 -f -v 选项以交互方式运行自动挂载帮助我找出了问题。

我想在合适的论坛上报告我的修复,所以我问了这个问题,以便报告可能立即出现的错误修复。也许有人有更好的修复,他们可以报告,这样其他人就不会像我一样花时间到处寻找。

答案1

我所做的是:mv /bin/ntfs-3g /bin/ntfs-3g.bin 并用以下代码替换它:

#!/bin/bash
echo "ntfs:*=$@"
p1=$1
echo "ntfs:p1=$p1"
shift
p2="$1"
echo "ntfs:p2=$p2"
shift
echo "ntfs:1=$1"
test "$1" == "-s" && shift
echo "ntfs:1=$1"
exec /bin/ntfs-3g.bin $p1 "$p2" $@

这似乎解决了问题。我正在设计一个系统,让无人值守的笔记本电脑自动将连接和断开其 USB 端口的设备安装和卸载到本地网络上通过 Samba 共享的文件夹中。到目前为止,我拥有的是:

apt-get install autofs

将其添加到 auto.master:

<root path here> program:/etc/auto.usb.prg ro

末尾的“ro”是需要 ntfs 修复的内容。没有它一切都很好,但是驱动器是以读/写方式安装的,如果不卸载就拔下它们(这在没有 UI 的无人值守的笔记本电脑中是不可能的)是不安全的。

将其放入 /etc/auto.usb.prg

#!/bin/bash
# - confuses grep. I do not know why automount asks for this key sometimes.
test "$1" == "-" && exit
devData=`blkid|grep "$1\|${1/_/ }"`
# determining fstype as auto seems to not work well.
t=${devData##*TYPE=\"}
t=${t%%\"*}
echo "-fstype=$t :${devData%%:*}"

我创建了这个文件:/etc/udev/rules.d/85-usbdrive-sharing.rules

ACTION!="add", GOTO="carols_autommount_end"
DEVPATH!="*block/sd[b-z]/sd[b-z][1-9]", GOTO="carols_autommount_end"
# Import FS infos
IMPORT{program}="/sbin/blkid -o udev -p %N"

ENV{ID_FS_LABEL}!="", RUN+="/bin/ls '/home/sftpuser/extern/%E{ID_FS_LABEL}'", GOTO="carols_autommount_end"
ENV{ID_FS_LABEL}=="", RUN+="/bin/ls /home/sftpuser/extern/%k"
# Exit
LABEL="carols_autommount_end"

我现在在拔下设备时无法删除目录。可以重写规则以在设备移除时发送 killall -USR1 automount。如果此时没有客户端正在使用该设备,它将被卸载。

相关内容