我可以将文件夹标记为仅挂载点吗?

Col*_*lin 3 linux mount

我有一个文件夹~/nas,我通常用它sshfs来安装网络驱动器。今天没想到共享还没挂载,就复制了一些数据进去。我花了一点时间才意识到我只是将数据复制到我自己的本地驱动器而不是网络共享中。有没有办法在系统中标记这个文件夹应该是挂载点,并且不允许任何人将数据复制到其中?

我在这里尝试了权限解决方案:How to only allow a program to write to a directory if it ismounted? ,但如果我没有写权限,我也无法安装任何东西。

小智 6

我们使用immutable -flag 来保护目录,即使是 root 访问。

chattr +i /vmdata/backup
Run Code Online (Sandbox Code Playgroud)

这样,即使没有安装任何内容,也不允许 root 写入。安装磁盘后,一切都按预期工作。


syn*_*-dj 4

只要您不是root,您只需撤销自己对~/nas目录的写入权限并使用 sudo 进行提升挂载:

$ chmod u-w ~/nas
$ cd ~/nas
$ touch test
touch: cannot touch `test': Permission denied
$ cd ..
$ sudo mount -t fuse -o <options> sshfs#<user>@<host>:/mount/path/ ~/nas
$ cd ~/nas
$ touch test
$
Run Code Online (Sandbox Code Playgroud)

这一切背后的想法是:~/nas 作为挂载路径,在未挂载目标时会分配给它的权限,从而防止您进行修改(只要您的用户没有 root 权限)。mount 命令(需要 root 权限才能运行)临时将文件夹的权限修改为目标权限设置的任何内容,从而允许用户进行写入访问。

  • `sshfs` 是一个 [FUSE](http://en.wikipedia.org/wiki/Filesystem_in_Userspace) 文件系统,它不能与 `mount` 一起使用。部分目的是让我不必成为 root 来挂载 nas(因为无论如何我都使用我的 ssh 凭据来挂载它) (3认同)