如何在 linux 上附加安装
how to mount additively on linux
我一直在尝试附加地挂载 linux 中的目录,但没有成功。我有三个目录 a、b 和 c。 a 包含文件 x,b 包含文件 y,c 包含文件 z。
现在,当我将 "a" 和 "b" 挂载到 c 中,然后打开 c 时,"c" 中只有 x 和 y。当我将 a、b 和 c 挂载到 c 时,目录 c 是空的,并且 ls 说权限被拒绝。即使使用 sudo,我也无法卸载 c。
我想要做的是将 a b 和 c 安装在其中一个中,并且能够一起看到 xy 和 z。有没有办法解决这个问题,请告诉我。
naveed@ubuntu:~$ mkdir /tmp/test1 /tmp/test2 /tmp/test3
naveed@ubuntu:~$ touch /tmp/test{1,2,3}/{a,b,c}
naveed@ubuntu:~$ rm /tmp/test1/{b,c}
naveed@ubuntu:~$ rm /tmp/test2/{a,c}
naveed@ubuntu:~$ rm /tmp/test3/{a,b}
naveed@ubuntu:~$ ls -al /tmp/test*/
/tmp/test1/:
total 16
drwxrwxr-x 2 naveed naveed 4096 Mar 9 15:00 .
drwxrwxrwt 11 root root 12288 Mar 9 15:00 ..
-rw-rw-r-- 1 naveed naveed 0 Mar 9 15:00 a
/tmp/test2/:
total 16
drwxrwxr-x 2 naveed naveed 4096 Mar 9 15:00 .
drwxrwxrwt 11 root root 12288 Mar 9 15:00 ..
-rw-rw-r-- 1 naveed naveed 0 Mar 9 15:00 b
/tmp/test3/:
total 16
drwxrwxr-x 2 naveed naveed 4096 Mar 9 15:00 .
drwxrwxrwt 11 root root 12288 Mar 9 15:00 ..
-rw-rw-r-- 1 naveed naveed 0 Mar 9 15:00 c
naveed@ubuntu:~$ sudo unionfs-fuse -o nonempty /tmp/test1=RO:/tmp/test2=RO:/tmp/test3=RO /tmp/test1/
naveed@ubuntu:~$ ls -al /tmp/test1
ls: cannot access /tmp/test1: Permission denied
naveed@ubuntu:~$ sudo ls -al /tmp/test1
#nothing shows up here
这确实是一个超级用户问题,所以我已将其标记为此类。
如果您正在创建一个包含多个源的联合文件系统,那么所有源位置需要可供尝试访问该目录的用户访问。
举个例子:
$ mkdir a; touch a/a
$ mkdir b; touch b/b
$ mkdir c; touch c/c
$ mkdir join
$ ls join
drwxr-xr-x 4 petesh petesh 4096 Mar 9 10:25 a/
drwxr-xr-x 2 petesh petesh 4096 Mar 9 10:19 b/
drwxr-xr-x 2 petesh petesh 4096 Mar 9 10:20 c/
drwxr-xr-x 4 petesh petesh 4096 Mar 9 10:25 join/
$ sudo mount -t aufs -o br:(pwd)/a:(pwd)/b:(pwd)/c none (pwd)/join
$ ls join
a b c
即我们可以看到所有的内容。
更改其中一个文件夹的权限 - 例如
$ chmod u-rwx a
现在当我们 ls 加入文件夹时:
$ ls join
ls: cannot open directory join: Permission denied
即所有文件夹都需要可访问才能访问加入的目录。
确保访问所有目录的权限是正确的 - 联合文件系统强制执行底层目录的权限,您不能使用它绕过 OS 的保护。
接下来,如果我们将它们全部挂载到一个文件夹中:
$ sudo mount -t aufs -o br:(pwd)/a:(pwd)/b:(pwd)/c none (pwd)/c
$ ls c
a b c
也就是说,将它们全部安装在一个目录中没有问题,使安装的目录看起来与底层目录不同。
我一直在尝试附加地挂载 linux 中的目录,但没有成功。我有三个目录 a、b 和 c。 a 包含文件 x,b 包含文件 y,c 包含文件 z。 现在,当我将 "a" 和 "b" 挂载到 c 中,然后打开 c 时,"c" 中只有 x 和 y。当我将 a、b 和 c 挂载到 c 时,目录 c 是空的,并且 ls 说权限被拒绝。即使使用 sudo,我也无法卸载 c。 我想要做的是将 a b 和 c 安装在其中一个中,并且能够一起看到 xy 和 z。有没有办法解决这个问题,请告诉我。
naveed@ubuntu:~$ mkdir /tmp/test1 /tmp/test2 /tmp/test3
naveed@ubuntu:~$ touch /tmp/test{1,2,3}/{a,b,c}
naveed@ubuntu:~$ rm /tmp/test1/{b,c}
naveed@ubuntu:~$ rm /tmp/test2/{a,c}
naveed@ubuntu:~$ rm /tmp/test3/{a,b}
naveed@ubuntu:~$ ls -al /tmp/test*/
/tmp/test1/:
total 16
drwxrwxr-x 2 naveed naveed 4096 Mar 9 15:00 .
drwxrwxrwt 11 root root 12288 Mar 9 15:00 ..
-rw-rw-r-- 1 naveed naveed 0 Mar 9 15:00 a
/tmp/test2/:
total 16
drwxrwxr-x 2 naveed naveed 4096 Mar 9 15:00 .
drwxrwxrwt 11 root root 12288 Mar 9 15:00 ..
-rw-rw-r-- 1 naveed naveed 0 Mar 9 15:00 b
/tmp/test3/:
total 16
drwxrwxr-x 2 naveed naveed 4096 Mar 9 15:00 .
drwxrwxrwt 11 root root 12288 Mar 9 15:00 ..
-rw-rw-r-- 1 naveed naveed 0 Mar 9 15:00 c
naveed@ubuntu:~$ sudo unionfs-fuse -o nonempty /tmp/test1=RO:/tmp/test2=RO:/tmp/test3=RO /tmp/test1/
naveed@ubuntu:~$ ls -al /tmp/test1
ls: cannot access /tmp/test1: Permission denied
naveed@ubuntu:~$ sudo ls -al /tmp/test1
#nothing shows up here
这确实是一个超级用户问题,所以我已将其标记为此类。
如果您正在创建一个包含多个源的联合文件系统,那么所有源位置需要可供尝试访问该目录的用户访问。
举个例子:
$ mkdir a; touch a/a
$ mkdir b; touch b/b
$ mkdir c; touch c/c
$ mkdir join
$ ls join
drwxr-xr-x 4 petesh petesh 4096 Mar 9 10:25 a/
drwxr-xr-x 2 petesh petesh 4096 Mar 9 10:19 b/
drwxr-xr-x 2 petesh petesh 4096 Mar 9 10:20 c/
drwxr-xr-x 4 petesh petesh 4096 Mar 9 10:25 join/
$ sudo mount -t aufs -o br:(pwd)/a:(pwd)/b:(pwd)/c none (pwd)/join
$ ls join
a b c
即我们可以看到所有的内容。
更改其中一个文件夹的权限 - 例如
$ chmod u-rwx a
现在当我们 ls 加入文件夹时:
$ ls join
ls: cannot open directory join: Permission denied
即所有文件夹都需要可访问才能访问加入的目录。
确保访问所有目录的权限是正确的 - 联合文件系统强制执行底层目录的权限,您不能使用它绕过 OS 的保护。
接下来,如果我们将它们全部挂载到一个文件夹中:
$ sudo mount -t aufs -o br:(pwd)/a:(pwd)/b:(pwd)/c none (pwd)/c
$ ls c
a b c
也就是说,将它们全部安装在一个目录中没有问题,使安装的目录看起来与底层目录不同。