Назад | Перейти на главную страницу

Эквивалент Windows "chmod -R a-w"

Что в Windows эквивалентно команде "chmod -R a-w" для рекурсивного удаления разрешений на запись для каталога? Сложная часть состоит в том, чтобы оставить остальные разрешения без изменений (например, если подпапка A доступна для чтения только groupA, НЕ открывайте разрешения папки для всех).

Я бы сказал, что нет "эквивалентного" способа, как дизайн контроль доступа в Windows сильно отличается от Linux.

В любом случае, вы можете добиться чего-то подобного с icacls команда, сценарий PowerShell, VBScript и т. д.

Для каждого файла могут быть правила предоставления и правила отказа, прикрепленные к пользователям или группам. И запрещающие правила отменяют правила предоставления. Таким образом, у вас могут быть разные способы в зависимости от существующих конфигураций ACL для файлов. Например.:

  1. Пользователи наследуют права на чтение и запись: добавьте правило, запрещающее запись
  2. Пользователи наследуют разрешение на чтение, и правило, разрешающее запись, уже существует в файле: просто удалите правило разрешающей записи

Вот пример для случая 1, чтобы добавить правило, которое запрещает множество разрешений на запись с использованием icacls:

icacls C:\myFolder /deny UserOrGroup:(WD,AD,WDAC,WO,WEA,WA,DE,DC) /T

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

Поскольку в своем вопросе вы отметили powershell, сценарий PowerShell, аналогичный приведенному выше icacls пример:

$rule = New-Object System.Security.AccessControl.FileSystemAccessRule("UserOrGroup", "DeleteSubdirectoriesAndFiles, Write, Delete, ChangePermissions, TakeOwnership", "Deny")

Get-ChildItem 'C:\myFolder' -Recurse | ForEach-Object {
    $acl = Get-Acl $_.FullName
    $acl.AddAccessRule($rule)
    Set-Acl $_.FullName $acl
}

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

Примечание. Возможно, вы найдете еще более актуальный вопрос и примеры в сервер, суперпользователь или переполнение стека с такими ключевыми словами, как "windows chmod", "powershell acl", "icacls" и т. д.