Debian.pro/

Про Debian


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

Сложнее всего было придумать название к статье %) Спойлер — не получилось.
В общем, думаю, вы сталкивались с ситуацией, когда бэкапы делаются в какой-нибудь /mnt/backup, потом по какой-то причине он не смонтировался/отмонтировался (будь то сетевая ФС или отвалившийся диск), после чего скрипт бэкапа забивает всё место в корне и… ну дальше вы всё и так знаете.
Защититься от такого не просто, а очень просто, но на на практике я редко вижу, чтобы кто-то так делал (а зря).

Достаточно поставить на каталог-маунтпойнт immutable флаг. Если потом вы что-то смонтируете в этот каталог — то immutable флаг остаётся на «нижележащей» файловой системе, писать в смонтированную он не мешает. А как только смонтированная ФС отвалится — система в каталог записать уже ничего не сможет (в том числе и от рута, у нас тут не бсд, где 000 работает).

immutable-флаг ставится так:

root@server:~# chattr +i /mnt/path

Снимается, соответственно, так:

root@server:~# chattr -i /mnt/path

Ну и посмотрим на примере:

root@server:~# mkdir /mnt/backups
root@server:~# chattr +i /mnt/backups
root@server:~# touch /mnt/backups/asfasf
touch: setting times of '/mnt/backups/asfasf': No such file or directory
root@server:~# echo 123123 > /mnt/backups/asfas
-bash: /mnt/backups/asfas: Operation not permitted
root@server:~# mkdir /mnt/backups/asfasf
mkdir: cannot create directory '/mnt/backups/asfasf': Operation not permitted
root@server:~# mount /dev/loop3 /mnt/backups/ #типа диск с бэкапами или сетевая ФС
root@server:~# touch /mnt/backups/new; touch /mnt/backups/{1..3}
root@server:~# ls /mnt/backups/
1 2 3 lost+found new

Само собой, это не единственная задача, в которой пригодится chattr +i (например, я иногда его использую, чтобы ТОЧНО ни одна сцобака не поправила опять resolv.conf), но пример, так сказать, очень жизненный. Ну и да, флаг этот ставится и на файлы, и на каталоги, и на чёрт знает что ещё. Впрочем, на симлинки, вроде бы, не ставится.


Комментарии (4):

  1. vanoc :

    immutable конечно интересно, но не проще ли сделать триггер в заббикс?

  2. > immutable конечно интересно, но не проще ли сделать триггер в заббикс?

    Одно другого не отменяет

  3. dashernln :

    ну вот только с иммутабл я устал пинать коллег, что его не стоит ставить везде где ни попадя.
    особенно весело бывает, когда кто-то делает chattr -Ri и что-то вследствие этого ломается, так как держалось только на костылях.

  4. Ну тут кажется проблема не в immutable как таковом)

Написать комментарий