auto
我对和user
mount 选项之间的交互感到困惑fstab
。
在错误地设置auto
而不是设置之后noauto
,我注意到插入设备时会发生挂载,但用户随后无法卸载该设备(“用户”是在没有 root 权限的情况下运行的可执行文件)。这是/etc/fstab
条目:
/dev/mmcblk1p1 /home/user/importexport auto rw,user,auto,exec,uid=1000,gid=100,umask=0022,nobootwait 0 2
当我替换auto
为时noauto
,用户可以显式挂载和卸载设备。
这是在嵌入式系统上,我没有运行时可见性,这意味着没有 shell 访问权限来交互式地探索问题。我所能做的就是将调试信息写入可以在下次启动时查看的文件。我的内核是3.10.0。
那么为什么用户无法卸载已使用该选项自动安装的设备呢user
?
注:在选项“user”适用于挂载,不适用于卸载,有人询问 的权限/etc/mtab
。我的是-rw-r--r--
根用户的,但/etc/mtab
不包含该问题中提到的任何用户信息,所以我认为这可能不相关。
答案1
我相信 auto(fstab 中的选项)始终以 root 身份执行,而 user 选项仅告诉安装程序它允许接受来自简单用户的请求。发生的情况如下:您插入驱动器,系统识别它,自动挂载它(以 root 身份),如果用户不在 root 组中,则用户将无法卸载它。
您可以从 fstab 中删除自动选项(或更好地提供其他选项 - noauto),保留用户选项并按用户编写脚本(因为它由用户执行)以在每次插入驱动器时安装它。
编辑:
似乎无论自动安装程序使用用户帐户,它都与您的帐户不同。
编辑#2:
您可以通过执行命令找出谁安装了设备
ls /mnt/ -l
编辑#3:
或者
sudo cat /etc/passwd | cut -f -3 -d ':' | sed -re 's/(.*):(.*):(.*)/\3 \2 \1/g' | while read p1 p2 p3 ; do printf "%05i $p2 $p3\n" "$p1" ; done | sort -r | while read p1 p2 p3 ; do echo $p3 ; done | while read p ; do sudo -u $p umount /dev/ice 2>/dev/null && echo $p >> /tmp/busted ; done
用您感兴趣的设备替换 /dev/ice
确保您的 sudoers 文件已正确设置,
您将在 /tmp/busted 中找到您想要的可疑用户