информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
Сетевые кракеры и правда о деле ЛевинаСтрашный баг в WindowsГде водятся OGRы
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 Microsoft обещает радикально усилить... 
 Ядро Linux избавляется от российских... 
 20 лет Ubuntu 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / programming
Имя Пароль
ФОРУМ
если вы видите этот текст, отключите в настройках форума использование JavaScript
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
  • Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
  • Новичкам также крайне полезно ознакомиться с данным документом.
[Win32] Win Security API - работа с томом NTFS. 10.09.02 02:55  
Автор: J'JF <Dmytro Volhushyn> Статус: Elderman
Отредактировано 10.09.02 02:58  Количество правок: 1
<"чистая" ссылка>
Такой вопрос:
Домен Win2K. На файл-сервере есть том NTFS, который расшарен для всех юзверей, но для каждого - с разными правами... Файлов очень много (порядка 15 тыс. - в основном, таблицы FoxPro). Права назначены как папкам, так и отдельным файлам (и даже очень часто!).

Задача:
Подстраховаться на случай краха винта и налабать утилитку, которая бы считывала у каждого файла Security-атрибуты (права доступа для каждго из пользователей, владельца) и заносила их куда-то (непринципиально - хоть даже в текстовый файл - я уж с этим сам разберусь). Сами файлы архивируются, их восстановление - не проблема. Проблема восстановить все права на них!

Что непонятно:
Как вообще получить эту информацию? Какие функции использовать? Ну и, ессно, как программно назначить права? Перелопатил MSDN, нашел пару функций, по смыслу подходящих, но как с ними работать - так и не понял. А, может, тут надо как-то к ActiveDirectory пристраиваться? Может, кто-то сталкивался? Пишу на Делфи, но дайте работающий код хоть на Си - разберусь!

А, может, тут есть и какой-то более простой выход? Может, можно какой-то VB-script замутить?

Заранее благодарен.
[Win32] Win Security API - работа с томом NTFS. 11.09.02 00:39  
Автор: duplex Статус: Незарегистрированный пользователь
Отредактировано 11.09.02 00:41  Количество правок: 1
<"чистая" ссылка>
рассмотри в качестве бреда такой алгоритм:

получаешь SecurityDescriptor объекта (файл/директория), GetSecurityInfo
создаешь новый объект-stub 0-й длины с таким же security, но в другой директории
продолжаешь рекурсивно по всем объектам
потом, все пустышки сжать раром

когда надо восстановить, то из рара вынимашь нужные объекты-стабы и приминяешь их security на реальные - SetSecurityInfo
[Win32] Win Security API - работа с томом NTFS. 11.09.02 10:58  
Автор: J'JF <Dmytro Volhushyn> Статус: Elderman
<"чистая" ссылка>
Для данной задачи - это, конечно, достаточно простой выход. Только вот моя бабушка называет такое "Сраным наверх"!
Конечная цель для меня - понять, как эта часть АПИ у мелкомягких вобще устроена! Т.е. конкретно и детально во всем разобраться. В том числе и в структуре SecuritySescriptor-а.
Но все равно спасибо.
[Win32] Win Security API - работа с томом NTFS. 11.09.02 17:02  
Автор: duplex Статус: Незарегистрированный пользователь
Отредактировано 11.09.02 17:13  Количество правок: 1
<"чистая" ссылка>
если конечная цель - разобраться с nt-security, то этот метод не пойдет
Гениально! :) 11.09.02 01:58  
Автор: ZloyShaman <ZloyShaman> Статус: Elderman
<"чистая" ссылка>
> потом, все пустышки сжать раром
Особенно это прикольно, если учитывать, что пустые файлы не занимают фактически места на диске, а только запись в MFT :)
Гениально! :) 11.09.02 17:13  
Автор: duplex Статус: Незарегистрированный пользователь
<"чистая" ссылка>
в данном случае на рар перекладывется забота о хранении security объектов в отдельном файле, а глагол "сжать" я использовал по-привычке ;)
кроме того, не на любом нтфс файл 0-й длины будет занимать только одну запись в $MFT, иногда в ран-листе все же будет прописано смещение на единственный кластер, что и видно в allocated size 80-го аттрибута, при этом в real size будет 0
Гениально! :) 11.09.02 20:24  
Автор: J'JF <Dmytro Volhushyn> Статус: Elderman
<"чистая" ссылка>
> кроме того, не на любом нтфс файл 0-й длины будет занимать
> только одну запись в $MFT, иногда в ран-листе все же будет
> прописано смещение на единственный кластер, что и видно в
> allocated size 80-го аттрибута, при этом в real size будет
> 0
... и файло в итоге свои 4 кила сожрет! Ессно, если кластер - 4 кила. Для моих 15 тысяч файлов это будет примерно ... э-э-э... 60 литров. Не так уж и много...
А вот действительно интересно, почему же так? Ведь в том-то и прикол НТФС, что мелкие файлы наваливаются в MFT! Неужели бывает такой глюк?
ОК 11.09.02 17:22  
Автор: ZloyShaman <ZloyShaman> Статус: Elderman
<"чистая" ссылка>
> кроме того, не на любом нтфс файл 0-й длины будет занимать
> только одну запись в $MFT, иногда в ран-листе все же будет
> прописано смещение на единственный кластер, что и видно в
> allocated size 80-го аттрибута, при этом в real size будет
> 0
Эээ.. а иногда, это когда?
ОК 11.09.02 20:34  
Автор: duplex Статус: Незарегистрированный пользователь
<"чистая" ссылка>
воссоздать ситуацию я не прбовал, но видел (по долгу службы) именно такую ситуацию на нт4+сп3
кажется, это уже оффтопик ;)
Думаю, что в НТ5 эта ситуация исправлена. 11.09.02 20:51  
Автор: ZloyShaman <ZloyShaman> Статус: Elderman
<"чистая" ссылка>
[Win32] Win Security API - работа с томом NTFS. 10.09.02 03:28  
Автор: + <Mikhail> Статус: Elderman
<"чистая" ссылка>
neuzheli MS backup ne delaet etogo???

