Задача такая: лежит на расшаренном диске маленький файл. Разные люди с правами администратора могут его читать и переименовывать. Мне (без прав админа) периодически нужно убеждаться, что файл не подменили: т.е. вместо данного не подложили другой с измененным содержимым. Как это решить? У меня возникла мысль определить адрес файла на диске, и его контролировать. Если кто-то вместо моего файла переподставит другой с таким же именем, то его начальный адрес, по идее, будет другим. Если я прав, то как в C определить этот адрес файла?
Аноним wrote: > Задача такая: лежит на расшаренном диске маленький файл. Разные люди с > правами администратора могут его читать и переименовывать. Мне (без прав > админа) периодически нужно убеждаться, что файл не подменили: т.е. > вместо данного не подложили другой с измененным содержимым. Как это > решить?
Получить права на чтение этого файла и смотреть. Если OS == Unix, то
можно настроить sudo на выполнение команды "cat /full/file/name".
> У меня возникла мысль определить адрес файла на диске, и его > контролировать.
Неправильная мысль. Во-первых, файл может лежать напрямую в таблице
файловой системы и периодически менять свое место. Во-вторых, файл может
быть сжат/зашифрован/... В-третьих, просто никто не даст делать прямой
доступ к диску без достаточных прав.
> Если кто-то вместо моего файла переподставит другой с > таким же именем, то его начальный адрес, по идее, будет другим. Если я > прав, то как в C определить этот адрес файла?
В С — никак. Язык С не занимается файлами и физическими секторами.
Здравствуйте, Cyberax, Вы писали:
C>Аноним wrote: >> Задача такая: лежит на расшаренном диске маленький файл. Разные люди с >> правами администратора могут его читать и переименовывать. Мне (без прав >> админа) периодически нужно убеждаться, что файл не подменили: т.е. >> вместо данного не подложили другой с измененным содержимым. Как это >> решить? C>Получить права на чтение этого файла и смотреть. Если OS == Unix, то C>можно настроить sudo на выполнение команды "cat /full/file/name".
а лучше подписаться на eventы от FAM демона -- как только с твоим файлом чонить произойдет ты сразу об этом узнаешь
>> У меня возникла мысль определить адрес файла на диске, и его >> контролировать. C>Неправильная мысль. Во-первых, файл может лежать напрямую в таблице C>файловой системы и периодически менять свое место. Во-вторых, файл может C>быть сжат/зашифрован/... В-третьих, просто никто не даст делать прямой C>доступ к диску без достаточных прав.
+1
неработоспособная вообще мысль про физические сектора...
>> Если кто-то вместо моего файла переподставит другой с >> таким же именем, то его начальный адрес, по идее, будет другим. Если я >> прав, то как в C определить этот адрес файла?
в общем ты не прав
C>В С — никак. Язык С не занимается файлами и физическими секторами.
Здравствуйте, Аноним, Вы писали:
А>Задача такая: лежит на расшаренном диске маленький файл. Разные люди с правами администратора могут его читать и переименовывать. Мне (без прав админа) периодически нужно убеждаться, что файл не подменили: т.е. вместо данного не подложили другой с измененным содержимым. Как это решить? У меня возникла мысль определить адрес файла на диске, и его контролировать. Если кто-то вместо моего файла переподставит другой с таким же именем, то его начальный адрес, по идее, будет другим. Если я прав, то как в C определить этот адрес файла?
ИМХО, первое че пришло на ум — посчитать CRC. Чиселко измениться при малейшем изменении...
23 августа 2006 22:06 Аноним wrote:
> Задача такая: лежит на расшаренном диске маленький файл. Разные люди с > правами администратора могут его читать и переименовывать. Мне (без прав > админа) периодически нужно убеждаться, что файл не подменили: т.е. вместо > данного не подложили другой с измененным содержимым. Как это решить? У > меня возникла мысль определить адрес файла на диске, и его контролировать. > Если кто-то вместо моего файла переподставит другой с таким же именем, то > его начальный адрес, по идее, будет другим. Если я прав, то как в C > определить этот адрес файла?
Настрой acl или что там у тебя, чтобы все могли только читать. Задача чисто
для администрирования.
_>ИМХО, первое че пришло на ум — посчитать CRC. Чиселко измениться при малейшем изменении...
У CRC32 вероятность коллизий слишком высока. Если нужно защититься от предумышленной модификации — то как минимум MD5, хотя и сейчас уже есть алгоритмы которые позволяют за обозримое время подобрать коллизию.