Как запретить пользователю все разрешения, кроме чтения и выполнения, для папки, используя команду «icacls»?

Мы хотели бы изменить разрешение папки, которая в настоящее время имеет полные разрешения, для пользователя с родительским наследованием с полными разрешениями. Я хотел бы применить к пользователю разрешение «Запретить» для всех операций, кроме чтения и выполнения, с помощью команды «icacls».

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

Однако когда мы вручную пытаемся применить разрешение «Запретить» с помощью вкладки «Свойства папки» -> «Безопасность», оно работает должным образом, и пользователь получает только разрешение на чтение и выполнение. Мы также попытались удалить пользователя из группы «Администраторы», а затем выполнить операцию запрета с помощью команды, но это все равно не работает, и даже разрешение на чтение отключается.

Мы пробуем следующий набор команд:

      takeown /f "E:\foldername" /r /d y

:: Reset inheritance on the directory and sub-directories
icacls "E:\foldername"  /reset /T

:: Set read-only permissions for user
icacls "E:\foldername" /grant "test1":(OI)(CI)(R,X)
icacls "E:\foldername" /deny "test1":(OI)(CI)(W,D)

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

Скриншот разрешений, предоставленных вручную

Мы используем компьютеры с Windows 10 и Windows Server 2012 R2. Пожалуйста, помогите нам в решении проблемы.

ОБНОВЛЯТЬ:

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

      icacls "E:\foldername" /grant "test1":(OI)(CI)(R,X,REA,RD,GR,RC,RA)  
icacls "E:\foldername" /deny "test1":(OI)(CI)(W,D)  

Мы также попытались добавить ключ /inheritance с опциями «e» / «r».

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

Посмотреть эффективный доступ

Пожалуйста помогите в решении вопроса.

2 ответа

Этот ответ (как сообщил @user1686 в комментарии к этому вопросу) сработал в нашем случае.

Мы пытались запретить разрешение на запись (W), которое, очевидно, также включает атрибут «Синхронизировать» (S), необходимый для всех операций чтения. Мы попытались избежать этого, указав отдельные атрибуты записи (W), которые необходимо запретить, как показано ниже:

      icacls "E:\foldername" /deny "test1":(OI)(CI)(WD,AD,WEA,WA) /inheritance:r

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

      icacls "C:\Test" /reset /T
icacls "C:\Test" /grant "User":(OI)(CI)RX
icacls "C:\Test" /inheritance:r

Это было выполнено под учетной записью администратора, которой принадлежала папка «C:\Test» (CMD запускался не от имени администратора).

Возможно, проблема вызвана явным добавлением условия Deny, поскольку отрицается слишком многое.

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