フォルダーの書き込み専用ビューを作成するにはどうすればよいですか?


12

読み取り/書き込みアクセス権を持つ別のフォルダーの書き込み専用の「ビュー」を表示するファイルシステム上の場所が必要です。

FTPドロップボックスに動作が似ているものを描いています。FTPドロップボックスでは、ファイルをコピーできますが、読み取りはできません。例:

$ ls read-write-view/ write-only-view/
read-write-view/:
a  b  c

write-only-view/:

$ cp d write-only-view/
$ ls read-write-view/ write-only-view/
read-write-view/:
a  b  c  d

write-only-view/:

これが例のように機能することは重要です。コンテンツはを介してアクセスしても表示されread-write-view/、両方の「ビュー」が単一のユーザーに対して機能します。

このようなものを設定するにはどうすればよいですか?シンボリックリンクの巧妙な配置でしょうか。または、バインドマウントの異常な構成ですか?

回答:


2

数年前のsambaメーリングリスト(http://lists.samba.org/archive/samba/2008-September/143610.html)の学生ドロップボックスに対しても同じ質問をしましたが、その答えは役立っています。ファイルシステムの拡張acl属性(aclパッケージから)が必要です。これがJeremy Allisonの答えです...

問題は、新しいファイルをそこにドラッグアンドドロップできるようにするために、含まれているディレクトリを読む必要があることです。その理由は、大文字と小文字を区別しないルックアップを行うために、Sambaが代わりにディレクトリをスキャンできる必要があるためです。

ただし、学生が他のファイルの名前を表示できるようにすることを気にしない限り、DropBoxを設定して、学生がそのファイル(および自分のファイル)に書き込み、他のファイルを編集または表示できないようにすることができます。

まず、DropBoxディレクトリで作成されたファイルが、学生のプライマリグループではなく、DropBoxディレクトリのグループ所有者によって所有されていることを確認する必要があります。そう :

chgrp teachers DropBox

教師グループが所有するようにします。次に、DropBoxディレクトリのsetgidビットを設定して、そこで作成されたファイルに教師の所有グループがあることを確認します。

chmod g + s DropBox

次に、DropBox内のファイルの名前を変更または削除できるのは、ファイルの所有者のみ、ディレクトリの所有者、またはルート(/ tmpが持っているのと同じ権限)であることを確認してください。

chmod + t DropBox

次に、学生がACLを追加してディレクトリに書き込むことを許可します

setfacl -mg:students:rwx DropBox

デフォルトのACLが「その他」に許可を持たないように設定されている限り、学生がそのディレクトリに書き込んだファイルは自分で所有されますが、「教師」の所有グループがあり、学生はそれぞれを読むことができません他のファイル。

ファイルを作成した学生ではなくディレクトリの所有者がファイルを所有する必要がある場合は、上記のように個別の共有を設定する必要がありますが、次に共有レベルパラメーターを追加します。

所有者を継承する=はい

その共有内のディレクトリ内で作成されたファイルは、作成する所有者ではなく、含まれているディレクトリによって所有されます。


1

ターゲットユーザーがフォルダーへの書き込みアクセス権を持ち、読み取りアクセス権は持たないように、フォルダーのアクセス許可を設定することで、これを実現できます。

たとえば、誰でもフォルダへの書き込みを許可するが、その内容を一覧表示しないようにするには、次の操作を実行できます。

chmod o=wx folder

または、特定のユーザーグループのみにこのアクセスを許可するには:

chgrp groupname folder
chmod o=,g=wx folder

これらのユーザーは、フォルダーの内容をリストすることはできませんが、フォルダーにファイルを配置することはできます。

$ ls folder
ls: cannot open directory folder: Permission denied
$ touch folder/filename

ユーザーが名前を推測できる場合、ユーザーがフォルダー内のファイルにアクセスできる場合、これは必要なことをすべて行いません。このリスクを最小限に抑えるには、ドロップボックスフォルダーから他のユーザーがアクセスできない場所にファイルを定期的に移動するcronジョブを使用します。


1

rwアクセスでドロップフォルダー「書き込み専用ビュー」を作成し、cronjobまたはiノード通知を使用して、コンテンツを他の「読み取り/書き込みビュー」に移動できます。


1

バインドマウントトリックを単に使用できると思います/etc/fstab

/path/to/read-write-view /path/to/write-only-view none bind 0 0

そのため、おそらく次のことができます。

chmod a=wx /path/to/write-only-view
chmod a=rwx /path/to/read-write-view

1

「ディレクトリを別の場所にマウントし、許可ビットを変更する」ように設計されたbindfsを使用します。

読み取りと書き込みの両方のアクセス権を持つ通常のフォルダーから開始します。

$ mkdir read-write-view && touch read-write-view/{a,b,c}
$ ls read-write-view
a  b  c

bindfsを使用して、読み取りアクセスなしでフォルダーをマウントします。

$ mkdir write-only-view
$ sudo bindfs --perms=a-r read-write-view write-only-view

元のフォルダーの内容のみがリストされることを確認します。

$ ls read-write-view write-only-view
read-write-view:
a  b  c
ls: cannot open directory write-only-view: Permission denied

マウントを介して元のフォルダーに書き込むことができることを確認します。

$ echo 'Can you read this?' > write-only-view/d
$ cat read-write-view/d
Can you read this?

ファイルがマウントから読み取れないことを確認します。

$ cat write-only-view/d
cat: write-only-view/d: Permission denied

0

まず、これを逆に考える方が簡単です。書き込みアクセスが必要な人にはrwのフォルダーがあり、読み取り専用アクセスが必要な人にはこのフォルダーの読み取り専用の「ビュー」があります。

mount --bind -o roオプションを正しく動作させることができたことがありません。これを行う最も確実な方法は、nfsを使用することです。以下を/ etc / exportsに追加します

/path-to-folder/folder 127.0.0.1(secure,ro,no_root_squash)

次に、読み取り専用の「ビュー」をマウントします

mount -o ro 127.0.0.1:/path-to-folder/folder /read-only-folder

これで、元のフォルダーの読み取り専用ビューが表示されます。

samba / cifsでも同じことができると思いますが、これはネットワークアクセスにしか意味がありません。

このソリューションはこのHowtoに触発された(盗まれた)。役に立てば幸いです。


私は読み取り専用のビューについて尋ねているのではなく、読み取りと書き込みと書き込み専用です。
アーンドリューク

0

内容を表示するには「書き込み専用」ディスクを読み取る必要があるため、これは不可能だと思います。

このようなデバイスを販売する場合、どのようにしてそのデバイスが機能することを確認できますか?たぶん、これはキックスターター用です。


0

これは答えではありませんが、実際にはより多くの考えと、おそらく別の質問です。私には、これは何らかのフックまたはトリガーを介して実装できるかのように聞こえます。

バックグラウンドの一部のプログラムは、書き込み専用フォルダーを監視し(ポーリングではなく、FAMなどで通知されます)、表示されたらすぐに各ファイルを読み取り専用フォルダーに移動します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.