Использование ACL для разрешения пользователям добавлять файлы, но не подкаталоги в папку

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

Следующая команда не позволяет пользователю добавлять файлы в папку:

chmod +a "user allow add_file" test

Что мне сделать, чтобы пользователи могли добавлять файлы, а не подкаталоги?

Ответы (1)

РЕДАКТИРОВАТЬ: Ниже приведено частичное решение. Он будет работать на уровне оболочки, как и ожидалось, но в Finder его можно обойти, если пользователь является администратором или знает идентификатор пользователя и пароль администратора. Смотрите комментарии ниже...

Проверьте справочную страницу, chmodи вы найдете...

 The following permissions are applicable to directories:
       list    List entries.
       search  Look up files by name.
       add_file
               Add a file.
       add_subdirectory
               Add a subdirectory.
       delete_child
               Delete a contained object.  See the file delete permission
               above.

Итак, команда, которую вы ищете, это...

$ chmod +a "staff deny add_subdirectory" test

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

$ mkdir test/subtest
mkdir: test/subtest: Permission denied

Где как создать файл...

$ touch test/blah.txt
$ 

нет проблем. Вы также должны обнаружить, что в Finder также отключена опция «Создать папку».

ХТН

Терминал ведет себя так, как ожидалось, но не Finder. Когда я копирую файл с помощью Finder, он запрашивает пароль, хотя позволяет мне переместить файл cmd+shift+v, что я не могу понять, почему?
Да, я только что заметил, что на моей OSX 10.6.8 Finder отключит действие «Новая папка», но позволит переместить папку, если вы пройдете аутентификацию. Странный. Это может иметь какое-то отношение к собственности. Завтра проверю и отчитаюсь.
Не повезло. Пока пользователь является или имеет доступ к учетной записи администратора, он может обойти это. Так что это частичное решение.