Как я могу сделать просмотр папки только для записи?

Я хочу, чтобы в файловой системе было место для представления «только для записи» другой папки, к которой у меня есть доступ для чтения и записи.

Я представляю что-то похожее по поведению с перетаскиванием 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/, и оба «представления» функционируют для одного пользователя.

Как я могу настроить что-то подобное? Может быть, какое-то умное расположение символических ссылок? Или необычная конфигурация крепления?

11
задан 15 May 2012 в 23:36

8 ответов

Используйте 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
1
ответ дан 15 May 2012 в 23:36

Можно достигнуть части этого путем установки полномочий на папке, таким образом, что у целевых пользователей есть доступ для записи к папке, но не доступ для чтения.

, Например, чтобы позволить любому писать в папку, но не перечислять ее содержание, Вы могли сделать следующее:

chmod o=wx folder

Или только дать конкретную группу пользователей этот доступ:

chgrp groupname folder
chmod o=,g=wx folder

Теперь те пользователи не смогут перечислить содержание папки, но смогут поместить файлы в папку:

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

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

1
ответ дан 15 May 2012 в 23:36

Я задал этот тот же вопрос для студенческих полей отбрасывания в списке рассылки самбы, несколько лет назад (http://lists.samba.org/archive/samba/2008-September/143610.html) и ответ работали на нас. Вам нужны расширенные атрибуты acl в Вашей файловой системе (от acl пакета), вот ответ Jeremy Allison...

хорошо, проблема состоит в том, что студенты должны смочь считать содержание каталога, чтобы смочь перетащить новые файлы там. Причина состоит в том, что Samba должен смочь просканировать каталог от их имени, чтобы сделать нечувствительные к регистру поиски.

, Но пока Вы не возражаете позволять студентам видеть названия каждого файлы других, можно настроить Dropbox так, чтобы студенты могли записать в него (и их собственные файлы), но не отредактировать или видеть файлы других.

Во-первых, Вы хотите удостовериться, что файлы, созданные в каталоге DropBox, не принадлежат основной группе студента, но владельцу группы Dropbox direcotry. Так:

chgrp учителя DropBox

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

chmod g+s DropBox

Затем гарантирует, что файл в Dropbox может быть переименован или удален только владельцем файла, или владельцем каталога, или корнем (те же полномочия, которые/tmp имеет).

chmod +t DropBox

Затем позволяет студентам писать в каталог путем добавления ACL

setfacl-m g:students:rwx DropBox

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

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

наследовали владельца = да

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

1
ответ дан 15 May 2012 в 23:36

Можно создать папку отбрасывания "представление только для записи" с rw доступом и использовать cronjob или inode уведомление для перемещения содержания в другое "представление записи чтения".

1
ответ дан 15 May 2012 в 23:36

Я не думаю, что это возможно, так как необходимо считать диск "только для записи" для отображения содержания.

, Если бы я должен был продать такое устройство, как кто-либо смог бы проверить, что оно работало? Возможно, это один для ножного стартера.

0
ответ дан 15 May 2012 в 23:36

Это не ответ, но действительно больше мысль и возможно другой вопрос. Мне это звучит, как будто это может быть реализовано через своего рода рычаг или триггер.

Некоторая программа в фоновом режиме могла бы наблюдать папку только для записи (не путем опроса, она может быть уведомлена с FAM или что-то как этот), и затем переместите каждый файл из нее в папку только для чтения, как только это появляется.

0
ответ дан 15 May 2012 в 23:36

Я полагаю, что Вы могли просто использовать, связывают, монтируют обман, в /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
ответ дан 15 May 2012 в 23:36

Во-первых, легче думать об этом наоборот. У Вас есть папка, которая является rw для того, кому бы ни нужны доступ для записи и "представление" только для чтения этой папки для тех, которым нужен доступ только для чтения.

я никогда не мог добраться, монтирование - связывают-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, но это будет только действительно иметь смысл для доступа к сети.

Это решение было вдохновлено ( украденный от ) это практическое руководство . Я надеюсь, что это помогает.

0
ответ дан 15 May 2012 в 23:36

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

Похожие вопросы: