Я уже писал о правах на файлы в Linux, MacOS и FreeBSD – самых популярных Unix-подобных операционных системах. Там были описаны основные идеи и команды для работы с правами доступа в Linux и т.д. Однако, помимо прав доступа есть ещё и атрибуты файлов. Эти атрибуты отвечают за разные дополнительные возможности использования файлов. Один из них – атрибут иммутабельности (неизменчивости).
К примеру, пользователь с высокими привилегиями (например, root) может установить аттрибут иммутабельности на файл командой chattr:
chattr +i /path/to/file
– таким образом файл или директории становятся неизменяемыми. Это, к слову, мы использовали для отключения Zeitgeist (система отслеживания активности пользователя на файловой системе) в Ubuntu.
Аналогично установке атрибута, можно его и снять:
chattr -i /path/to/file
Или же рекурсивно для всех директорий и файлов внутри какой-то директории:
chattr +i -R /path/to/directory
При чём, это относится не только к редактированию файлов, но и к удалению (а значит и перемещению). Пример использования:
$ touch 1.txt
$ sudo chattr +i 1.txt
[sudo] password for user:
$ rm 1.txt
rm: cannot remove '1.txt': Operation not permitted
$ echo Hello >> 1.txt
-bash: 1.txt: Operation not permitted
$ chattr -i 1.txt
chattr: Operation not permitted while setting flags on 1.txt
$ sudo chattr -i 1.txt
$ echo Hello >> 1.txt
$ rm 1.txt
Вот так один маленький, но гордый атрибут может предотвратить случайное изменение файлов!