Операционные системы
Теория: Права, ACL и атрибуты
В Linux защита файлов устроена на уровне самой файловой системы. Каждый файл имеет набор прав доступа, которые хранятся прямо в его inode. Классическая модель проста: три группы и три типа прав — чтение, запись и выполнение (rwx).
- Первая тройка — права владельца файла.
- Вторая — права группы.
- Третья — для всех остальных пользователей.
Посмотреть можно так:
Здесь:
rw-— владелец (может читать и писать);r--— группа (только читать);r--— остальные (только читать).
Изменить права можно командой chmod:
Теперь владелец может всё, группа — читать и выполнять, остальные — ничего.
Расширенные списки доступа (ACL)
Иногда базовых прав недостаточно — например, нужно дать доступ не целой группе, а конкретному пользователю. Для этого существуют ACL (Access Control Lists) — расширенные списки прав. Они позволяют назначать разрешения на уровне отдельных пользователей или групп, не меняя основную схему rwx.
Пример:
Эта команда добавляет пользователю alex полный доступ к файлу project.txt, даже если он не владелец.
Проверить результат можно:
В выводе появится новая строка:
ACL удобно использовать в общих проектах или на серверах, где разные команды работают с одними и теми же файлами.
Атрибуты файлов (chattr и lsattr)
Помимо прав, у каждого файла могут быть атрибуты — специальные флаги, которые влияют на поведение файловой системы. Они задаются через утилиту chattr и показываются командой lsattr.
Например:
Флаг i делает файл неизменяемым — его нельзя удалить, переименовать или изменить, даже с правами root. Чтобы вернуть возможность редактирования:
Другие часто используемые атрибуты:
- a — разрешает только дозапись (append). Используется для логов:
chattr +a /var/log/syslog. Теперь логи можно только дописывать, но нельзя удалить или перезаписать. - e — включает хранение данных в виде extent-ов (по умолчанию в ext4).
- c — включает прозрачное сжатие (используется в btrfs). \
Посмотреть атрибуты:
Атрибуты — мощный инструмент системной безопасности: с их помощью можно защитить конфигурации, критичные данные или логи от случайного (и не только) удаления.
Диагностика и восстановление
Знание внутреннего устройства файловой системы помогает быстро находить и устранять проблемы. Вот несколько типичных ситуаций.
«Диск забит, но файлов нет»
Иногда df показывает, что диск заполнен, хотя в каталоге почти ничего нет. Обычно это значит, что файл был удалён, но всё ещё открыт каким-то процессом. Такие «висячие» файлы продолжают занимать место, пока процесс работает.
Проверить можно так:
После завершения процесса или перезапуска место освободится.
«Файловая система не монтируется»
Если при загрузке система не может смонтировать диск, возможно, повреждён суперблок. Проверить можно в безопасном режиме:
Опция -n делает проверку в режиме только чтения — ничего не исправляет. Если суперблок действительно повреждён, можно восстановить файловую систему из резервного суперблока.
«Файлы пропали после сбоя»
В журналах систем вроде ext4 или XFS часто можно вернуть изменения после падения питания. Для XFS:
Утилита перечитает журнал и восстановит недописанные операции.
«Запись стала медленной»
Если система пишет медленно, возможна сильная фрагментация. Проверить:
Если видно десятки отдельных блоков — файл разбит на куски, и чтение замедляется.
«Куда делось место?»
Чтобы понять, какие каталоги занимают больше всего, используйте du:
du подсчитает размер каждого каталога, а sort отсортирует их по возрастанию. Так можно быстро найти, что именно заполнило диск.
Итог
Права и ACL управляют тем, кто может что делать. Атрибуты защищают файлы от изменений. Понимание внутренней структуры inode, журналов и суперблоков позволяет восстанавливать систему даже после серьёзных сбоев.

