- Как создать неизменяемый файл в Linux / MacOS / FreeBSD
- 5 команд chattr, чтобы сделать важные файлы НЕИЗМЕНИМЫМИ (неизменяемыми) в Linux
- 1. Как добавить атрибуты к файлам для защиты от удаления
- 2. Как отключить атрибут в файлах
- 3. Как защитить файлы /etc/passwd и /etc/shadow
- 4. Добавить данные без изменения существующих данных в файле
- 5. Как защитить каталоги
Как создать неизменяемый файл в Linux / MacOS / FreeBSD
Само собой, root может всё (если введёт пару команд), однако, это вполне легальный способ запретить изменение файла.
Я уже писал о правах на файлы в Linux, MacOS и FreeBSD – самых популярных Unix-подобных операционных системах. Там были описаны основные идеи и команды для работы с правами доступа в Linux и т.д. Однако, помимо прав доступа есть ещё и атрибуты файлов. Эти атрибуты отвечают за разные дополнительные возможности использования файлов. Один из них – атрибут иммутабельности (неизменчивости). К примеру, пользователь с высокими привилегиями (например, root) может установить аттрибут иммутабельности на файл командой chattr:
– таким образом файл или директории становятся неизменяемыми. Это, к слову, мы использовали для отключения Zeitgeist (система отслеживания активности пользователя на файловой системе) в Ubuntu. Аналогично установке атрибута, можно его и снять:
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
Вот так один маленький, но гордый атрибут может предотвратить случайное изменение файлов!
Заметки об обеспечении безопасности в информационных системах. Настройка брендмауэров (фаерволов) на операционных системах Linux, Windows, MacOS, Unix. Новости об интересных уязвимостях в системах, мониторинге использования ресурсов, алертинге подозрительных действий. Работа …
Заметки о настройке различных IT-штуковин. Настройка, допиливание, полировка. Конфигурируем приложения и тюнингуем сервера. Полезные параметры и ключи запуска программ. Увеличиваем скорость, уменьшаем отклик, ускоряем работу и улучшаем результаты работы. Объясняем …
Полезные заметки по работе с командной строкой: bash и прочие *sh. Однострочники, скрипты, позволяющие решать большие и малые задачи администрирования и настройки Юникс систем. Zsh для современного MacOS, Bash для …
Операционная система Linux (Линукс или Лайнакс) во многом похожая на проприетарную Unix. Линукс распространён на серверах, что означает, что изучая её вы улучшаете свой навык администрирования, DevOps и программирования. Открытая …
Операционная система от компании Canonical на базе операционной системы Debian, предназначенная для начниающих пользователей GNU/Linux. Основные настройки Ubuntu, программ, которые могут на ней запускаться. Знакомство с Линуксом в целом и …
Команды и инструкции терминала (консоли) Linux, MacOS, Windows и прочих операционных систем. Трюки и особенности командных оболочек, скрипты для администрирования Unix. Программирование и скриптование Windows и Linux, тонкая настройка Macos. …
Заметки об Операционной Системе FreeBSD (фри бсд). Один из старейших Unix (Юникс), прародитель многих ОС, а также по мнению многих — самая свободная операционная система. Разработан в рамках общего проекта …
Операционная система для Mac Book, Apple, iPhone, iPad и прочих i-что-то. Построенная на базе Unix, ядро Darwin показало мощь в лице Маков, кастомизмруемость и удобство в Эйр Маках, ценность и …
5 команд chattr, чтобы сделать важные файлы НЕИЗМЕНИМЫМИ (неизменяемыми) в Linux
chattr (Change Attribute) — это утилита командной строки Linux, которая используется для установки/отмены определенных атрибутов файла в системе Linux для защиты от случайного удаления или изменения важных файлов и папок, даже если вы вошли в систему. в качестве пользователя root.
В родных файловых системах Linux, т. е. ext2, ext3, ext4, btrfs и т. д., поддерживаются все флаги, хотя все флаги не будут поддерживаться для всех неродных ФС. Нельзя удалить или изменить файл/папку после того, как атрибуты установлены с помощью команды chattr, даже если у вас есть полные права доступа к ней.
Это очень полезно для установки атрибутов в системных файлах, таких как файлы passwd и shadow, в которых содержится информация о пользователе.
Синтаксис чата
# chattr [operator] [flags] [filename]
Атрибуты и флаги
Ниже приведен список общих атрибутов и связанных с ними флагов, которые можно установить/снять с помощью команды chattr.
- Если доступ к файлу осуществляется с установленным атрибутом A, его запись atime не обновляется.
- Если файл изменен с установленным атрибутом S, изменения синхронно обновляются на диске.
- Файл имеет атрибут a, его можно открыть только в режиме добавления для записи.
- Файл установлен с атрибутом ‘i’, не может быть изменен (неизменяемый). Означает, что нельзя переименовывать, создавать символические ссылки, выполнять, запрещать запись, только суперпользователь может отменить установку атрибута.
- Файл с атрибутом ‘j’ установлен, вся его информация обновляется в журнале ext3 перед обновлением в самом файле.
- Файл установлен с атрибутом t, без слияния хвостов.
- Файл с атрибутом ‘d’ больше не будет кандидатом на резервное копирование при запуске процесса создания дампа.
- Когда файл с атрибутом «u» удаляется, его данные сохраняются. Это позволяет пользователю запросить его восстановление.
Оператор
- + : добавляет атрибут к существующему атрибуту файлов.
- – : удаляет атрибут существующего атрибута файлов.
- = : сохранить существующие атрибуты файлов.
Здесь мы собираемся продемонстрировать некоторые примеры команд chattr для установки/снятия атрибутов для файла и папки.
1. Как добавить атрибуты к файлам для защиты от удаления
Для демонстрации мы использовали папку demo и файл important_file.conf соответственно. Перед настройкой атрибутов убедитесь, что для существующих файлов установлены какие-либо атрибуты с помощью команды «ls -l». Вы видели результаты? В настоящее время атрибуты не установлены.
[ tecmint]# ls -l total 0 drwxr-xr-x. 2 root root 6 Aug 31 18:02 demo -rwxrwxrwx. 1 root root 0 Aug 31 17:42 important_file.conf
Чтобы установить атрибут, мы используем знак +, а для отмены используем знак – с командой chattr. Итак, давайте установим неизменяемый бит для файлов с флагами +i, чтобы никто не мог удалить файл, даже если пользователь root не имеет прав на его удаление.
[ tecmint]# chattr +i demo/ [ tecmint]# chattr +i important_file.conf
Примечание. Неизменяемый бит +i может быть установлен только пользователем с правами суперпользователя (т. е. root) или пользователем с привилегиями sudo. устанавливать.
После установки неизменяемого бита давайте проверим атрибут с помощью команды «lsattr».
[ tecmint]# lsattr ----i----------- ./demo ----i----------- ./important_file.conf
Теперь попытался принудительно удалить, переименовать или изменить разрешения, но это не разрешено, пишет «Операция не разрешена».
[ tecmint]# rm -rf demo/ rm: cannot remove âdemo/â: Operation not permitted
[ tecmint]# mv demo/ demo_alter mv: cannot move âdemo/â to âdemo_alterâ: Operation not permitted
[ tecmint]# chmod 755 important_file.conf chmod: changing permissions of âimportant_file.confâ: Operation not permitted
2. Как отключить атрибут в файлах
В приведенном выше примере мы видели, как установить атрибут для защиты и предотвращения случайного удаления файлов, здесь, в этом примере, мы увидим, как сбросить (сбросить атрибут) разрешения и позволить сделать файлы изменяемыми или изменяемыми с помощью -i флаг.
[ tecmint]# chattr -i demo/ important_file.conf
После сброса разрешений проверьте неизменность файлов с помощью команды «lsattr».
[ tecmint]# lsattr ---------------- ./demo ---------------- ./important_file.conf
В приведенных выше результатах вы видите, что флаг «-i» удален, это означает, что вы можете безопасно удалить все файлы и папки, находящиеся в папке tecmint.
[ tecmint]# rm -rf * [ tecmint]# ls -l total 0
3. Как защитить файлы /etc/passwd и /etc/shadow
Установка неизменяемого атрибута для файлов /etc/passwd или /etc/shadow защищает их от случайного удаления или изменения, а также отключает создание учетной записи пользователя.
[ tecmint]# chattr +i /etc/passwd [ tecmint]# chattr +i /etc/shadow
Теперь попробуйте создать нового системного пользователя, вы получите сообщение об ошибке ‘cannot open /etc/passwd‘.
[ tecmint]# useradd tecmint useradd: cannot open /etc/passwd
Таким образом, вы можете установить неизменяемые разрешения для важных файлов или файлов конфигурации системы, чтобы предотвратить их удаление.
4. Добавить данные без изменения существующих данных в файле
Предположим, вы хотите разрешить всем просто добавлять данные в файл без изменения или модификации уже введенных данных, вы можете использовать атрибут «a» следующим образом.
[ tecmint]# chattr +a example.txt [ tecmint]# lsattr example.txt -----a---------- example.txt
После установки режима добавления файл может быть открыт для записи данных только в режиме добавления. Вы можете отключить атрибут добавления следующим образом.
[ tecmint]# chattr -a example.txt
Теперь попробуйте заменить уже существующий контент в файле example.txt, вы получите сообщение об ошибке «Операция не разрешена».
[ tecmint]# echo "replace contain on file." > example.txt -bash: example.txt: Operation not permitted
Теперь попробуйте добавить новый контент в существующий файл example.txt и проверьте его.
[ tecmint]# echo "replace contain on file." >> example.txt
[ tecmint]# cat example.txt Here is the example to test 'a' attribute mean append only. replace contain on file.
5. Как защитить каталоги
Чтобы защитить весь каталог и его файлы, мы используем переключатель «-R» (рекурсивно) с флагом «+i» вместе с полным путем к папке.
[ tecmint]# chattr -R +i myfolder
После установки рекурсивного атрибута попробуйте удалить папку и ее файлы.
[ tecmint]# rm -rf myfolder/ rm: cannot remove 'myfolder/': Operation not permitted
Чтобы отменить разрешение, мы используем тот же переключатель «-R» (рекурсивно) с флагом «-i» вместе с полным путем к папке.
[ tecmint]# chattr -R -i myfolder
Вот и все! Чтобы узнать больше об атрибутах, флагах и параметрах команды chattr, используйте справочные страницы.