Независимо от языка Windows, как я могу заставить команду ICACLS установить папку, чтобы иметь полный доступ ко всем?
Фон
Скажи, у меня есть эта команда
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 ответа
Не работает во французских версиях, предположительно из-за Users
быть другим
У вас есть три варианта, подробно описано ниже:
Используйте языковой портал, чтобы получить переведенное имя
Получить локализованное имя из
Users
SIDИспользовать
Users
SID с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: Получить локализованное имя из Users
SID (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: Используйте Users
SID с icacls
Используйте следующую команду:
icacls C:\FullyAccessibleFolder /grant *S-1-5-32-545:(OI)(CI)F
Комментарий источника от Harry Johnston
Группу 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, Администраторы)
Если вам нравятся скрипты 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, поэтому они не локализуются.
Если вы хотите Everyone
Вместо SID используйте WorldSid
на месте BuiltinUsersSid
, Чтобы получить список всех WellKnownSidType
параметры, см. MSDN или выполните эту команду:
[System.Security.Principal.WellKnownSidType].DeclaredFields | select Name