Для корректной работы с файлами были разработаны файловые системы, которые позволяют задать единый стандарт хранения данных. Именно он позволил решить проблемы, большого размера хранимых данных, долгой индексации, а так же дедупликации и контроля целостности.
Файловая система – это набор правил или же алгоритм, с помощью которого данные систематизируются и хранятся в определенной форме, чтобы ОС могла обратиться к ним. Она так же регулирует поведение файлов своими атрибутами и позволяет задать определенные параметры, которые могут запретить удаление файлов даже root пользователю! Рассмотрим работу и управление ими в данном материале.
Как работает файловая система?
Накопитель данных хранит информацию в виде длинного набора единиц и нулей в двоичной системе, где они разбиты на группы, благодаря логической абстракции – файловой системе. У каждого файла есть свои заголовки, метаданные, атрибуты и полезная нагрузка – сама информация.
При обращении к файлам, пользователь создает системный вызов, который направляется в ядро ОС. Та уже взаимодействует с самой файловой системой, где считывает необходимые ей атрибуты. Их существует два типа: права доступа и флаги поведения. Это по прежнему атрибуты или свойства файла, но каждый из них имеет свою функцию.
Стандартные права доступа rwx, которые вы уже везде видели определяют правила обращения субьектов к обьектам и используются в более верхнеуровневых режимах работы. А флаги поведения, определяют опции, того как будут обрабатываться файлы и работают они на уровне более низком. Поэтому root, при работе с файлом у которого есть флаг -i или же immutable, не сможет удалить или изменить его. Весь список атрибутов перечислен ниже в таблице:
Список достаточно внушительный, поэтому рассмотрим основные способы применения флагов на практике!
Управление атрибутами
Представим, что мы собираем логи с машины и нам важно, чтобы никто не мог их подменить с целью сохранения целостности данных. Для этого у файловой системы есть атрибут, который мы можем присвоить файлу:
При нехватке собственных мощностей можно воспользоваться облачными серверами от Serverspace, для этого перейдем к созданию сервера, на любой из двух платформ vStack cloud или же VMware cloud. Нажмем на кнопку Создать сервер и выберем конфигурацию, подходящую под наши задачи, затем нажмем кнопку Создать:
Просмотреть применился ли атрибут можно через команду:
После чего изменение данных будет невозможно до тех пор, пока пользователь с административными правами не уберет этот атрибут противоположной командой:
Для того, чтобы запретить удаление файла или его изменение пропишем команду и проверим ее работоспособность:
Сразу после того, как был выдан атрибут, при обращении к файловой системе она выдает отказ на выполнение действий по изменению файла. Вполне может использоваться, как защита от случайного удаления для админов или же доп.правило по работе для обычных пользователей, которые и так имели доступ к файлам.
Так же для файлов можно включить журналирование, оно позволит сохранять список действий с файлами в отдельный журнал. Что поможет при восстановлении целостности самой системы. Однако обычно эту функцию указывают напрямую, при инсталляции файловой системы.
Данные атрибуты позволяют добавить низкоуровневый функционал изменить, который может только администратор. Они превалируют над стандартной системой разграничения доступа, внося изменения глобально для всех пользователей системы. Такое решение полезно, когда нарушитель получил доступ к аккаунту. Который имеет возможность по правам доступа изменять файлы, но это запрещено атрибутом файловой системы, только если это не root.