powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Запретить изменение и удаление файла. Linux
40 сообщений из 40, показаны все 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
Запретить изменение и удаление файла. Linux
    #34447776
Pavel Kilevatyh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мне кажется, следует попросить автора четче сформулировать вопрос.
Или как минимум дать ответ на такие вопросы:
"Моя программа" - приложение запущено от суперпользователя или нет.
"Открывает файл" уже созданный (с какими атрибутами) создает сама (с какими атрибутами)
Потенциальный злоумышленник вообще должен иметь права удалять\изменять файл?
Является ли он суперпользователем ?
...
Рейтинг: 0 / 0
Запретить изменение и удаление файла. Linux
    #34447987
Sandro_K
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Честно говоря, но ожидал что задача это настолько сложная. Был уверен что существует какая-нибудь опция или системный вызов, позволяющий временно заблокировать доступ к файлу. Раз это так сложно то обойдусь без этого.

Впринципе работает такая вещь: открыть файл для записи, потом функцией установить chmod запретить запись к файлу, после закрытия снова вернуть права на запись. Но это не решает проблему с удалением файла.
...
Рейтинг: 0 / 0
Запретить изменение и удаление файла. Linux
    #34448038
Фотография blinded
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А ты сфлажками директории поиграй
...
Рейтинг: 0 / 0
Запретить изменение и удаление файла. Linux
    #34448151
Sandro_K
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pavel KilevatyhМне кажется, следует попросить автора четче сформулировать вопрос.
Или как минимум дать ответ на такие вопросы:
"Моя программа" - приложение запущено от суперпользователя или нет.
Нет приложение запущено не от суперпользователя.

Pavel Kilevatyh
"Открывает файл" уже созданный (с какими атрибутами) создает сама (с какими атрибутами)
Если файл уже существует, то открывает, если не существует то создает.

Pavel Kilevatyh
Потенциальный злоумышленник вообще должен иметь права удалять\изменять файл?
Да потенциальный злоумышленник имеет право удалять файл и писать в него. Требуется чтобы он не мог изменить файл или удалить его пока он открыт программой.

Pavel Kilevatyh
Является ли он суперпользователем ?
Нет не является.

Как я понял, в общем случае эту задачу решить нельзя.
...
Рейтинг: 0 / 0
Запретить изменение и удаление файла. Linux
    #34448277
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sandro_KКак я понял, в общем случае эту задачу решить нельзя.у линуха есть универсальный метод борьбы с трудностями – перекомпиляция ядра

Хмм… ну во-первых, опасность того, что злоумышленник может писать в файл – это одно, а удалить его – это другое. Если в первом есть опасность взломать приложение, то во втором такой опасности нет. Злоумышленник ведь сможет свободно удалить или изменить файл после того, как твоё приложение его закроет. Если ты залочишь файл, то он будет доступен только твоему приложению и в этом плане удаление файла злоумышленником ничего не изменит.
...
Рейтинг: 0 / 0
Запретить изменение и удаление файла. Linux
    #34448291
Фотография blinded
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sandro_K не отчаивайся, просто в Unixe не принято хватать пользователя за руку. Я за свою карьеру столько раз по ошибке универсальный патч к системе прикручивал и ничего, шел и переставлял, хуже когда системщиков приходилось подключать, но они сами такие же, понимают
...
Рейтинг: 0 / 0
Запретить изменение и удаление файла. Linux
    #34448305
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я же пошутил про перекомпиляцию ядра…
...
Рейтинг: 0 / 0
Запретить изменение и удаление файла. Linux
    #34448376
Фотография blinded
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maXmoЯ же пошутил про перекомпиляцию ядра…
А универсальный патч это другое
...
Рейтинг: 0 / 0
Запретить изменение и удаление файла. Linux
    #34448528
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sandro_K пишет:
> Да пробовал. Файл отлично удаляется, и через некоторое время прога вылетает.

Это очень странно. В *NIX нельзя удалить открытый файл. Пока файл
открыт, он будет существовать. Видимо твоя прога переоткрывает файл.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Запретить изменение и удаление файла. Linux
    #34448574
Mike7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я с вас удивляюсь.

$man 2 flock


FLOCK(2) Руководство программиста Linux FLOCK(2)

ИМЯ
flock - установить или снять advisory блокировку на открытый файл

ОБЗОР
#include <sys/file.h>

