我有一个文件夹~/nas
,我通常用它sshfs
来挂载网络驱动器。今天,我没有意识到共享尚未挂载,并将一些数据复制到其中。我花了一点时间才意识到我刚刚将数据复制到了自己的本地驱动器而不是网络共享中。有没有办法在系统中标记此文件夹应该是挂载点,并且不允许任何人将数据复制到其中?
我在这里尝试了权限解决方案:如何仅允许程序在已安装目录时写入目录?,但如果我没有写权限,那么我也无法在其上安装任何东西。
答案1
只要你不是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
$
所有这些背后的想法是:当目标未安装时,~/nas 作为安装路径将具有分配给它的权限,从而阻止您进行修改(只要您的用户没有 root 权限)。 mount 命令(需要 root 权限才能运行)会临时将文件夹的权限修改为目标权限设置的值,从而允许您的用户进行写访问。
答案2
我们使用了不可变的-flag 甚至对于 root 访问也能保护目录。
chattr +i /vmdata/backup
这样,即使没有安装任何内容,即使是 root 也不允许在那里写入。安装磁盘后,一切都按预期工作。
答案3
您可以使用稍后建议的答案:
第一步:使用 mount 命令检查目录是否已经挂载
mount | grep <mountpoint>
会告诉您是否安装了任何东西。如果您真的想确保安装了正确的东西,您可以使用更复杂的正则表达式,但我认为没有必要。