powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Запретить изменение и удаление файла. Linux
25 сообщений из 40, страница 1 из 2
Запретить изменение и удаление файла. Linux
    #34447103
Sandro_K
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Моя программа открывает файл и записывает в него данные.
Можно ли сделать так, чтобы пока файл открыт моей программой пользователь (или другой процесс) не мог ни удалить ни изменить файл.
...
Рейтинг: 0 / 0
Запретить изменение и удаление файла. Linux
    #34447170
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sandro_KМоя программа открывает файл и записывает в него данные.
Можно ли сделать так, чтобы пока файл открыт моей программой пользователь (или другой процесс) не мог ни удалить ни изменить файл.
А ты сам пробовал удалять файл, пока идёт в него запись?
...
Рейтинг: 0 / 0
Запретить изменение и удаление файла. Linux
    #34447188
Sandro_K
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да пробовал. Файл отлично удаляется, и через некоторое время прога вылетает.
...
Рейтинг: 0 / 0
Запретить изменение и удаление файла. Linux
    #34447227
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
думаю, это можно решить при открытии установкой флагов разделяемого доступа, на крайняк – лочь файл.
...
Рейтинг: 0 / 0
Запретить изменение и удаление файла. Linux
    #34447267
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sandro_KДа пробовал. Файл отлично удаляется, и через некоторое время прога вылетает.
Всё дело в функции, которую ты используешь для открытия файла.
...
Рейтинг: 0 / 0
Запретить изменение и удаление файла. Linux
    #34447290
Фотография blinded
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вообще-то странно пока файл открыт он не может быть удален. Реальное удаление файла ядром в таком случае происходит при его закрытии/завершении процесса.
...
Рейтинг: 0 / 0
Запретить изменение и удаление файла. Linux
    #34447347
Sandro_K
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
blindedВообще-то странно пока файл открыт он не может быть удален. Реальное удаление файла ядром в таком случае происходит при его закрытии/завершении процесса.

Ошибка у меня возникала по другой причине, но дела это не меняет.
Если я удаляю файл пока он открыт в программе, то физически кажется он не удаляется, запись в него продолжается, свободное место на диске уменьшается, но обратиться к файлу пользователю уже никак нельзя, (в файловой системе его уже нет). Программа нормально завершает свою работу, нормально закрывает файл, после этого свободное место на диске возвращается к первоначальному (как я понимаю файл удаляется физически).
...
Рейтинг: 0 / 0
Запретить изменение и удаление файла. Linux
    #34447360
Sandro_K
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maXmoдумаю, это можно решить при открытии установкой флагов разделяемого доступа, на крайняк – лочь файл.

Как залочить файл?
...
Рейтинг: 0 / 0
Запретить изменение и удаление файла. Linux
    #34447366
Фотография Aklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вроде как в никсе если создать ссылку (по UIN) то файл не удяляется, а удяляется только ссылка, на которую нажали DELETE. т.е. сам файл остается, но ссылку удалили.

только придеться самостоятельно создавать доп. ссылку, а потом проверять наличие первой. или количество ссылок на файл.

аффтопитезь: объект либо именован, либо не существует
...
Рейтинг: 0 / 0
Запретить изменение и удаление файла. Linux
    #34447470
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 ссылки на файл.

Можно ли как-то жесткую создать ссылку на открытый файл по его дескриптору?
...
Рейтинг: 0 / 0
Запретить изменение и удаление файла. Linux
    #34447492
Фотография Aklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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 ссылки на файл.

Можно ли как-то жесткую создать ссылку на открытый файл по его дескриптору?

создать временную жесткую ссылку и работать с ней.
...
Рейтинг: 0 / 0
Запретить изменение и удаление файла. Linux
    #34447596
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sandro_KМожно ли как-то жесткую создать ссылку на открытый файл по его дескриптору?
Для того чтобы посторонний пользователь или процесс не мог удалять и изменять файл впринципе, существуют соответсвтующие атрибуты. Сделай так, чтобы при создании файла он попадал либо в home-каталог задачи с наследованием атрибутов, либо создавай его в другом каталоге с явной установкой rwx для user, group и oth ers.

Если ваша технология допускает конкурентный доступ к файлу (так бывает в базах данных), вы можете использоват специальные виды блокировок для фрагмента файла (блочный доступ) или еще лучше - для всего файла. Посмотри в справочнике описание функций fcntl() и flock().
...
Рейтинг: 0 / 0
Запретить изменение и удаление файла. Linux
    #34447617