esli net (v chem I silno somnevaus~)
mozhno tak (VB dlia nagliadnosti):
Dim sd as IADsSecurityDescriptor
Dim sdUtil as New ADsSecurityUtility

Set sd = sdUtil.GetSecurityDescriptor("c:\specs\adsixml.doc", ADS_PATH_FILE, ADS_SD_FORMAT_IID )

---
teper~ cherez sd mozhesh poluchit vse ostalnoe.
i sohranit` etu info kak hochesh.

Dla vostanovlenia vce obratnom poridke:
otkryvaesh vostanovlenye files
Set sd = sdUtil.GetSecurityDescriptor("c:\specs\adsixml.doc", ADS_PATH_FILE, ADS_SD_FORMAT_IID )
'set properies of sd (kotorye ranshe sohranil)
'set SD
sdUtil.SetSecurityDescriptor "c:\specs\adsixml.doc", ADS_PATH_FILE, sd, ADS_SD_FORMAT_IID

---
[Win32] Win Security API - работа с томом NTFS. 25.09.02 14:53  
Автор: ZEP Статус: Незарегистрированный пользователь
<"чистая" ссылка>
> neuzheli MS backup ne delaet etogo???
>
> esli net (v chem I silno somnevaus~)
> mozhno tak (VB dlia nagliadnosti):
>
> Dim sd as IADsSecurityDescriptor
> Dim sdUtil as New ADsSecurityUtility
> 
> Set sd =
> sdUtil.GetSecurityDescriptor("c:\specs\adsixml.doc",
> ADS_PATH_FILE, ADS_SD_FORMAT_IID )
> 

---
> teper~ cherez sd mozhesh poluchit vse ostalnoe.
> i sohranit` etu info kak hochesh.
>
> Dla vostanovlenia vce obratnom poridke:
> otkryvaesh vostanovlenye files
>
> Set sd =
> sdUtil.GetSecurityDescriptor("c:\specs\adsixml.doc",
> ADS_PATH_FILE, ADS_SD_FORMAT_IID )
> 'set properies of sd (kotorye ranshe sohranil)
> 'set SD
> sdUtil.SetSecurityDescriptor "c:\specs\adsixml.doc",
> ADS_PATH_FILE, sd, ADS_SD_FORMAT_IID
> 

---

У меня в нет объектов IADsSecurityDescriptor и ADsSecurityUtility, а также ничего похожего.
Что вы используете?
[Win32] Win Security API - работа с томом NTFS. 26.09.02 00:08  
Автор: + <Mikhail> Статус: Elderman
<"чистая" ссылка>
> > neuzheli MS backup ne delaet etogo???
> >
> > esli net (v chem I silno somnevaus~)
> > mozhno tak (VB dlia nagliadnosti):
> >
> > Dim sd as IADsSecurityDescriptor
> > Dim sdUtil as New ADsSecurityUtility
> > 
> > Set sd =
> > sdUtil.GetSecurityDescriptor("c:\specs\adsixml.doc",
> > ADS_PATH_FILE, ADS_SD_FORMAT_IID )
> > 

