Dor*_*har 9 mount fuse non-root-user
假设我有一个用户完全可以读取的文件夹。我希望将其安装到我的主文件夹中。我无法使用符号链接,因为我希望文件公开,~/
并且我希望其他程序“不知道”它是一个挂载。有没有一个fuse程序可以实现这个功能?问题mount
是它需要 root 权限。
我也很感激,如果我能够挂载这个目录,不是在启动时,而是在需要时挂载 - 这是因为除非我登录,~/
否则我的目录是加密的。
fra*_*san 10
各种 FUSE 实用程序都可以做到这一点。例如,bindfs可以将目录挂载到不同的位置,类似于mount --bind
所做的事情。
bindfs --no-allow-other /source/directory /mount/point
Run Code Online (Sandbox Code Playgroud)
除非您取消注释--no-allow-other
,否则需要该选项(但请参阅下面有关 libfuse 的注释以了解安全含义)。user_allow_other
/etc/fuse.conf
卸载:
fusermount -u /mount/point
Run Code Online (Sandbox Code Playgroud)
请注意,FUSE 文件系统当前存在已知问题/限制。值得一提的是,性能成本、无法使用inotify监视源文件系统上发生的文件系统事件以及libfuse GitHub 存储库的 README 中列出的安全隐患。
在 Linux 上,执行绑定安装mount --bind
不会有这些缺点。但它至少需要 root 权限一次才能编辑您的fstab
. 有关该主题的更详细介绍,请
参阅链接的问答。
您可以使用以下条目设置 /etc/fstab 一次:
/path/to/original/dir /path/to/bind/dir none bind,rw,user,noauto 0 0
Run Code Online (Sandbox Code Playgroud)
挂载选项按顺序指定以下内容:
bind
表明该条目是绑定挂载。rw
指定该条目将以读写模式挂载。user
允许任何非 root 用户挂载文件系统。noauto
指定该条目不应mount -a
在引导时自动安装 和 。您需要使用 root 权限进行一次设置。条目就位后,您可以以非 root 用户身份执行安装。只需运行即可mount /path/to/bind/dir
。
有几点需要注意:
user
选项,只有最初安装文件系统的同一用户帐户才能执行卸载。如果涉及多个用户,您可以查看该users
选项。man 8 mount
详情请参阅。user
选项意味着其他三个选项:(noexec
不允许执行二进制文件)、nosuid
(不遵守 setuid/setgid 位)和nodev
(不解释设备)。如果要恢复其中任何功能,请将相应的选项附加到列表末尾。例如,bind,rw,user,noauto,exec
。请记住,这些选项存在安全隐患。man 8 mount
详情请参阅。