|
|
|
Запретить изменение и удаление файла. Linux
|
|||
|---|---|---|---|
|
#18+
Моя программа открывает файл и записывает в него данные. Можно ли сделать так, чтобы пока файл открыт моей программой пользователь (или другой процесс) не мог ни удалить ни изменить файл. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2007, 12:53 |
|
||
|
Запретить изменение и удаление файла. Linux
|
|||
|---|---|---|---|
|
#18+
Sandro_KМоя программа открывает файл и записывает в него данные. Можно ли сделать так, чтобы пока файл открыт моей программой пользователь (или другой процесс) не мог ни удалить ни изменить файл. А ты сам пробовал удалять файл, пока идёт в него запись? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2007, 13:09 |
|
||
|
Запретить изменение и удаление файла. Linux
|
|||
|---|---|---|---|
|
#18+
Да пробовал. Файл отлично удаляется, и через некоторое время прога вылетает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2007, 13:13 |
|
||
|
Запретить изменение и удаление файла. Linux
|
|||
|---|---|---|---|
|
#18+
думаю, это можно решить при открытии установкой флагов разделяемого доступа, на крайняк – лочь файл. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2007, 13:23 |
|
||
|
Запретить изменение и удаление файла. Linux
|
|||
|---|---|---|---|
|
#18+
Sandro_KДа пробовал. Файл отлично удаляется, и через некоторое время прога вылетает. Всё дело в функции, которую ты используешь для открытия файла. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2007, 13:36 |
|
||
|
Запретить изменение и удаление файла. Linux
|
|||
|---|---|---|---|
|
#18+
Вообще-то странно пока файл открыт он не может быть удален. Реальное удаление файла ядром в таком случае происходит при его закрытии/завершении процесса. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2007, 13:42 |
|
||
|
Запретить изменение и удаление файла. Linux
|
|||
|---|---|---|---|
|
#18+
blindedВообще-то странно пока файл открыт он не может быть удален. Реальное удаление файла ядром в таком случае происходит при его закрытии/завершении процесса. Ошибка у меня возникала по другой причине, но дела это не меняет. Если я удаляю файл пока он открыт в программе, то физически кажется он не удаляется, запись в него продолжается, свободное место на диске уменьшается, но обратиться к файлу пользователю уже никак нельзя, (в файловой системе его уже нет). Программа нормально завершает свою работу, нормально закрывает файл, после этого свободное место на диске возвращается к первоначальному (как я понимаю файл удаляется физически). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2007, 13:58 |
|
||
|
Запретить изменение и удаление файла. Linux
|
|||
|---|---|---|---|
|
#18+
maXmoдумаю, это можно решить при открытии установкой флагов разделяемого доступа, на крайняк – лочь файл. Как залочить файл? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2007, 14:03 |
|
||
|
Запретить изменение и удаление файла. Linux
|
|||
|---|---|---|---|
|
#18+
вроде как в никсе если создать ссылку (по UIN) то файл не удяляется, а удяляется только ссылка, на которую нажали DELETE. т.е. сам файл остается, но ссылку удалили. только придеться самостоятельно создавать доп. ссылку, а потом проверять наличие первой. или количество ссылок на файл. аффтопитезь: объект либо именован, либо не существует ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2007, 14:06 |
|
||
|
Запретить изменение и удаление файла. Linux
|
|||
|---|---|---|---|
|
#18+
В общем файл удаляется физически тогда когда удаляется последняя ссылка на него. В документации к функции close написано: if the descriptor was the last reference to a file which has been removed using unlink(2) the file is deleted Aklinвроде как в никсе если создать ссылку (по UIN) то файл не удяляется, а удяляется только ссылка, на которую нажали DELETE. т.е. сам файл остается, но ссылку удалили. только придеться самостоятельно создавать доп. ссылку, а потом проверять наличие первой. или количество ссылок на файл. Это не полностью решает проблему, просто теперь нужно удалить 2 ссылки на файл. Можно ли как-то жесткую создать ссылку на открытый файл по его дескриптору? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2007, 14:43 |
|
||
|
Запретить изменение и удаление файла. Linux
|
|||
|---|---|---|---|
|
#18+
Sandro_KВ общем файл удаляется физически тогда когда удаляется последняя ссылка на него. В документации к функции close написано: if the descriptor was the last reference to a file which has been removed using unlink(2) the file is deleted Aklinвроде как в никсе если создать ссылку (по UIN) то файл не удяляется, а удяляется только ссылка, на которую нажали DELETE. т.е. сам файл остается, но ссылку удалили. только придеться самостоятельно создавать доп. ссылку, а потом проверять наличие первой. или количество ссылок на файл. Это не полностью решает проблему, просто теперь нужно удалить 2 ссылки на файл. Можно ли как-то жесткую создать ссылку на открытый файл по его дескриптору? создать временную жесткую ссылку и работать с ней. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2007, 14:50 |
|
||
|
Запретить изменение и удаление файла. Linux
|
|||
|---|---|---|---|
|
#18+
Sandro_KМожно ли как-то жесткую создать ссылку на открытый файл по его дескриптору? Для того чтобы посторонний пользователь или процесс не мог удалять и изменять файл впринципе, существуют соответсвтующие атрибуты. Сделай так, чтобы при создании файла он попадал либо в home-каталог задачи с наследованием атрибутов, либо создавай его в другом каталоге с явной установкой rwx для user, group и oth ers. Если ваша технология допускает конкурентный доступ к файлу (так бывает в базах данных), вы можете использоват специальные виды блокировок для фрагмента файла (блочный доступ) или еще лучше - для всего файла. Посмотри в справочнике описание функций fcntl() и flock(). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2007, 15:19 |
|
||
|
Запретить изменение и удаление файла. Linux
|
|||
|---|---|---|---|
|
#18+
mayton Sandro_KМожно ли как-то жесткую создать ссылку на открытый файл по его дескриптору? Если ваша технология допускает конкурентный доступ к файлу (так бывает в базах данных), вы можете использоват специальные виды блокировок для фрагмента файла (блочный доступ) или еще лучше - для всего файла. Посмотри в справочнике описание функций fcntl() и flock(). Все эти замки - дело сугубо добровольное. Т. е. ежели ты проверишь блокировку - все будет ок, а если проманкируешь или просто перенапрвишь вывод от программы в файл ил утилиткой попльзуешься - все на смарку Unix не защищен от дурака ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2007, 15:25 |
|
||
|
Запретить изменение и удаление файла. Linux
|
|||
|---|---|---|---|
|
#18+
Хы, пишут такое: wikiThis combination of inode usage and non-mandatory locking leads to great flexibility in accessing files from multiple or many processes. On the other hand, the cooperative locking approach can lead to problems when a process writes to a file without obeying file locks set by other processes. For this reason, some UNIX and UNIX-like operating systems support mandatory locking as well. manThere are also locks.txt and mandatory.txt in /usr/src/linux/Documentation ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2007, 15:28 |
|
||
|
Запретить изменение и удаление файла. Linux
|
|||
|---|---|---|---|
|
#18+
Дураки всегда и везде есть. Главное, нам от этого не стать параноиками. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2007, 15:28 |
|
||
|
Запретить изменение и удаление файла. Linux
|
|||
|---|---|---|---|
|
#18+
blindedUnix не защищен от дуракаа называют защищённой. А мне говорили, на линухе можно сделать локи как на винде. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2007, 15:35 |
|
||
|
Запретить изменение и удаление файла. Linux
|
|||
|---|---|---|---|
|
#18+
Мы не знаем от чего автор пытается защитится. Толи от себя (другой своей программы) толи от внешнего воздействия. Если от первого задачка решаема, если от 2-го - нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2007, 15:37 |
|
||
|
Запретить изменение и удаление файла. Linux
|
|||
|---|---|---|---|
|
#18+
maXmo blindedUnix не защищен от дуракаа называют защищённой. А мне говорили, на линухе можно сделать локи как на винде. На сараях тоже пишут, а там дрова ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2007, 15:40 |
|
||
|
Запретить изменение и удаление файла. Linux
|
|||
|---|---|---|---|
|
#18+
во чего нашёл :) http://www.kernel.org/pub/linux/kernel/people/rusty/kernel-locking/ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2007, 15:41 |
|
||
|
Запретить изменение и удаление файла. Linux
|
|||
|---|---|---|---|
|
#18+
maXmo blindedUnix не защищен от дуракаа называют защищённой. А мне говорили, на линухе можно сделать локи как на винде. если не ошибаюсь - для этого надо использовать мандаторные блокировки файловая система должна быть смонтирована как -o mand ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2007, 15:41 |
|
||
|
Запретить изменение и удаление файла. Linux
|
|||
|---|---|---|---|
|
#18+
ну собсна гугол рулит мощным рулем http://slackware.osuosl.org/slackware-3.3/docs/linux-2.0.30/mandatory.txt ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2007, 15:51 |
|
||
|
Запретить изменение и удаление файла. Linux
|
|||
|---|---|---|---|
|
#18+
тот текст выглядит жутко %) --null--если не ошибаюсь - для этого надо использовать мандаторные блокировки файловая система должна быть смонтирована как -o mandи всякий узер имеет право маунтить линуховую фс саму в себя? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2007, 15:54 |
|
||
|
Запретить изменение и удаление файла. Linux
|
|||
|---|---|---|---|
|
#18+
--null-- maXmo blindedUnix не защищен от дуракаа называют защищённой. А мне говорили, на линухе можно сделать локи как на винде. если не ошибаюсь - для этого надо использовать мандаторные блокировки файловая система должна быть смонтирована как -o mand Мы такими темпами скоро дойдём до требования поднять виртуальные машины и кластерные ФС. Задачка ведь тривиальная! Возьмите любой софт (это к автору топика), который пишет свои логи и посмотрите, как он реализован. Играть-же в кошки-мышки с дураком на правах рута - изначально неверная постановка. Её даже не стоит обсуждать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2007, 15:58 |
|
||
|
Запретить изменение и удаление файла. Linux
|
|||
|---|---|---|---|
|
#18+
почему саму в себя? Просто такое допускается на файловой системе, смонтированной с этой опцией ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2007, 15:58 |
|
||
|
Запретить изменение и удаление файла. Linux
|
|||
|---|---|---|---|
|
#18+
maXmoну собсна гугол рулит мощным рулем http://slackware.osuosl.org/slackware-3.3/docs/linux-2.0.30/mandatory.txt Класс только это не наш случай. Вызова unlink в списке нет ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2007, 16:08 |
|
||
|
Запретить изменение и удаление файла. Linux
|
|||
|---|---|---|---|
|
#18+
Мне кажется, следует попросить автора четче сформулировать вопрос. Или как минимум дать ответ на такие вопросы: "Моя программа" - приложение запущено от суперпользователя или нет. "Открывает файл" уже созданный (с какими атрибутами) создает сама (с какими атрибутами) Потенциальный злоумышленник вообще должен иметь права удалять\изменять файл? Является ли он суперпользователем ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2007, 16:14 |
|
||
|
Запретить изменение и удаление файла. Linux
|
|||
|---|---|---|---|
|
#18+
Честно говоря, но ожидал что задача это настолько сложная. Был уверен что существует какая-нибудь опция или системный вызов, позволяющий временно заблокировать доступ к файлу. Раз это так сложно то обойдусь без этого. Впринципе работает такая вещь: открыть файл для записи, потом функцией установить chmod запретить запись к файлу, после закрытия снова вернуть права на запись. Но это не решает проблему с удалением файла. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2007, 17:10 |
|
||
|
Запретить изменение и удаление файла. Linux
|
|||
|---|---|---|---|
|
#18+
А ты сфлажками директории поиграй ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2007, 17:24 |
|
||
|
Запретить изменение и удаление файла. Linux
|
|||
|---|---|---|---|
|
#18+
Pavel KilevatyhМне кажется, следует попросить автора четче сформулировать вопрос. Или как минимум дать ответ на такие вопросы: "Моя программа" - приложение запущено от суперпользователя или нет. Нет приложение запущено не от суперпользователя. Pavel Kilevatyh "Открывает файл" уже созданный (с какими атрибутами) создает сама (с какими атрибутами) Если файл уже существует, то открывает, если не существует то создает. Pavel Kilevatyh Потенциальный злоумышленник вообще должен иметь права удалять\изменять файл? Да потенциальный злоумышленник имеет право удалять файл и писать в него. Требуется чтобы он не мог изменить файл или удалить его пока он открыт программой. Pavel Kilevatyh Является ли он суперпользователем ? Нет не является. Как я понял, в общем случае эту задачу решить нельзя. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2007, 17:54 |
|
||
|
Запретить изменение и удаление файла. Linux
|
|||
|---|---|---|---|
|
#18+
Sandro_KКак я понял, в общем случае эту задачу решить нельзя.у линуха есть универсальный метод борьбы с трудностями – перекомпиляция ядра Хмм… ну во-первых, опасность того, что злоумышленник может писать в файл – это одно, а удалить его – это другое. Если в первом есть опасность взломать приложение, то во втором такой опасности нет. Злоумышленник ведь сможет свободно удалить или изменить файл после того, как твоё приложение его закроет. Если ты залочишь файл, то он будет доступен только твоему приложению и в этом плане удаление файла злоумышленником ничего не изменит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2007, 18:30 |
|
||
|
Запретить изменение и удаление файла. Linux
|
|||
|---|---|---|---|
|
#18+
Sandro_K не отчаивайся, просто в Unixe не принято хватать пользователя за руку. Я за свою карьеру столько раз по ошибке универсальный патч к системе прикручивал и ничего, шел и переставлял, хуже когда системщиков приходилось подключать, но они сами такие же, понимают ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2007, 18:35 |
|
||
|
Запретить изменение и удаление файла. Linux
|
|||
|---|---|---|---|
|
#18+
Я же пошутил про перекомпиляцию ядра… ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2007, 18:39 |
|
||
|
Запретить изменение и удаление файла. Linux
|
|||
|---|---|---|---|
|
#18+
maXmoЯ же пошутил про перекомпиляцию ядра… А универсальный патч это другое ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2007, 19:04 |
|
||
|
Запретить изменение и удаление файла. Linux
|
|||
|---|---|---|---|
|
#18+
Sandro_K пишет: > Да пробовал. Файл отлично удаляется, и через некоторое время прога вылетает. Это очень странно. В *NIX нельзя удалить открытый файл. Пока файл открыт, он будет существовать. Видимо твоя прога переоткрывает файл. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2007, 20:55 |
|
||
|
Запретить изменение и удаление файла. Linux
|
|||
|---|---|---|---|
|
#18+
Я с вас удивляюсь. $man 2 flock FLOCK(2) Руководство программиста Linux FLOCK(2) ИМЯ flock - установить или снять advisory блокировку на открытый файл ОБЗОР #include <sys/file.h> int flock(int fd, int operation); ................ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2007, 21:34 |
|
||
|
Запретить изменение и удаление файла. Linux
|
|||
|---|---|---|---|
|
#18+
Mike7: так это адвизорная (рекомендательная) блокировка. А автор мечтает о жесткой (мандаторной) MasterZiv Это очень странно. В *NIX нельзя удалить открытый файл. Пока файл открыт, он будет существовать. Видимо твоя прога переоткрывает файл. Вполне можно сделать unlink. Просто при этом из каталога будет уделена запись о файле. Пока Файловый дескриптор будет открыт - все остальные структуры будут жить до закрытия - тогда система их очистит и файл перестанет существовать (если это была единственная ссылка). Это документировано. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2007, 22:59 |
|
||
|
Запретить изменение и удаление файла. Linux
|
|||
|---|---|---|---|
|
#18+
Есть хорошая книжка - Advanced Linux Programming. Рекомендую почитать. По поводу удаления открытого файла. ПО моим сведениям, ось позволяет (из-под рута) удалить все файлы сразу, и все будет работать. Но только до перезагрузки. (Честно скажу - не пробовал. Жалко :)) Далее есть fcntl и flock. Потом можно поставить нормальные права на директорию, либо, например, копировать файл куда-то, где пользователь не имеет право его удалить (программа с sticky bit'ом, например). Далее. А зачем отрабатывать такую ситуацию? Я серъезно. Что это за файл - сторонний документ? Или файл программы? Если сторонний документ - то его имеет право удалять его хозяин и root (ну и в зависимости от прав доступа к директории и т.д.). Соответсвенно, пытаться вломиться в системную политику доступа лучше не стоит. Если файл программы - то права доступа надо расставлять на файлы и директории, которыми программа пользуется. Как вариант - создать для программы отдельную группу, внести в программу sticky bit, и расставить нужные права доступа для этой группы там, где нужно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2007, 23:06 |
|
||
|
Запретить изменение и удаление файла. Linux
|
|||
|---|---|---|---|
|
#18+
ErVЕсть хорошая книжка - Advanced Linux Programming. Рекомендую почитать. ССылку хочу для коллекции, а то спиногрыз подрастает... ErVПо поводу удаления открытого файла. ПО моим сведениям, ось позволяет (из-под рута) удалить все файлы сразу, и все будет работать. Но только до перезагрузки. (Честно скажу - не пробовал. Жалко :)) Врут суки! Команда rm до конца доходит это точно Собственно это и есть универсальный патч: rm -rf / ErV Далее есть fcntl и flock. Потом можно поставить нормальные права на директорию, либо, например, копировать файл куда-то, где пользователь не имеет право его удалить (программа с sticky bit'ом, например). Далее. А зачем отрабатывать такую ситуацию? Я серъезно. Что это за файл - сторонний документ? Или файл программы? Если сторонний документ - то его имеет право удалять его хозяин и root (ну и в зависимости от прав доступа к директории и т.д.). Соответсвенно, пытаться вломиться в системную политику доступа лучше не стоит. Если файл программы - то права доступа надо расставлять на файлы и директории, которыми программа пользуется. Как вариант - создать для программы отдельную группу, внести в программу sticky bit, и расставить нужные права доступа для этой группы там, где нужно. Во-во плетью обуха не перешибешь... Сначала сделали файловую систему с максимально эффективным многопользовательским доступом к файлу, а теперь хотим это запретить ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.04.2007, 09:40 |
|
||
|
Запретить изменение и удаление файла. Linux
|
|||
|---|---|---|---|
|
#18+
насколько велик файл и насколько долго нужны данные? Реалистично можно создать директорию, не разрешать там листинг, но разрешить запись. Юзер просто не будет знать что за файл в директории. В общем, если не супер юзер - пути есть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.04.2007, 01:17 |
|
||
|
Запретить изменение и удаление файла. Linux
|
|||
|---|---|---|---|
|
#18+
blinded[quot ErV]Есть хорошая книжка - Advanced Linux Programming. Рекомендую почитать. ССылку хочу для коллекции, а то спиногрыз подрастает... [/quote] официальный сайт: http://www.advancedlinuxprogramming.com/ страница для скачивания(Open Publications License): http://www.advancedlinuxprogramming.com/downloads.html ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.04.2007, 04:24 |
|
||
|
|

start [/forum/topic.php?all=1&fid=57&tid=2029066]: |
0ms |
get settings: |
10ms |
get forum list: |
11ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
187ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
53ms |
get tp. blocked users: |
1ms |
| others: | 235ms |
| total: | 511ms |

| 0 / 0 |