---
> > teper~ cherez sd mozhesh poluchit vse ostalnoe.
> > i sohranit` etu info kak hochesh.
> >
> > Dla vostanovlenia vce obratnom poridke:
> > otkryvaesh vostanovlenye files
> >
> > Set sd =
> > sdUtil.GetSecurityDescriptor("c:\specs\adsixml.doc",
> > ADS_PATH_FILE, ADS_SD_FORMAT_IID )
> > 'set properies of sd (kotorye ranshe sohranil)
> > 'set SD
> > sdUtil.SetSecurityDescriptor "c:\specs\adsixml.doc",
> > ADS_PATH_FILE, sd, ADS_SD_FORMAT_IID
> > 

---
>
> У меня в нет объектов IADsSecurityDescriptor и
> ADsSecurityUtility, а также ничего похожего.
> Что вы используете?
WIn32 API
[Win32] Win Security API - работа с томом NTFS. 26.09.02 08:51  
Автор: ZEP Статус: Незарегистрированный пользователь
<"чистая" ссылка>
> > > neuzheli MS backup ne delaet etogo???
> > >
> > > esli net (v chem I silno somnevaus~)
> > > mozhno tak (VB dlia nagliadnosti):
> > >
> > > Dim sd as IADsSecurityDescriptor
> > > Dim sdUtil as New ADsSecurityUtility
> > > 
> > > Set sd =
> > >
> sdUtil.GetSecurityDescriptor("c:\specs\adsixml.doc",
> > > ADS_PATH_FILE, ADS_SD_FORMAT_IID )
> > > 

---
> > > teper~ cherez sd mozhesh poluchit vse ostalnoe.
> > > i sohranit` etu info kak hochesh.
> > >
> > > Dla vostanovlenia vce obratnom poridke:
> > > otkryvaesh vostanovlenye files
> > >
> > > Set sd =
> > >
> sdUtil.GetSecurityDescriptor("c:\specs\adsixml.doc",
> > > ADS_PATH_FILE, ADS_SD_FORMAT_IID )
> > > 'set properies of sd (kotorye ranshe sohranil)
> > > 'set SD
> > > sdUtil.SetSecurityDescriptor
> "c:\specs\adsixml.doc",
> > > ADS_PATH_FILE, sd, ADS_SD_FORMAT_IID
> > > 

---
> >
> > У меня в нет объектов IADsSecurityDescriptor и
> > ADsSecurityUtility, а также ничего похожего.
> > Что вы используете?
> WIn32 API

Можно подробнее ?
[Win32] подробнее в MSDN 26.09.02 22:51  
Автор: + <Mikhail> Статус: Elderman
<"чистая" ссылка>
[Win32] Так, уже неплохо! 10.09.02 03:43  
Автор: J'JF <Dmytro Volhushyn> Статус: Elderman
<"чистая" ссылка>
> neuzheli MS backup ne delaet etogo???

Суть - понять, как это делать программно. Для последующей автоматизации различных процессов...

> esli net (v chem I silno somnevaus~)
> mozhno tak (VB dlia nagliadnosti):
>
> Dim sd as IADsSecurityDescriptor
> Dim sdUtil as New ADsSecurityUtility
> 
> Set sd =
> sdUtil.GetSecurityDescriptor("c:\specs\adsixml.doc",
> ADS_PATH_FILE, ADS_SD_FORMAT_IID )
> 

---
> teper~ cherez sd mozhesh poluchit vse ostalnoe.
> i sohranit` etu info kak hochesh.
>
> Dla vostanovlenia vce obratnom poridke:
> otkryvaesh vostanovlenye files
>
> Set sd =
> sdUtil.GetSecurityDescriptor("c:\specs\adsixml.doc",
> ADS_PATH_FILE, ADS_SD_FORMAT_IID )
> 'set properies of sd (kotorye ranshe sohranil)
> 'set SD
> sdUtil.SetSecurityDescriptor "c:\specs\adsixml.doc",
> ADS_PATH_FILE, sd, ADS_SD_FORMAT_IID
> 

---

Во! В принципе, то что надо! Вот только что есть в SecurityDescriptor, какова его структура? Я в MSDN глянул - и нифига не понял... Не уверен, что он содержит такие сведения, как, к примеру, запрет на создание или удаление подпапок внутри какой-то папки и т.п... Можно поточнее. Я бы и рад сам проверить - но с VB я не дружу, да и сетка - на работе, т.е. далековато...
[Win32] Так, уже неплохо! 10.09.02 05:28  
Автор: + <Mikhail> Статус: Elderman
Отредактировано 10.09.02 05:33  Количество правок: 2
<"чистая" ссылка>
> > neuzheli MS backup ne delaet etogo???
>
> Суть - понять, как это делать программно. Для последующей
> автоматизации различных процессов...
>
> > esli net (v chem I silno somnevaus~)
> > mozhno tak (VB dlia nagliadnosti):
> >
> > Dim sd as IADsSecurityDescriptor
> > Dim sdUtil as New ADsSecurityUtility
> > 
> > Set sd =
> > sdUtil.GetSecurityDescriptor("c:\specs\adsixml.doc",
> > ADS_PATH_FILE, ADS_SD_FORMAT_IID )
> > 

---
> > teper~ cherez sd mozhesh poluchit vse ostalnoe.
> > i sohranit` etu info kak hochesh.
> >
> > Dla vostanovlenia vce obratnom poridke:
> > otkryvaesh vostanovlenye files
> >
> > Set sd =
> > sdUtil.GetSecurityDescriptor("c:\specs\adsixml.doc",
> > ADS_PATH_FILE, ADS_SD_FORMAT_IID )
> > 'set properies of sd (kotorye ranshe sohranil)
> > 'set SD
> > sdUtil.SetSecurityDescriptor "c:\specs\adsixml.doc",
> > ADS_PATH_FILE, sd, ADS_SD_FORMAT_IID
> > 

