Cacls, Windows 7, полные права, локальные имена
Мне нужно предоставить полный доступ к папке, используя (не рекомендуется в Win7) Cacls. Мне кажется, что я должен использовать cacls локализованные имена пользователей и групповые имена. Например:
cacls foldername /T /E /C /G Users:F
Это дало мне ошибку "Не было сопоставлено имя учетной записи и идентификаторы безопасности". И следующая команда отлично работает (пользователи на русском языке = Пользователи).
cacls foldername /T /E /C /G Пользователи:F
Как я могу предоставить полные права на папку независимо от языка системы?
1 ответ
Использование xcacls
вместо этого, как описано здесь, используйте SID вместо имен (вы найдете здесь хорошо известные sid)
Если вы по какой-то причине застряли с cacls, то google: cacls sid
принесет вам некоторые обходные пути, как сделать обратное сопоставление от sid к имени, а затем предоставить это для cacls
Редактировать: не смог устоять, чтобы выучить некоторые новые трюки... этот простой скрипт даст вам фактическое имя "Пользователи" (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
Готово:-)
Редактировать: исправлено, если в имени есть пробел (добавлено delims=
). Также обратите внимание, что эхо Y при запуске работает, если вы используете английскую версию инструмента.