8

Фон

Скажи, что у меня есть эта команда

icacls C:\FullyAccessibleFolder /grant Users:(OI)(CI)F

Это отлично работает в английских версиях Windows, но, похоже, не работает во французских версиях, что приводит к следующей ошибке, предположительно из-за различий в Users на французском Everyone переводится как Tout le monde в Windows, так что это тоже не решение.

Users: Le mappage entre les noms de compte et les ID de sécurité n'a pas été effectué.

Какой Google переводит как

Users: The mapping between account names and security IDs was not performed.

Вопрос

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

Контент со всего Интернета

Эта страница с похожей проблемой рассказывает о том, как Everyone становится Jeder по-немецки и Tout le monde по-французски.

3 ответа3

10

Не работает во французских версиях, вероятно, из-за того, что Users отличаются

У вас есть три варианта, подробно описано ниже:

  1. Используйте языковой портал, чтобы получить переведенное имя

  2. Получить локализованное имя из SID Users

  3. Используйте SID Users с icacls


Вариант 1. Использование языкового портала (канонический ресурс по терминологии Microsoft)

Поиск пользователей возвращает:

Переводы в локализованных продуктах Microsoft

    English Translation         Product
    Users   Utilisateurs        Windows 7
    Users   des utilisateurs    Windows 7
    Users   Utilisateurs        Windows 8 Modern Voice
    Users   Utilisateurs        Windows 8
    Users   Utilisateurs        Windows 8.1
    USERS   UTILISATEURS        Windows 8.1
    Users   Utilisateurs        Windows 10
    Users   des utilisateurs    Windows 10
    Users   Utilisateurs        Windows 10 Anniversary Update
    users   utilisateurs        Windows 10 Anniversary Update

Это говорит о том, что может работать следующая команда:

icacls C:\FullyAccessibleFolder /grant Utilisateurs:(OI)(CI)F

Вариант 2. Получить локализованное имя из SID Users (S-1-5-32-545)

SID: S-1-5-32-545

Имя: Пользователи

Описание: встроенная группа. После первоначальной установки операционной системы единственным участником является группа «Прошедшие проверку». Когда компьютер присоединяется к домену, группа «Пользователи домена» добавляется в группу «Пользователи» на компьютере.

Источник Известные идентификаторы безопасности в операционных системах Windows

Чтобы получить локализованное имя группы Users :

Этот простой скрипт даст вам фактическое имя группы «Пользователи» (S-1-5-32-545) на данном ПК:

    Set objWMIService = GetObject("winmgmts:\\.\root\cimv2")
    Set objAccount = objWMIService.Get ("Win32_SID.SID='S-1-5-32-545'")
    Wscript.Echo objAccount.AccountName

Поместите его в файл с расширением vbs (usersName.vbs).

Теперь запустите:

echo Y|for /f "delims=" %i in ('cscript -Nologo usersName.vbs') do cacls foldername /G "%i":F

Исходные Cacls, Windows 7, полные права, локальные имена от wmz


Вариант 3: использовать SID Users с icacls

Используйте следующую команду:

icacls C:\FullyAccessibleFolder /grant *S-1-5-32-545:(OI)(CI)F

Комментарий источника от Гарри Джонстона

7

Группу AD нужно указывать не по ее имени, а по номеру SID.
Для стандартных групп, таких как "EveryOne", "Пользователи домена" и т.д., Существуют стандартизированные номера SID, которые можно найти на странице MSDN. Известные идентификаторы безопасности (SID).

Ниже приведены наиболее распространенные относительные идентификаторы.

Структура SID описывается следующим образом:

Компоненты SID легче визуализировать, когда SID конвертируются из двоичного в строковый формат с использованием стандартной записи:

SRX-Y1-Y2-Yn-1-Yn

    Component                   Definition

    S                         Indicates that the string is a SID
    R                         Revision level
    X                         Identifier authority value
    Y            A series of subauthority values, where n is the number of values

Например, SID для встроенной группы «Администраторы» представлен в стандартной записи SID в виде следующей строки:

S-1-5-32-544

Этот SID состоит из четырех компонентов:

  • Уровень редакции (1)

  • Значение авторитетного идентификатора (5, полномочие NT)

  • Идентификатор домена (32, встроенный)

  • Относительный идентификатор (544, Администраторы)

Как работают идентификаторы безопасности

3

Если вам нравятся скрипты PowerShell, но у вас проблемы с запоминанием чисел для идентификаторов безопасности:

$acl = Get-Acl .\myfolder
$sid = New-Object System.Security.Principal.SecurityIdentifier ([System.Security.Principal.WellKnownSidType]::BuiltinUsersSid, $null)
$rule = New-Object System.Security.AccessControl.FileSystemAccessRule ($sid, 'FullControl', 'ObjectInherit,ContainerInherit', 'None', 'Allow')
$acl.AddAccessRule($rule)
Set-Acl .\myfolder $acl

Я знаю, что это похоже на тонну набора текста, но эти длинные идентификаторы завершены:

  • System.Security.Principal.SecurityIdentifier от securityi
  • System.Security.Principal.WellKnownSidType от wellknownsi
  • System.Security.AccessControl.FileSystemAccessRule из filesystem

Все эти строки являются идентификаторами .NET, поэтому они не локализуются.

Если вместо этого вы хотите использовать SID для Everyone , используйте WorldSid вместо BuiltinUsersSid . Чтобы получить список всех параметров WellKnownSidType , см. MSDN или выполните следующую команду:

[System.Security.Principal.WellKnownSidType].DeclaredFields | select Name

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