Поиск  Пользователи  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Регистрация
Войти
 
Страницы: 1
RSS
Защита от изменения файла
 
Добрый день всем. Есть такая интересная задача.
Есть файл txt, есть система Windows линейки НТ (допустим начиная с 2000), файловая система НТФС. Задача. Сделать так чтобы все могли просматривать этот файл, а изменять мог любой пользователь системы с любыми правами, но *только* с помощью моей программы (программа изначально устанавливается с правами админа). Внимание, вопрос! Возможно ли это?
Я предполагал такой путь решения, при установке программы устанавливается еще и системный сервис, который реализует простенький АПИ работы с файлом (ну типа создать, удалить, райт, рид),он и создает первоначально файл с правами чтения и владельца СИСТЕМ, а для всех остальных файл доступен только для чтения. Как думаете возможно такое решение? Спрашивал на sysinternals - толком ничего не сказали...
Или может кто предложит альтернативные варианты?
Всем спасибо.
 
ну только сервису совсем не обязательно запускаться от имени системы. создай для этого отдельного пользователя.
Не полагайся на то, что враг не нападет;
полагайся на то, чтобы наши позиции были неуязвимы для нападения.

Сунь Цзы "Искусство войны"
 
Неужели в NTFS нет банальных прав доступа на файл? Верится с трудом. В Linux банально - создаём юзера, делаем его владельцем программы и ставим setuid бит, и файлу соотв. режим доступа. Я уверен, что там примерно так-же.
 
Цитата
Сделать так чтобы все могли просматривать этот файл, а изменять мог любой пользователь системы с любыми правами, но *только* с помощью моей программы (программа изначально устанавливается с правами админа).
Создай отдельную учётную запись для своей программы, например mysoft и запускай её в службах с правами этого пользователя. На в файл в свою очередь установи разрешение на запись только для mysoft. Конечно если пользователь будет с правами админа то он может легко добавить себе прав. Но как я понял данная политика прежде всего направлена на непривилигированных юзеров
 
Цитата
v04bvs пишет:
Неужели в NTFS нет банальных прав доступа на файл? Верится с трудом. В Linux банально - создаём юзера, делаем его владельцем программы и ставим setuid бит, и файлу соотв. режим доступа. Я уверен, что там примерно так-же.
конечно же есть.
проблема только в том, что некоторые не умеют читать вопросы.
Не полагайся на то, что враг не нападет;
полагайся на то, чтобы наши позиции были неуязвимы для нападения.

Сунь Цзы "Искусство войны"
 
"Изюминка" задачи в том чтобы обойтись без добавления специальных пользователей. Есть какие-нибудь идеи насчет этого? Как-то ведь наверное можно блокировать файл. В групповых политиках винды можно настроить права таким образом, что даже все члены группы администраторы не смогут получить доступ к определенным ресурсам, значит потенциально механизмы запрета имеются...только вопрос какие и как их можно использовать...
 
немного тупой вариант:
запустить сервис и им сделать файлу lock, и общаться с сервисом.
Ну и запросы у вас - сказала база данных и повисла.
 
Цитата
SomewhereSomeho пишет:
Задача. Сделать так чтобы все могли просматривать этот файл, а изменять мог любой пользователь системы с любыми правами, но *только* с помощью моей программы (программа изначально устанавливается с правами админа). Внимание, вопрос! Возможно ли это?

да, конечно.
все просто.
запускаешь свою программу, и пусть она открывает этот файл:
Код
HANDLE hFile = CreateFile (filename, GENERIC_READ | GENERIC_WRITE, [B]FILE_SHARE_READ[/B], ...);



=)
Signed, [TSS]
 
2TSS:
что, собственно, я я и писал...
Ну и запросы у вас - сказала база данных и повисла.
 
Цитата
JUmPER пишет:
2TSS:
что, собственно, я я и писал...

Ну, сделать lock это вообще-то FILE_SHARE_NONE =)
Signed, [TSS]
 
Кто мешает пользователю этот сервис остановить?
Или вообще убить его в ProcExp или TaskMan?
В первом случае с файлом ничего не случится, если сервис реагирует на остановку и закрывает файл. А во-втором данные в файле могут быть потеряны, если сервис с ним активно работал...

К тому же, если сделать FILE_SHARE_NONE, то его не только редактировать никто другой не сможет, но и открыть для чтения
 
Цитата
X_Tra пишет:
Кто мешает пользователю этот сервис остановить

недостаток прав.
Signed, [TSS]
 
а кто мешает взять молот и зубило и выбить на винче гимн ссср вместо файла?

права надо для файла/сервиса соответствующие выставить, а админ должен быть админом -- "что хочу - то и ворочу", и запреты для него -- это бред...
Ну и запросы у вас - сказала база данных и повисла.
 
Цитата
SomewhereSomeho пишет:
Сделать так чтобы все могли просматривать этот файл, а изменять мог любой пользователь системы с любыми правами, но *только* с помощью моей программы (программа изначально устанавливается с правами админа). Внимание, вопрос!
Первое, что приходит в голову - драйвер-фильтр файловой системы. Но можно и простым перехватом API обращения к файлу (NtCreateFile).
Это если конечно я правильно понял задачу.
Возникает вопрос: а как отличить обращение к файлу системы от обращения нашей программы. Можно использовать какие-нибудь извращенные аттрибуты...

Сложно...
Можно использовать метод, предложенный TSS:FILE_SHARE_READ. Но чтобы админ не убил наш процесс(службу) то все равно надо использовать API перехват чтобы скрыть процесс (службу) от пользователя.
 
Цитата
JUmPER пишет:
а кто мешает взять молот и зубило и выбить на винче гимн ссср вместо файла?
да никто не мешает! можно вообще взять зубило и воткнуть админу в одно место чтобы руки выпрямились.

прятать процессы, "рисовать" руткиты и прочее... IFS драйвера... может не заморачиватся особо, а поюзать сеть? и пусть админ админит сам свою тачку до опупения... или не парицца и попользовать MSSQL или еще какое хранилище... вариантов масса на самом деле.
Signed, [TSS]
 
хм..
2TSS +1 :)
а кстати, какая цель сией задумки?
 
Цитата
Macr0s пишет:
а кстати, какая цель сией задумки?
сдается мне, что изобретение очередного велосипеда...
Signed, [TSS]
 
Всем спасибо за участие. Буду думать дальше =)
2 TSS:
Нет не велосипед, а важный журнал логов, в случае возможности внесения изменений пропадут реальные деньги и мне настучат по шапке. =)
Про "тхт" файл я немного загнул но смысл остается такой же.
Вообщем всем еще раз спасибо, продолжу размышления...
 
2SomewhereSomeho: я тута еще припомнил. вполне можно сделать еще одну категорию к стандартному EventLog (типа как делает Directory Service и File Replication Service). Делается просто, надежность -- практически 100%. Но руки админа...
Signed, [TSS]
Страницы: 1
Читают тему (гостей: 1)