int flock(int fd, int operation);
................
...
Рейтинг: 0 / 0
Запретить изменение и удаление файла. Linux
    #34448636
--null--
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mike7:
так это адвизорная (рекомендательная) блокировка. А автор мечтает о жесткой (мандаторной)

MasterZiv
Это очень странно. В *NIX нельзя удалить открытый файл. Пока файл
открыт, он будет существовать. Видимо твоя прога переоткрывает файл.


Вполне можно сделать unlink. Просто при этом из каталога будет уделена запись о файле. Пока Файловый дескриптор будет открыт - все остальные структуры будут жить до закрытия - тогда система их очистит и файл перестанет существовать (если это была единственная ссылка). Это документировано.
...
Рейтинг: 0 / 0
Запретить изменение и удаление файла. Linux
    #34448639
ErV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть хорошая книжка - Advanced Linux Programming. Рекомендую почитать.

По поводу удаления открытого файла.
ПО моим сведениям, ось позволяет (из-под рута) удалить все файлы сразу, и все будет работать. Но только до перезагрузки.
(Честно скажу - не пробовал. Жалко :))

Далее есть fcntl и flock.
Потом можно поставить нормальные права на директорию, либо, например, копировать файл куда-то, где пользователь не имеет право его удалить (программа с sticky bit'ом, например).

Далее. А зачем отрабатывать такую ситуацию? Я серъезно. Что это за файл - сторонний документ? Или файл программы? Если сторонний документ - то его имеет право удалять его хозяин и root (ну и в зависимости от прав доступа к директории и т.д.). Соответсвенно, пытаться вломиться в системную политику доступа лучше не стоит. Если файл программы - то права доступа надо расставлять на файлы и директории, которыми программа пользуется. Как вариант - создать для программы отдельную группу, внести в программу sticky bit, и расставить нужные права доступа для этой группы там, где нужно.
...
Рейтинг: 0 / 0
Запретить изменение и удаление файла. Linux
    #34448979
Фотография blinded
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ErVЕсть хорошая книжка - Advanced Linux Programming. Рекомендую почитать.
ССылку хочу для коллекции, а то спиногрыз подрастает...

ErVПо поводу удаления открытого файла.
ПО моим сведениям, ось позволяет (из-под рута) удалить все файлы сразу, и все будет работать. Но только до перезагрузки.
(Честно скажу - не пробовал. Жалко :))
Врут суки! Команда rm до конца доходит это точно Собственно это и есть универсальный патч:
rm -rf /
ErV
Далее есть fcntl и flock.
Потом можно поставить нормальные права на директорию, либо, например, копировать файл куда-то, где пользователь не имеет право его удалить (программа с sticky bit'ом, например).

Далее. А зачем отрабатывать такую ситуацию? Я серъезно. Что это за файл - сторонний документ? Или файл программы? Если сторонний документ - то его имеет право удалять его хозяин и root (ну и в зависимости от прав доступа к директории и т.д.). Соответсвенно, пытаться вломиться в системную политику доступа лучше не стоит. Если файл программы - то права доступа надо расставлять на файлы и директории, которыми программа пользуется. Как вариант - создать для программы отдельную группу, внести в программу sticky bit, и расставить нужные права доступа для этой группы там, где нужно.
Во-во плетью обуха не перешибешь... Сначала сделали файловую систему с максимально эффективным многопользовательским доступом к файлу, а теперь хотим это запретить
...
Рейтинг: 0 / 0
Запретить изменение и удаление файла. Linux
    #34454566
A. Fig Lee
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
насколько велик файл и насколько долго нужны данные?
Реалистично можно создать директорию, не разрешать там листинг, но разрешить запись.
Юзер просто не будет знать что за файл в директории.
В общем, если не супер юзер - пути есть.
...
Рейтинг: 0 / 0
Запретить изменение и удаление файла. Linux
    #34454628
ErV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
blinded[quot ErV]Есть хорошая книжка - Advanced Linux Programming. Рекомендую почитать.
ССылку хочу для коллекции, а то спиногрыз подрастает...
[/quote]
официальный сайт: http://www.advancedlinuxprogramming.com/
страница для скачивания(Open Publications License): http://www.advancedlinuxprogramming.com/downloads.html
...
Рейтинг: 0 / 0
40 сообщений из 40, показаны все 2 страниц
Форумы / C++ [игнор отключен] [закрыт для гостей] / Запретить изменение и удаление файла. Linux
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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