1

Я должен заархивировать (= перейти в подпапку "архив" и установить флаг только для чтения) набор удаленных каталогов, сохраняя ACL, на удаленном сервере Windows. Каталоги имеют разные права доступа, некоторые унаследованы от родительской папки, некоторые нет. Крайне важно, чтобы перемещенные каталоги сохраняли свои права доступа (например, некоторые каталоги могут быть доступны только менеджерам и должны оставаться таковыми).

Я немного поиграл с флагом "Только для чтения" в свойствах каталогов, и он, кажется, частично соответствует моим требованиям - после его установки я все еще могу создать новый файл в каталоге RO, и я хотел бы чтобы предотвратить это.

Однако самая большая проблема заключается в перемещении каталогов без разрушения списков ACL.

Может кто-нибудь помочь мне с вышеупомянутыми проблемами, пожалуйста?

Заранее большое спасибо!

Р.

1 ответ1

1

Я бы посоветовал сначала создать резервную копию текущих списков ACL с помощью icacls /save , чтобы в случае проблем вы могли просто icacls /restore и перезапустить его с самого начала.


Разрешения наследуются (или повторно (-re (-re…)) наследуются) только от непосредственного родительского каталога, а не от всех родителей вместе. Таким образом, этого должно быть достаточно, чтобы отключить наследование для самого верхнего каталога (сделав разрешения статическими), например, используя

icacls my_2008_project /inheritance:d

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

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


Чтобы предотвратить запись, вы должны будете также использовать ACL. (Атрибут «только для чтения» работает только с файлами - он полностью игнорируется для каталогов.) Проще всего было бы добавить «отклонить» ACE:

icacls my_2008_project /t /deny Everyone:W

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

Обычная наследуемая версия будет:

icacls my_2008_project /deny Everyone:(OI)(CI)W

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .