Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Microsoft Windows 2000/XP (http://forum.oszone.net/forumdisplay.php?f=6)
-   -   NTFS права на папки: xcacls / subinacl (http://forum.oszone.net/showthread.php?t=90524)

Ionicman 19-09-2007 14:21 646064

NTFS права на папки: xcacls / subinacl
 
Добрый день!

Не расскажете кто чем устанавливает 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

Работает все до тех пор, пока не выполняется последняя строчка.
После нее в папку перестает пускать вообще кого - либо.
Если делать через оснастку - все ок.

Толи я чегото не понимаю, толи баг это в скрипте.
Самое что инетерсное что результирующие политики в вид абсолютно одинаковый что делаешь в оснастке, что скриптом, но во втором случае не работает :(

Vadikan 19-09-2007 20:47 646273

Цитата:

Цитата Ionicman
с xcacls.vbs - скачал последний с сайта микрософта »

Возможно, имеет смысл опубликовать / прикрепить его к сообщению или дать ссылку, т. к. без самого файла непонятно, что происходит.

Собственно, на каком этапе выполняется сценарий? Работает ли он в уже установленной ОС? Если нет, то к автоустановке это имеет весьма отдаленное отношение.

Ionicman 20-09-2007 07:18 646388

Вложений: 1
Скрипт стандартный, как я уже говорил. Прикладываю файл.
Сценарий должен выполнятся на 13 минуте, и раздавать права на определнные файлы и папки. Он не сработал так, как я писал Выше, ни при Unattended, ни в голой установленной системе.

Собсвтенно я и хотел узнать - мож кто чем то другим пользовался для решения таких проблем во время предустановки?

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

Vadikan 20-09-2007 07:55 646396

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 646402

xcacls не поддерживает включение / отключение наследования. Чтобы сделать то, как мне надо ( я писал выше про папки ), мне надо отключить наследование.

xcacls из ToolKit не поддерживает это, во вторых он не умеет работать с подпапками, он может устанавливать права только НА УКАЗАННУЮ ПАПКУ и НА ЕЕ ФАЙЛЫ. Он не умеет усатанваливать права на подпапки и файлы например - что вполне нормально делается в ГУИ винды, и вроде как этим скриптом. На сайте микрософта прямо так и написано от чего возник скрпит - чтобы добавить функциональность, которй нет в xcacls.

Vadikan 20-09-2007 18:05 646750

Ясно. В общем, вопрос к автоустановке отношения не имеет. Если вы решите проблему в установленной ОС, то применить решение в процессе установки будет делом техники. Переношу в ХР.

vlad001 21-05-2008 19:56 807967

Господа, а не подскажите, как удалить файлы/папки, к которым доступ запрещён? Смотрел тут, команда cacls не отрабатывает.

v0f41k 11-09-2008 14:58 896397

Мне необходимо задать скриптом 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

описание дескрипторов безопасности

Ionicman, есть ещё утилиты icacls и sc - я ими никогда не пользовался, попробуй может как раз в твоём случае пригодятся

Подскажите как обойти проблему затирания существующих прав?

v0f41k 22-10-2008 13:37 930477

Забыл указать ещё одно условие - скрипт должен выполняться из под учётной записи с правами пользователя, папка к которой применяются права по умолчанию имеет доступ 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%"



Время: 06:14.

Время: 06:14.
© OSzone.net 2001-