---
>
> Во! В принципе, то что надо! Вот только что есть в
> SecurityDescriptor, какова его структура? Я в MSDN глянул -
> и нифига не понял... Не уверен, что он содержит такие
> сведения, как, к примеру, запрет на создание или удаление
> подпапок внутри какой-то папки и т.п... Можно поточнее. Я
> бы и рад сам проверить - но с VB я не дружу, да и сетка -
> на работе, т.е. далековато...

Zachem tebe nuzhna structura. Polzuisia interfacami:

Directory Services: Security Interfaces
Directory Services: Access Control
[Win32] Так, уже неплохо! 10.09.02 08:35  
Автор: J'JF <Dmytro Volhushyn> Статус: Elderman
<"чистая" ссылка>
> Zachem tebe nuzhna structura. Polzuisia interfacami:

Во-во, об этом-то я и говорю! Пошло-поехало: DACL, ACL, SACL - как это все перевести в удобоваримую форму?
Пример:
SystemAcl - Gets and puts the system ACL (SACL) associated with the security descriptor.
Ну это уже явно property, являющееся ссылкой на структу (элементами которой тоже являются структуры)... Там опять все эти DACL, ACL... Как получить нормальные данные (разложенные по полочкам)???
[Win32] Так, уже неплохо! 10.09.02 21:53  
Автор: + <Mikhail> Статус: Elderman
Отредактировано 10.09.02 22:57  Количество правок: 1
<"чистая" ссылка>
> > Zachem tebe nuzhna structura. Polzuisia interfacami:
>
> Во-во, об этом-то я и говорю! Пошло-поехало: DACL, ACL,
> SACL - как это все перевести в удобоваримую форму?
> Пример:
> SystemAcl - Gets and puts the system ACL (SACL) associated
> with the security descriptor.
> Ну это уже явно property, являющееся ссылкой на структу
> (элементами которой тоже являются структуры)... Там опять
> все эти DACL, ACL... Как получить нормальные данные
> (разложенные по полочкам)???

Kuda uzh bolee normalnye?

P.S. voobheto vse proche esli ty ne hochesh chitat` SD togda:
_variant_t varPath, var;
varPath = "c:\specs\adsixml.doc";
hr = p->GetSecurityDescriptor(varPath, ADS_PATH_FILE, ADS_SD_FORMAT_HEXSTRING, &var );
//var soderzhit security descriptor v HEX formate as BSTR
//sohrania etu string gde hochesh, a kogda nado vostanovit~
hr = p->SetSecurityDescriptor(varPath, ADS_PATH_FILE, var, ADS_SD_FORMAT_HEXSTRING);


---
I vse chto proche to??
[Win32] Так, уже неплохо! 11.09.02 11:05  
Автор: J'JF <Dmytro Volhushyn> Статус: Elderman
<"чистая" ссылка>
> Kuda uzh bolee normalnye?
Ну они нормальные для тебя. А мне не совсем понятно, что тут к чему...

> P.S. voobheto vse proche esli ty ne hochesh chitat` SD
> togda:
>
> _variant_t varPath, var;
> varPath = "c:\specs\adsixml.doc";
> hr = p->GetSecurityDescriptor(varPath, ADS_PATH_FILE,
> ADS_SD_FORMAT_HEXSTRING, &var );
> hr = p->SetSecurityDescriptor(varPath, ADS_PATH_FILE,
> var, ADS_SD_FORMAT_HEXSTRING);
> 
> 

---
> I vse chto proche to??

Да уж, действительно просто... Локальную задачу таким способом решить можно. Спасибо.
А вот если мне какие-то данные поменять надо? права доступа в пакетном режиме для тысячи файлов? Может, тут какой-нибудь cacls поможет? :-)
Ну а нет ли тогда линка на какой-нибудь толковый источник (кроме MSDN) на данную тему? Языки: английский или русский (можно украинский :-)) - неважно.
1  |  2 >>  »  




Rambler's Top100
Рейтинг@Mail.ru


  Copyright © 2001-2024 Dmitry Leonov   Page build time: 0 s   Design: Vadim Derkach