Назад | Перейти на главную страницу

Использование XCACLS для установки разрешений с длинными именами файлов

Нам необходимо установить разрешения для пользовательских каталогов на Windows 2000 Server. Это происходит достаточно регулярно, и они также должны быть установлены в указанном ниже порядке, иначе резервные копии выйдут из строя. Это базовый сценарий:

XCACLS foldername /g Administrators:OF /T /C /Y  
XCACLS foldername /E /g "DOM\Enterprise Admins":OF /T /C /Y  
XCACLS foldername /E /g SYSTEM:OF /T /C /Y  
XCACLS foldername /E /g STAFF\username:ORWEDC /T /C /Y  

Моя проблема в том, что этот сценарий не работает со всеми файлами в некоторых каталогах. Кажется, что это файлы с длинными именами и глубоко вложенными каталогами.

Кто-нибудь знает сценарий, который не возражает против длинных имен файлов и проходит большие пути?

Мне попался сценарий XCACLS.vbs от Microsoft, но он работает по-другому, и я не уверен, работает ли он и с такими большими именами файлов.

Ограничение длины имен файлов составляет около 260 символов, однако есть хитрый и хитрый способ обойти это :-)

Ограничение находится в подсистеме Win32, а не в ядре. Если вы добавите к имени файла префикс \? \, Это заставит подсистему Win32 передать имя непосредственно ядру без какой-либо предварительной обработки, и ограничение не применяется. У ядра все еще есть ограничение, но это что-то глупое, вроде 65 553 символа.

Так что пока:

xcacls C:\verylongname.txt

не работает, вы должны найти:

xcacls \\?\C:\verylongname.txt

работает. Если вы используете имя UNC, синтаксис следующий:

xcacls \\?\UNC\server\share\verylongname.txt

NB, это работает только с полными именами, то есть начинающимися с буквы диска. Он не работает со всеми приложениями командной строки в Windows, но работает со многими.