Определение адреса файла на диске
От: Аноним  
Дата: 23.08.06 18:06
Оценка:
Задача такая: лежит на расшаренном диске маленький файл. Разные люди с правами администратора могут его читать и переименовывать. Мне (без прав админа) периодически нужно убеждаться, что файл не подменили: т.е. вместо данного не подложили другой с измененным содержимым. Как это решить? У меня возникла мысль определить адрес файла на диске, и его контролировать. Если кто-то вместо моего файла переподставит другой с таким же именем, то его начальный адрес, по идее, будет другим. Если я прав, то как в C определить этот адрес файла?
Re: Определение адреса файла на диске
От: Cyberax Марс  
Дата: 23.08.06 18:11
Оценка:
Аноним wrote:
> Задача такая: лежит на расшаренном диске маленький файл. Разные люди с
> правами администратора могут его читать и переименовывать. Мне (без прав
> админа) периодически нужно убеждаться, что файл не подменили: т.е.
> вместо данного не подложили другой с измененным содержимым. Как это
> решить?
Получить права на чтение этого файла и смотреть. Если OS == Unix, то
можно настроить sudo на выполнение команды "cat /full/file/name".

> У меня возникла мысль определить адрес файла на диске, и его

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

> Если кто-то вместо моего файла переподставит другой с

> таким же именем, то его начальный адрес, по идее, будет другим. Если я
> прав, то как в C определить этот адрес файла?
В С — никак. Язык С не занимается файлами и физическими секторами.
Posted via RSDN NNTP Server 2.0
Sapienti sat!
Re: Определение адреса файла на диске
От: a-lex Россия  
Дата: 23.08.06 18:35
Оценка:
Лучше контролируйте дату модификации файла.

Если же нужна более высокая надежность проверки, периодически считайте и сверяйте с эталонным хэш (например, MD5) такой штуки:

<размер файла> || <содержимое файла>

(где "||" обозначает конкатенацию).
Re: Определение адреса файла на диске
От: Аноним  
Дата: 24.08.06 08:06
Оценка:
Скопируй его себе и не мучайся
Ну, можешь периодически сверять свою копию с тем, что там лежит.
Re[2]: Определение адреса файла на диске
От: zaufi Земля  
Дата: 24.08.06 09:44
Оценка:
Здравствуйте, Cyberax, Вы писали:

C>Аноним wrote:

>> Задача такая: лежит на расшаренном диске маленький файл. Разные люди с
>> правами администратора могут его читать и переименовывать. Мне (без прав
>> админа) периодически нужно убеждаться, что файл не подменили: т.е.
>> вместо данного не подложили другой с измененным содержимым. Как это
>> решить?
C>Получить права на чтение этого файла и смотреть. Если OS == Unix, то
C>можно настроить sudo на выполнение команды "cat /full/file/name".

а лучше подписаться на eventы от FAM демона -- как только с твоим файлом чонить произойдет ты сразу об этом узнаешь

>> У меня возникла мысль определить адрес файла на диске, и его

>> контролировать.
C>Неправильная мысль. Во-первых, файл может лежать напрямую в таблице
C>файловой системы и периодически менять свое место. Во-вторых, файл может
C>быть сжат/зашифрован/... В-третьих, просто никто не даст делать прямой
C>доступ к диску без достаточных прав.

+1
неработоспособная вообще мысль про физические сектора...


>> Если кто-то вместо моего файла переподставит другой с

>> таким же именем, то его начальный адрес, по идее, будет другим. Если я
>> прав, то как в C определить этот адрес файла?

в общем ты не прав

C>В С — никак. Язык С не занимается файлами и физическими секторами.
Re: Определение адреса файла на диске
От: slash_48rus  
Дата: 28.08.06 20:43
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Задача такая: лежит на расшаренном диске маленький файл. Разные люди с правами администратора могут его читать и переименовывать. Мне (без прав админа) периодически нужно убеждаться, что файл не подменили: т.е. вместо данного не подложили другой с измененным содержимым. Как это решить? У меня возникла мысль определить адрес файла на диске, и его контролировать. Если кто-то вместо моего файла переподставит другой с таким же именем, то его начальный адрес, по идее, будет другим. Если я прав, то как в C определить этот адрес файла?


ИМХО, первое че пришло на ум — посчитать CRC. Чиселко измениться при малейшем изменении...
Re: Определение адреса файла на диске
От: v_m  
Дата: 29.08.06 04:10
Оценка:
23 августа 2006 22:06 Аноним wrote:

> Задача такая: лежит на расшаренном диске маленький файл. Разные люди с

> правами администратора могут его читать и переименовывать. Мне (без прав
> админа) периодически нужно убеждаться, что файл не подменили: т.е. вместо
> данного не подложили другой с измененным содержимым. Как это решить? У
> меня возникла мысль определить адрес файла на диске, и его контролировать.
> Если кто-то вместо моего файла переподставит другой с таким же именем, то
> его начальный адрес, по идее, будет другим. Если я прав, то как в C
> определить этот адрес файла?
Настрой acl или что там у тебя, чтобы все могли только читать. Задача чисто
для администрирования.
Posted via RSDN NNTP Server 2.0
Re[2]: Определение адреса файла на диске
От: Left2 Украина  
Дата: 29.08.06 13:36
Оценка:
_>ИМХО, первое че пришло на ум — посчитать CRC. Чиселко измениться при малейшем изменении...

У CRC32 вероятность коллизий слишком высока. Если нужно защититься от предумышленной модификации — то как минимум MD5, хотя и сейчас уже есть алгоритмы которые позволяют за обозримое время подобрать коллизию.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.