Фотография blinded
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton Sandro_KМожно ли как-то жесткую создать ссылку на открытый файл по его дескриптору?
Если ваша технология допускает конкурентный доступ к файлу (так бывает в базах данных), вы можете использоват специальные виды блокировок для фрагмента файла (блочный доступ) или еще лучше - для всего файла. Посмотри в справочнике описание функций fcntl() и flock().
Все эти замки - дело сугубо добровольное. Т. е. ежели ты проверишь блокировку - все будет ок, а если проманкируешь или просто перенапрвишь вывод от программы в файл ил утилиткой попльзуешься - все на смарку Unix не защищен от дурака
...
Рейтинг: 0 / 0
Запретить изменение и удаление файла. Linux
    #34447638
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хы, пишут такое:
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
...
Рейтинг: 0 / 0
Запретить изменение и удаление файла. Linux
    #34447642
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дураки всегда и везде есть. Главное, нам от этого не стать параноиками.
...
Рейтинг: 0 / 0
Запретить изменение и удаление файла. Linux
    #34447667
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
blindedUnix не защищен от дуракаа называют защищённой. А мне говорили, на линухе можно сделать локи как на винде.
...
Рейтинг: 0 / 0
Запретить изменение и удаление файла. Linux
    #34447678
Фотография blinded
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мы не знаем от чего автор пытается защитится. Толи от себя (другой своей программы) толи от внешнего воздействия. Если от первого задачка решаема, если от 2-го - нет.
...
Рейтинг: 0 / 0
Запретить изменение и удаление файла. Linux
    #34447684
Фотография blinded
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maXmo blindedUnix не защищен от дуракаа называют защищённой. А мне говорили, на линухе можно сделать локи как на винде.
На сараях тоже пишут, а там дрова
...
Рейтинг: 0 / 0
Запретить изменение и удаление файла. Linux
    #34447690
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Запретить изменение и удаление файла. Linux
    #34447691
--null--
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maXmo blindedUnix не защищен от дуракаа называют защищённой. А мне говорили, на линухе можно сделать локи как на винде.

если не ошибаюсь - для этого надо использовать мандаторные блокировки
файловая система должна быть смонтирована как -o mand
...
Рейтинг: 0 / 0
Запретить изменение и удаление файла. Linux
    #34447714
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну собсна гугол рулит мощным рулем
http://slackware.osuosl.org/slackware-3.3/docs/linux-2.0.30/mandatory.txt
...
Рейтинг: 0 / 0
Запретить изменение и удаление файла. Linux
    #34447729
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
тот текст выглядит жутко %)

--null--если не ошибаюсь - для этого надо использовать мандаторные блокировки
файловая система должна быть смонтирована как -o mandи всякий узер имеет право маунтить линуховую фс саму в себя?
...
Рейтинг: 0 / 0
Запретить изменение и удаление файла. Linux
    #34447734
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
--null-- maXmo blindedUnix не защищен от дуракаа называют защищённой. А мне говорили, на линухе можно сделать локи как на винде.

если не ошибаюсь - для этого надо использовать мандаторные блокировки
файловая система должна быть смонтирована как -o mand

Мы такими темпами скоро дойдём до требования поднять виртуальные машины и кластерные ФС. Задачка ведь тривиальная! Возьмите любой софт (это к автору топика), который пишет свои логи и посмотрите, как он реализован. Играть-же в кошки-мышки с дураком на правах рута - изначально неверная постановка. Её даже не стоит обсуждать.
...
Рейтинг: 0 / 0
Запретить изменение и удаление файла. Linux
    #34447736
--null--
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
почему саму в себя? Просто такое допускается на файловой системе, смонтированной с этой опцией
...
Рейтинг: 0 / 0
Запретить изменение и удаление файла. Linux
    #34447756
Фотография blinded
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maXmoну собсна гугол рулит мощным рулем
http://slackware.osuosl.org/slackware-3.3/docs/linux-2.0.30/mandatory.txt
Класс только это не наш случай. Вызова unlink в списке нет
...
Рейтинг: 0 / 0
25 сообщений из 40, страница 1 из 2
Форумы / C++ [игнор отключен] [закрыт для гостей] / Запретить изменение и удаление файла. Linux
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]