Как монтировать аддитивно на linux

Я пытался монтировать каталоги в linux аддитивно и не могу этого сделать. У меня есть три директора a, b и c. a содержит файл x, b содержит файл y, а c содержит файл z. Теперь, когда я монтирую "a" и "b" в c, а затем открываю c, в "c" присутствуют только x и y. когда я монтирую a, b и c в c, каталог c пуст, и ls говорит, что разрешение отклонено. я не могу также размонтировать c даже с sudo. Что я хочу сделать, так это смонтировать ab и 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 

1 ответ

Решение

Это действительно вопрос SuperUser, поэтому я пометил его как таковой.

Если вы создаете объединенную файловую систему из нескольких источников, то все местоположения источников должны быть доступны пользователю, который пытается получить доступ к каталогу.

Взять, к примеру:

$ 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 join
ls: cannot open directory join: Permission denied

то есть все папки должны быть доступны, чтобы присоединенный каталог был доступен.

Убедитесь, что права доступа правильны для доступа ко всем каталогам - файловая система union обеспечивает права доступа базовых каталогов, с помощью которых вы не можете обойти защиту ОС.

Далее, если мы смонтируем их все в одну папку:

$ sudo mount -t aufs -o br:(pwd)/a:(pwd)/b:(pwd)/c none (pwd)/c
$ ls c
a  b  c

т. е. нет проблем с их монтированием в одном каталоге, что делает смонтированный каталог отличным от основного каталога.

Другие вопросы по тегам