3

Это в Windows 7.

У меня есть несколько папок высокого уровня. Каждая папка высокого уровня имеет целую кучу подпапок.

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

Я думал, что могу сделать это в два этапа:

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

  2. Снова откройте папку высокого уровня и назначьте "Только чтение" для группы, которую я пытаюсь ограничить, но на этот раз выберите "Только эта папка" при ее применении. Этот шаг не работает.

Я думаю, что Шаг 2 оставит каждую подпапку как "Чтение и запись" и применит папку "только для чтения" только для папки верхнего уровня. Но все подпапки, вплоть до конца, становятся "Только для чтения" и после шага 2.

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

Если я открою каталог, выделю все подпапки и нажму правой кнопкой «Свойства», он не позволит мне установить разрешения для нескольких файлов одновременно. Это позволяет мне устанавливать разрешения, только если я делаю их по одному.

Я не хочу устанавливать тысячи прав доступа к файлам вручную. Любая помощь?

Спасибо,

t.spoon.

2 ответа2

0

У меня есть несколько папок высокого уровня. Каждая папка высокого уровня имеет целую кучу подпапок.

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

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

Установите ваши переменные

  • SET TopFolder=:

    • Задайте значение SET TopFolder= чтобы папка корневого уровня [parent] равнялась полному пути и имени папки. Цикл будет устанавливать разрешения на основе того, что существует под этой папкой, предоставляя явный доступ к ACL изменения NFTS.
  • SET UserOrGroupName=:

    • Установите значение SET UserOrGroupName= чтобы оно равнялось имени учетной записи пользователя или имени группы безопасности (т. <LocalUserName> , <LocalGroupName> , <Domain>\<UserName> или <Domain>\<GroupName>).

Пример копирования из командной строки

@ECHO ON

SET TopFolder=C:\Users\User\Desktop\HighLevelFolder\Parent1
SET UserOrGroupName=User
::: Grant top folder read and execute access and have beneath folders and files inherit these permissions.
ICACLS "%TopFolder%" /grant:r "%UserOrGroupName%":(OI)(CI)RX
::: Iterate the subfolders beneath the [parent] root-level folder to grant the explicit modify access
FOR /F "TOKENS=*" %G IN ('DIR /B /AD "%TopFolder%\*"') DO ICACLS "%TopFolder%\%~G" /grant:r "%UserOrGroupName%":(OI)(CI)M
GOTO EOF

Пример пакетного скрипта

@ECHO ON

SET TopFolder=C:\Users\User\Desktop\HighLevelFolder\Parent1
SET UserOrGroupName=User
::: Grant top folder read and execute access and have beneath folders and files inherit these permissions.     
ICACLS "%TopFolder%" /grant:r "%UserOrGroupName%":(OI)(CI)RX
::: Iterate the subfolders beneath the [parent] root-level folder to grant the explicit modify access
FOR /F "TOKENS=*" %%G IN ('DIR /B /AD"%TopFolder%\*"') DO ICACLS "%TopFolder%\%%~G" /grant:r "%UserOrGroupName%":(OI)(CI)M
GOTO EOF

Дальнейшее чтение и источники

Я использовал эти параметры ICACLS:

/grant[:r] Sid:perm grants the specified user access rights. With :r,
    the permissions replace any previously granted explicit permissions.
    Without :r, the permissions are added to any previously granted
    explicit permissions.

perm is a permission mask and can be specified in one of two forms:
    a sequence of simple rights:
            M - modify access
            RX - read and execute access

inheritance rights may precede either form and are applied
only to directories:
        (OI) - object inherit
        (CI) - container inherit
0

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

Это бит, в котором постер "Том" пошёл не так.

На этом шаге он должен был установить значение «Применить к» только для подпапок и файлов.

Вы можете ограничить доступ пользователя к каталогу, установив для его доступа (например, RX) значение «Только эта папка», при условии, что для доступа к его подобъектам (например, ПОЛНЫЙ) установлено значение «Только подпапки и файлы». В противном случае настройки будут конфликтовать, и Windows 7 отклонит изменение или применит его каким-либо иным способом, чем вы предполагали.

Ручная процедура Тома намного проще, чем борьба с ужасами icacls.exe, но теоретически возможно получить тот же результат со следующим (но у меня никогда не было, кроме как после первого удаления всех унаследованных прав, а также после удаления все явные права тоже, и либо удаление всех других пользователей на объекте, либо выполнение этого для КАЖДОГО пользователя на объекте):

Сначала я установил ПОЛНЫЙ доступ только на СУБЪЕКТАХ -

icacls.exe "%directory%" /T /grant:r %username%:(OI)(CI)(IO)F

Затем я ограничиваю доступ пользователя к самому КАТАЛОГУ -

icacls.exe "%directory%" /grant:r %username%:(RX,WDAC,WO,WD,AD,WEA,DC)

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