0

Linux で追加的にディレクトリをマウントしようとしてきましたが、失敗しました。a、b、c の 3 つのディレクトリがあります。a にはファイル x が含まれ、b にはファイル y が含まれ、c にはファイル z が含まれます。「a」と「b」をcにマウントしてからcを開くと、「c」にはxとyしかありません。a、b、cをcにマウントすると、ディレクトリcは空になり、lsは許可が拒否されたと表示します。sudoでもcもアンマウントできません。私がやりたいのは、そのうちの1つに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 
4

1 に答える 1

1

これは本当にスーパーユーザーの質問なので、そのようにフラグを立てました。

複数のソースの結合ファイル システムを作成している場合は、ディレクトリにアクセスしようとしているユーザーがすべてのソースの場所にアクセスできる必要があります。

たとえば、次のとおりです。

$ 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

つまり、すべてのコンテンツを見ることができます。

フォルダーの 1 つのアクセス許可を変更します。

$ chmod u-rwx a

そして、結合フォルダーを ls すると、次のようになります。

$ ls join
ls: cannot open directory join: Permission denied

つまり、結合されたディレクトリにアクセスできるようにするには、すべてのフォルダにアクセスできる必要があります。

すべてのディレクトリにアクセスするためのアクセス許可が正しいことを確認してください。ユニオン ファイル システムは、基になるディレクトリのアクセス許可を強制します。これを使用して OS の保護をバイパスすることはできません。

次に、それらすべてを 1 つのフォルダーにマウントすると、次のようになります。

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

つまり、それらを 1 つのディレクトリ全体にマウントしても問題はなく、マウントされたディレクトリは下にあるディレクトリとは異なって見えます。

于 2015-03-09T10:31:49.117 に答える