Команда chattr и lsattr в Linux
Общие сведения
Команда chattr поможет защитить файлы от перезаписи, перемещения, удаления, независимо от стандартных атрибутов rwx. Команды chown и chmod могут ограничить эти действия только для обычных пользователей, но не для пользователя root
chattr
Для chattr опции и атрибуты:
-R - рекрусивная обработка каталогов
+ - включить атрибуты;
- - отключить атрибуты;
= - оставить значение атрибута как было у файла
a - файл может быть открыт только в режиме добавления;
A - не обновлять время перезаписи;
c - автоматически сжимать при записи;
C - отключить копирование при записи;
D - работает только для папки, когда установлен, все изменения синхронно записываются на диск сразу же;
e - использовать extent'ы блоков для хранения файла;
i - сделать неизменяемым;
j - все данные перед записью в файл будут записаны в журнал;
s - безопасное удаление с последующей перезаписью нулями;
S - синхронное обновление, изменения файлов с этим атрибутом будут сразу же записаны на диск;
t - файлы с этим атрибутом не будут хранится в отдельных блоках;
u - содержимое файлов с этим атрибутом не будет удалено при удалении самого файла и потом может быть восстановлено.
Источник: https://losst.pro/neizmenyaemye-fajly-v-linux
Сделать файл неизменяемым:
~$ sudo chattr +i doc1
[sudo] пароль для toly:
~$ lsattr doc1
----i---------e----- doc1
lsattr doc.txt
--------------e----- doc1
~$ ls -la doc1
-rw-rw-r-- 1 toly toly 262477 окт 6 19:31 doc1
~$ echo 'изменение' > doc1
-bash: doc1: Операция не позволена
~$ sudo echo 'изменение' > doc1
-bash: doc1: Операция не позволена
Ограничение снимается с помощью -(минус) i (ограничение)
sudo chattr -i doc1
:~$ sudo echo 'изменение' > doc1
Еще один полезный пример, где опция -a позволяет добавлять запись в файл, но не перезаписывать уже существующую информацию:
sudo chattr +a doc1
toly@mega:~$ sudo echo 'изменение' > doc1
-bash: doc1: Операция не позволена
toly@mega:~$ sudo echo 'изменение' >> doc1
toly@mega:~$ cat doc1
изменение
изменение
Злонамерное использование утилиты вирусным кодом (фрагмент):
chattr -i -a /etc/cron.d/root /etc/cron.d/apache /var/spool/cron/root /var/spool/cron/crontabs/root /etc/cron.hourly/oanacroner1 /etc/init.d/down
Источник фрагмента: https://hackware.ru/?p=17007
lsattr
Чтобы посмотреть ограничения команды chattr используется команда lsattr
Синтаксис:
lsattr [ -RVadlpv ] [ files... ]
Значения букв в выводе команды lsattr:
a - только добавление
A - никаких обновлений
c - сжатый
С - без копирования при записи
d - без дампа
D - синхронные обновления каталогов
e - расширенный формат
i - неизменяемый
j - журналирование данных
P - иерархия проектов
s - безопасное удаление
S - синхронные обновления
t - без объединения
T - корневой каталог
u - неудаляемый
E - зашифровано
I - индексированный каталог
N - встроенные данные
lsattr может работать с каталогами рекурсивно с помощью опции -R
Чтобы lsattr читал каталог как файл, можно добавить опцию -d
Источники
Связанные темы
Использование команды tee в Linux
Поиск уязвимостей и следов взлома в Linux
Использование wget и curl в Linux
Использование awk Linux Alpine
Блокировка пользователя в Linux
Проверка на необходимость перезапуска после обновления пакетов
Стандартные потоки и перенаправление ввода/вывода в Linux
Архивирование и сжатие файлов в Linux
Полезные команды и скрипты Linux
Условная конструкция if в Linux
Использование оператора select в языке shell
Внутренние и внешние команды linux
Использование конструкции case в Linux