Команда chattr в Linux
Команда chattr расширяет возможности другой всем известной команды chmod. Если chmod устанавливает права на чтение, запись и исполнение, то chattr устанавливает дополнительные интересные и полезные свойства: запрет на модификацию файла (даже суперпользователем), включает автоматическую компрессию для хранения произвольно выбранного файла, позволяет безопасно удалять файлы без возможности восстановления и т.д. Польза от chattr так велика, что можно смело утверждать: пользователь Linux, который не знает и не пользуется chattr — не линуксоид.
Как пользоваться командой chattr (смена атрибутов файла)
Как можно догадаться, chattr — это сокращение от change attributes (изменить атрибуты). Атрибуты бывают следующими:
a (append). Файл, помеченный этим атрибутом, можно дописывать, но нельзя изменять или удалять. Идеально подходит для защиты критически важных log-файлов.
c (compress). Файл автоматически сжимается при записи на диск. Полезно для архивных файлов.
i (immutable). Файл с этим атрибутом невозможно модифицировать или удалить. Даже суперпользователю. Полезен для защиты от случайного удаления критически важных файлов.
s (security). Файл с этим атрибутом удаляется безопасным образом. То есть, все содержимое файла сначала будет заменено на нули и лишь потом файл удаляется. Данная процедура делает невозможным (сильно усложняет) восстановление файла.
Установить или снять атрибут легко: достаточно указать требуемый атрибут и имя файла. Знак плюса перед атрибутом устанавливает, а знак минуса снимает атрибут. Пример:
Устанавливает атрибут i (immutable) на файл /etc/passwd. Другими словами, запрещает изменение и удаление файла /etc/passwd.
chattr -a /var/log/nginx/access.log
Снимает атрибут a (append) с файла /var/log/nginx/access.log.
Просмотреть список установленных атрибутов можно командой lsattr (list attributes).
Никогда не пользовался, как то нужды не было. Но команда заслуживает безусловного внимания.
Но вот интересно: те же лог файлы компресяца дабы не разрастаться, это вероятно может спровоцировать нехорошие последствия (не тестил).
Было бы хорошо чтоб кто то отписался — как с атрибутам "chattr -a" в /var/log/ ведут себя лог файлы основные, так как бекапятся старые в .gz, .log.old и т.п. дабы не разрастаться?
..лог файл который нельзя изменить хорошо, только пока он не перерос за 10-20Мб:)
Видимо
chattr +i /ваш/файл
даёт ещё одно решение задачи
Как в Debian и Ubuntu помешать заменять файл при обновлении пакета
Правда оно подходит только для файлов, которые не должны изменяться не только при обновлениях, но и "в мирной жизни" :-)
Использовать, конечно, можно, но это грубый хак. Могут зависимости слететь или конфиг будет неправильно работать.
Ну вот, я не линуксоид :-( Ни разу не использовал эту программу. Хотя, естественно, о её существовании знаю.
Я так понял chattr +s как альтернатива shred -uz?
Не могу сказать, что активно пользуюсь.