Показать полную графическую версию : NTFS права на папки: xcacls / subinacl
Ionicman
19-09-2007, 14:21
Добрый день!
Не расскажете кто чем устанавливает ACE на нужные папки?
Смотрел cacls, xcacls, subinacl - плохо подходят, даже последняя самая мощная - не умеет работать с флагом Inheritance.
Вроде бы должно нормально получится с xcacls.vbs - скачал последний с сайта микрософта, но вот проблемка появилась сразу же.
Мне надо задать на папку следующее права:
На саму папку - можно делать все кроме смены владельца, прав и удаления, на подпапки и файлы - полный доступ.
Как делал я:
Заменяем все права на папку C:\something правами на модификацию, наследование отключаем
cscript.exe xcacls.vbs c:\something /G Someone:M /I REMOVE /SPEC A
Доавляем права FULL на подпапки и папки
cscript.exe xcacls.vbs c:\something /E /F /S /T /G Someone:F /I REMOVE /SPEC E
Добавляем права DENY на DELETE
cscript.exe xcacls.vbs c:\somtehing /E /D Someone:A /SPEC A
Работает все до тех пор, пока не выполняется последняя строчка.
После нее в папку перестает пускать вообще кого - либо.
Если делать через оснастку - все ок.
Толи я чегото не понимаю, толи баг это в скрипте.
Самое что инетерсное что результирующие политики в вид абсолютно одинаковый что делаешь в оснастке, что скриптом, но во втором случае не работает :(
с xcacls.vbs - скачал последний с сайта микрософта »
Возможно, имеет смысл опубликовать / прикрепить его к сообщению или дать ссылку, т. к. без самого файла непонятно, что происходит.
Собственно, на каком этапе выполняется сценарий? Работает ли он в уже установленной ОС? Если нет, то к автоустановке это имеет весьма отдаленное отношение.
Ionicman
20-09-2007, 07:18
Скрипт стандартный, как я уже говорил. Прикладываю файл.
Сценарий должен выполнятся на 13 минуте, и раздавать права на определнные файлы и папки. Он не сработал так, как я писал Выше, ни при Unattended, ни в голой установленной системе.
Собсвтенно я и хотел узнать - мож кто чем то другим пользовался для решения таких проблем во время предустановки?
Проблема следующая - дать определенной папке невозможность удаления, но в то же время полный доступ на все ее содержание.
Ionicman, я что-то не пойму, а зачем вы используете этот файл вообще?
'* File: XCACLS.VBS
'* Created: April 18, 2001
'* Last Modified: June 24, 2004
'* Version: 5.2
'*
'* Main Function: List/Change ACLS for files and directories
'*
'*
'* Copyright (C) 2001 Microsoft Corporation
Просто выполняйте команду xcacls с соответствующими параметрами командной строки.
Ionicman
20-09-2007, 08:02
xcacls не поддерживает включение / отключение наследования. Чтобы сделать то, как мне надо ( я писал выше про папки ), мне надо отключить наследование.
xcacls из ToolKit не поддерживает это, во вторых он не умеет работать с подпапками, он может устанавливать права только НА УКАЗАННУЮ ПАПКУ и НА ЕЕ ФАЙЛЫ. Он не умеет усатанваливать права на подпапки и файлы например - что вполне нормально делается в ГУИ винды, и вроде как этим скриптом. На сайте микрософта прямо так и написано от чего возник скрпит - чтобы добавить функциональность, которй нет в xcacls.
Ясно. В общем, вопрос к автоустановке отношения не имеет. Если вы решите проблему в установленной ОС, то применить решение в процессе установки будет делом техники. Переношу в ХР.
Господа, а не подскажите, как удалить файлы/папки, к которым доступ запрещён? Смотрел тут (http://www.oszone.net/4334/#8), команда cacls не отрабатывает.
Мне необходимо задать скриптом special permission (закрыть доступ на создание подпапок в определённой папке, но оставить остальные права входящие в Modify)
/pace =everyone ACCESS_DENIED_ACE_TYPE-0x1
CONTAINER_INHERIT_ACE-0x2 OBJECT_INHERIT_ACE-0x1
Type of access:
Special acccess :
Detailed Access Flags :
FILE_APPEND_DATA-0x4
Ни xcacls ни subinacl не позволяет выставлять такие права.
Зато это позволяет Secedit накатать шаблон применения гупповой политики(.inf файл) вручную в котором указать
[Unicode]
Unicode=yes
[Version]
signature="$CHICAGO$"
Revision=1
[File Security]
"%FullPath%\Folder",0,"D:PAR(D;OICI;LC;;;WD)"
но при этом перетруться существующие права - а меня не устраивает перетирание существующих прав т.к. они у каждого пользователя разные
батник для применения:
@rem применение прав на ntfs из inf шаблона групповой политики
@rem существующие права перетираются
@rem copywrite by v0f41k
secedit /configure /db temp.db /cfg ntfs.inf /areas filestore /log FileSystem.log
del temp.db
del FileSystem.log
описание дескрипторов безопасности (http://msdn.microsoft.com/ru-ru/aa374928(en-us).aspx)
Ionicman, есть ещё утилиты icacls и sc - я ими никогда не пользовался, попробуй может как раз в твоём случае пригодятся
Подскажите как обойти проблему затирания существующих прав?
Забыл указать ещё одно условие - скрипт должен выполняться из под учётной записи с правами пользователя, папка к которой применяются права по умолчанию имеет доступ full control для этого пользователя.
Ни одна из утилит не даёт возможность сделать это. Остаётся только GUI поэтому написал autoit скрипт:
;Запрещение пользователю создавать папки на рабочем столе
;copywrite by V0f41k
;Win2ksp4 EN
;скрыть в системной панели индикатор AutoIt
;AutoItSetOption("TrayIconHide", 1)
;Отображать текущую строку сценария с помощью индикатора системной панели в режиме отладки.
;AutoItSetOption("TrayIconDebug", 1)
;AutoItSetOption("SendKeyDelay", 15)
;запускаем инсталлятор
FileChangeDir($CmdLine[2])
Send("{LWIN}R")
WinWaitActive('Run','Type the name of a program')
ControlSetText('Run','','Edit1',$CmdLine[2])
ControlClick('Run','OK','Button2')
;название окна содержит %username% - полный путь может не быть в настройках свойств папки
WinWaitActive($CmdLine[2],$CmdLine[3])
Send('D')
Send("{APPSKEY}")
Send('R')
WinWaitActive('Desktop Properties','File Folder')
Send('+{TAB 2}')
Send('{RIGHT 2}')
ControlClick('Desktop Properties','Ad&vanced...','Button16')
WinWaitActive('Access Control Settings for Desktop','Permission En&tries')
ControlClick('Access Control Settings for Desktop','A&dd...','Button1')
WinWaitActive('Select User, Computer, or Group','&Look in')
Sleep(500)
Send('+{TAB 2}')
Send('{UP 2}')
Sleep(100)
ControlSetText('Select User','&Look in','Edit1','Users')
Sleep(200)
ControlClick('Select User','OK','Button1')
WinWaitActive('Permission Entry','Apply &onto')
ControlClick('Permission Entry','Deny Create Folders / Append Data','Button13')
ControlClick('Permission Entry','OK','Button30')
WinWaitActive('Access Control Settings for Desktop','Permission En&tries')
ControlClick('Access Control Settings for Desktop','OK','Button7')
;окно появляется только первый раз
WinWaitActive('Security','Do you wish to continue',1)
ControlClick('Security','&Yes','Button1')
WinWaitActive('Desktop Properties','&Permissions')
ControlClick('Desktop Properties','OK','Button18')
WinWaitActive($CmdLine[2],$CmdLine[3])
Send("!{F4}")
батник запускающий его
@rem Запрещение пользователю создавать папки на рабочем столе
@rem copywrite by V0f41k
set AutoItPath=o:\scripts
@rem запускаем autoit script
%AutoItPath%\Autoit3.exe "Desktop Permitions.au3" /p "%userprofile%" "%username%"
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.