最近在我的测试服务器上找到了这些行:
<some IPV4>:/zebra on /zebra type nfs (rw,relatime,vers=3,rsize=262144,wsize=262144,namlen=255,hard,nolock,proto=tcp,port=2051,timeo=600,retrans=2,sec=sys,mountaddr=10.126.84.153,mountvers=3,mountport=5004,mountproto=udp,local_lock=all,addr=10.126.84.153)
<some IPV4>:
/proc/self/mountinfo给出了挂载点的列表。我怀疑它们是按照最近创建的挂载排序的( mount --move对它们没有影响)。
那么,是否可以检查安装是否由于最近移动或创建的挂载而变得不可访问?
man proc显示,/proc/self/mountinfo的第一个字段是“挂载ID”。但是它并没有解释检查给定路径上最上面的挂载ID的任何方法。
statvfs() (/usr/bin/stat -f)可以检索其他内容,即“文件系统ID”。我看到了每个文件系统的独特价值.虽然这对我在这里提出的问题没有任何帮助,但它也足以解决我最初的问题.如果还有一种方法可以将文件系统ID与挂载路径
如何将在子命名空间中创建的挂载传播到父名称空间?
详细信息
我正在尝试创建一个工具,利用overlayfs允许对只读目录进行写入。棘手的一点是,我希望任何用户都能够在没有根权限的情况下使用它。因此,我希望这可以通过挂载命名空间来实现,前提是管理员已经挂载了共享的目录,那么任何用户都应该能够在该树下创建一个从父命名空间可见的覆盖(因此任何用户登录shell都可以看到该覆盖挂载)。
以下是我尝试过的,但不起作用的东西:
# admin creates a shared tree for users to mount under
sudo mkdir /overlays
# bind mount o
我已经安装了/dev,并立即尝试卸载:
$ sudo mount -o rbind /dev m
$ sudo umount m
umount: /tmp/m: target is busy.
$ sudo lsof m
lsof: WARNING: can't stat() fuse.gvfsd-fuse file system /run/user/1000/gvfs
Output information may be incomplete.
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
kdevtmpf
我正在试验挂载名称空间。我有一个python脚本,它创建一个绑定挂载,然后是一个带有unshare系统调用的挂载命名空间。我打印PID,并暂停脚本。我可以列出这些坐骑:
nsenter --mount=/proc/PID/ns/mnt
mount
让python进程在调用umount之前被中断(或者说它由于某些错误而终止)。现在/proc/PID消失了。系统是否处于一致状态?我的意思是会自动调用umount,还是会以其他方式“清理”坐骑?
我创建了一个用户有限的高山容器。当我运行mount时,它显示了以下挂载列表:
/home $ mount
overlay on / type overlay (rw,relatime,lowerdir=/var/lib/docker/overlay2/l/KCJQAGEW3UGOWIQ7UW5GDGWTOX:/var/lib/docker/overlay2/l/3JHGYTRTJDTUB7XAC2O3KY5H5V:/var/lib/docker/overlay2/l/CKRPXHOCDWFPZKZXBYX7MPUCA5:/var/lib/docker/overlay2/l/CFGI4PXVRI
当我们执行此操作时(在linux 7.x上)
umount /grop/sdc
umount: /grop/sdc: target is busy.
(In some cases useful info about processes that use
the device is found by lsof(8) or fuser(1))
我们可以看到,坐骑在繁忙的时候失败了。
但当我们做remount的时候..。重装是成功的,如下所示:
mount -o rw,remount /grop/sdc
echo $?
0
太有趣了。
重新挂载是否使用类似( umount -l )
为什么这个不行?
$ unshare -rm mount --bind / /mnt
mount: /mnt: wrong fs type, bad option, bad superblock on /, missing codepage or helper program, or other error.
这些工作正常:
$ unshare -rm mount --bind /tmp /mnt
$ unshare -rm mount --bind /root /mnt
$
$ uname -r # Linux kernel version
4.17.3-200.fc28.x86_64