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 при запуске работает, если вы используете английскую версию инструмента.

Другие вопросы по тегам