Задать вопрос
@Kosyachella

Как настроить права через icacls?

Для ограничения возможности пользователю ставить и запускать "левые" сертификаты с токенов были ограничены права на запись каталога %appdata%\Microsoft\SystemCertificates\My\Certificates, что не позволяло использовать даже вставленные токены, кроме того что уже записан в папку.

Сейчас необходимо сделать такое-же ограничение, но с помощью .bat файла, путем проб и ошибок пришел в команде вида:
icacls %appdata%\Microsoft\SystemCertificates\My\Certificates /deny %username%:(OI)(CI)(W) /T /C /L /Q


При использовании этой команды выдает ошибку "отказано в доступе" на вложенные файлы

C:\Users\seregina>icacls %appdata%\Microsoft\SystemCertificates\My\Certificates /deny %username%:(OI)(CI)(W) /T /L
обработанный файл: C:\Users\seregina\AppData\Roaming\Microsoft\SystemCertificates\My\Certificates
C:\Users\seregina\AppData\Roaming\Microsoft\SystemCertificates\My\Certificates\*: Отказано в доступе.
Успешно обработано 1 файлов; не удалось обработать 1 файлов
Если смотреть через графический интерфейс, то все права совпадают, но нельзя войти в папку Certificates. И система не видит сертификат.

Базовые права папки:

C:\Users\seregina\AppData\Roaming\Microsoft\SystemCertificates\My\Certificates NT AUTHORITY\СИСТЕМА:(I)(OI)(CI)(F)
                                                                               BUILTIN\Администраторы:(I)(OI)(CI)(F)
                                                                               CompName\seregina:(I)(OI)(CI)(F)
                                                                               Обязательная метка\Средний обязательный уровень:(NW)

Успешно обработано 1 файлов; не удалось обработать 0 файлов

Права при использовании проводника, сертификат система видит, можно пользоваться:

C:\Users\seregina\AppData\Roaming\Microsoft\SystemCertificates\My\Certificates CompName\seregina:(OI)(CI)(DENY)(W)
                                                                               NT AUTHORITY\СИСТЕМА:(I)(OI)(CI)(F)
                                                                               BUILTIN\Администраторы:(I)(OI)(CI)(F)
                                                                               CompName\seregina:(I)(OI)(CI)(F)
                                                                               ЦЕНТР ПАКЕТОВ ПРИЛОЖЕНИЙ\Программные или аппаратные сертификаты, смарт-карта:(I)(OI)(CI)(RX)
                                                                               Обязательная метка\Средний обязательный уровень:(NW)

Успешно обработано 1 файлов; не удалось обработать 0 файлов

Права при использовании команды icacls, сертификат не виден системой:

C:\Users\seregina\AppData\Roaming\Microsoft\SystemCertificates\My\Certificates CompName\seregina:(OI)(CI)(DENY)(W)
                                                                               NT AUTHORITY\СИСТЕМА:(I)(OI)(CI)(F)
                                                                               BUILTIN\Администраторы:(I)(OI)(CI)(F)
                                                                               CompName\seregina:(I)(OI)(CI)(F)
                                                                               Обязательная метка\Средний обязательный уровень:(NW)

Успешно обработано 1 файлов; не удалось обработать 0 файлов

Где может крыться подвох и почему при идентичных правах итог совершенно разный?

ЦЕНТР ПАКЕТОВ ПРИЛОЖЕНИЙ\Программные или аппаратные сертификаты, смарт-карта:(I)(OI)(CI)(RX) При использовании проводника еще раз вызвать не получилось, возможно это из-за обращения крипты к папке во время очередной проверки

Добавлю, что если после выполнения команды вручную зайти в безопасность и поменять что угодно, вернув потом обратно, папка становится доступной, и система видит сертификат
  • Вопрос задан
  • 661 просмотр
Подписаться 1 Средний Комментировать
Решения вопроса 1
@Kosyachella Автор вопроса
Решения решения вопроса при помощи cmd так и не нашел, разрешил проблему при помощи скрипта запрета на powershell.
$path = "$env:APPDATA\Microsoft\SystemCertificates\My\Certificates"
$user = "$env:UserName"
$Rights = "Write"
$InheritSettings = "Containerinherit, ObjectInherit"
$PropogationSettings = "None"
$RuleType = "Deny"
$acl = Get-Acl $path
$perm = $user, $Rights, $InheritSettings, $PropogationSettings, $RuleType
$rule = New-Object -TypeName System.Security.AccessControl.FileSystemAccessRule -ArgumentList $perm
$acl.SetAccessRule($rule)
$acl | Set-Acl -Path $path
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы