Гид по технологиям

Флаги и атрибуты файлов в macOS и Unix: chflags, chattr и ls

• 6 min read • Системное администрирование • Обновлено 23 Nov 2025
Флаги файлов в macOS и Unix — chflags и chattr
Флаги файлов в macOS и Unix — chflags и chattr

Обложка: работа с флагами файлов в macOS

Флаги используются в macOS для ограничения изменений файла. Они задаются отдельно от классических прав доступа и работают параллельно с командами вроде chown и chmod. Для изменения флагов используется команда chflags, а для просмотра — ls. В Unix-подобных системах есть похожая система, где такие параметры обычно называются атрибутами и управляются через chattr и lsattr.

Как просмотреть установленные флаги на macOS

В Terminal можно использовать ключи ls для отображения флагов. На macOS флаг отображается в отдельной колонке, если вы используете формат списка с опцией O:

ls -lO ~
# Пример вывода: (объяснён для наглядности)
drwx------@ 88 alexander staff hidden 2992 Jan 25 14:01 Library

Если для файла или папки флаги не установлены, вместо имени флага выводится дефис:

ls -lO ~/Library/Caches
# Пример вывода:
drwx------+ 234 alexander staff - 7956 Jan 25 13:03 Caches

Колонка с флагами покажет либо конкретные флаги, либо дефис, если их нет.

Установка и снятие флагов на macOS

Пример использования chflags в macOS

Флаги часто становятся причиной проблем: они действуют как «надправа», поэтому их легко пропустить. Если файл «неудаляем», даже с привилегиями администратора, вероятно, установлен флаг, мешающий удалению.

Ниже — полный набор флагов, доступных в macOS, и краткое объяснение. Большинство флагов может устанавливать только владелец файла или суперпользователь; sappnd и schg — системные флаги и могут выставляться только суперпользователем. Только флаг hidden можно установить без повышения привилегий.

Команды установки

Для установки флага используйте chflags. Для директорий доступна рекурсивная опция -R:

sudo chflags -R [flag] /usr/bin/local
sudo chflags [flag] /usr/bin/local/mnt.sh
chflags -R hidden ~/Desktop

Пример установки nodump:

sudo chflags nodump /usr/bin/local/tty.sh

Важно: в одной команде chflags обычно задают один флаг.

Список флагов и объяснения:

  • opaque — делает папку «непрозрачной» при просмотре через union mount; полезно при объединении нескольких директорий.
  • nodump — помечает файл/папку, чтобы команда dump (резервное копирование) их пропускала.
  • sappnd, sappend — системный флаг «только добавление»: файл можно дописывать, но нельзя изменить или удалить. Снятие — только из single-user режима (режима одного пользователя).
  • schg, schange, simmutable — системный флаг «immutable»: запрещает любые изменения файла даже суперпользователю. Снятие — только в single-user режиме.
  • uappnd, uappend — пользовательский флаг «только добавление». Может быть установлен и снят владельцем без повышения прав.
  • uchg, uchange, uimmutable — пользовательский флаг «immutable», аналогичен системному, но доступен владельцу.
  • hidden — скрывает элемент в Finder и делает его невидимым в обычном выводе ls (если не использовать соответствующие ключи).

Снятие флагов

Чтобы снять флаг, задайте противоположный ему параметр. В большинстве случаев это делается путём добавления префикса no к названию флага. Для nodump используется dump:

sudo chflags dump /usr/bin/local/oty.sh

Или стандартно:

sudo chflags nosappnd /usr/bin/local/oty.sh

Рекурсивная операция:

chflags -R nohidden ~/Desktop

После того как флаги сняты, можно менять владельца и права доступа как обычно (chown, chmod).

Атрибуты в Unix/Linux: chattr и lsattr

Сравнение флагов macOS и атрибутов Unix

В большинстве Linux-дистрибутивов аналог флагов macOS называется атрибутами и управляется утилитами chattr и lsattr. Формат и набор опций отличаются, но концепция близка: атрибуты меняют поведение файловой системы относительно файла.

Просмотр атрибутов:

lsattr /path/to/file.txt

Описание буквенных кодов атрибутов (сокращённо, см. man chattr для деталей):

«Буквы ‘acdeijstuADST’ выбирают новые атрибуты для файлов: a — только добавление, c — сжатие, d — no dump, e — extent format, i — immutable, j — data journalling, s — secure deletion, t — no tail-merging, u — undeletable, A — no atime updates, D — synchronous directory updates, S — synchronous updates, T — top of directory hierarchy.»

Пример установки атрибута secure deletion (s):

chattr +s /file/name.txt

Или установка immutable в Linux:

chattr +i /etc/important.conf

Чтобы снять, используйте минус:

chattr -i /etc/important.conf

Обратите внимание, что действия chattr обычно требуют прав root.

Практическое руководство: что делать, если файл нельзя удалить

Шаблон действий при проблеме «файл не удаляется»: простая пошаговая методика для скорости и безопасности.

  1. Просмотрите флаги/атрибуты:
    • macOS: ls -lO /path/to/file
    • Linux: lsattr /path/to/file
  2. Если виден флаг/атрибут, попытайтесь снять его:
    • macOS: sudo chflags [no]flag /path/to/file
    • Linux: sudo chattr -i /path/to/file
  3. Проверьте владельца и права: ls -l /path/to/file и chown/chmod при необходимости.
  4. Если флаг системный (sappnd, schg) и нельзя снять как root, перезагрузитесь в single-user режим и снимите там (macOS).
  5. После снятия флагов удалите/измените файл и верните файлам любые необходимые ограничения.

Когда флаги и атрибуты не помогут

  • Файловая система смонтирована только для чтения. В этом случае ни chflags, ни chattr не помогут: нужно перемонтировать с правами записи или исправить ошибки монтирования.
  • Файл защищён железом (например, устаревшая флешка с аппаратной защитой) — флаги не решают проблему.
  • Проблемы на уровне драйвера или коррумпированный индекс файловой системы — сначала выполните fsck или соответствующую проверку диска.

Альтернативные подходы

  • Access Control Lists (ACL) — гибче для управления правами доступа пользователей и групп; используются через команды chmod/ls или getfacl/setfacl в Linux.
  • Контейнеризация и sandboxing — изолировать изменяемые данные в контейнере, где права и атрибуты контролируются на уровне образа.
  • Шифрование данных — для защиты содержимого вместо блокировки изменений.

Ментальные модели и эвристики

  • Флаги = «ширмы» поверх прав доступа: они ограничивают действия даже при наличии прав на запись.
  • Системные флаги = «крайняя мера»: предполагают вмешательство администратора на низком уровне (single-user mode).
  • Пользовательские флаги = «локальные замки»: могут ставиться и сниматься владельцем без перегрузки системы.

Быстрые примеры команд и шпаргалка

  • Просмотр (macOS): ls -lO /path/to
  • Просмотр (Linux): lsattr /path/to
  • Установка флага: sudo chflags nodump /path/to/file
  • Снятие флага: sudo chflags nohidden /path/to/dir
  • Установка атрибута immutable (Linux): sudo chattr +i /path/to/file
  • Снятие атрибута immutable (Linux): sudo chattr -i /path/to/file

Рольовые чек-листы

Администратор:

  • Проверить, замонтирована ли ФС в режиме чтения
  • Просмотреть флаги/атрибуты
  • Снять системные флаги в single-user режиме при необходимости
  • Проверить целостность файловой системы (fsck)

Обычный пользователь:

  • Посмотреть флаги через ls -lO
  • Снять пользовательские флаги (uchg/uappnd) если вы — владелец
  • Обратиться к администратору при системных флагах

Критерии приёмки

  • Файл можно удалить или изменить после снятия флагов/атрибутов
  • Проверка: ls -lO или lsattr не показывает блокирующих флагов
  • Права и владелец установлены корректно и безопасно

Простая схема принятия решения

flowchart TD
  A[Файл нельзя удалить] --> B{ФС смонтирована как read-only?}
  B -- Да --> C[Перемонтировать с правами записи]
  B -- Нет --> D[Проверить флаги / атрибуты]
  D --> E{Найден флаг/атрибут?}
  E -- Нет --> F[Проверить права и владельца]
  E -- Да --> G{Системный флаг?}
  G -- Да --> H[Перезагрузиться в single-user, снять флаг]
  G -- Нет --> I[Снять флаг как владелец/root]
  I --> J[Удалить/изменить файл]
  H --> J
  F --> J

Короткое объявление для команды (100–200 слов)

Флаги (macOS) и атрибуты (Linux) — это дополнительные механизмы защиты файловой системы, которые блокируют изменение или удаление файлов. Если при работе вы обнаружили, что файл «неудаляем», сначала проверьте флаги через ls -lO (macOS) или lsattr (Linux). Для снятия используйте chflags (macOS) или chattr (Linux); системные флаги нужно снимать в single-user режиме. Если файловая система смонтирована только для чтения, сначала перемонтируйте её с правами записи. Вопросы и необычные случаи — направлять администраторам с описанием проблемы и выводом команд ls/lsattr.

Краткая глоссарий за одну строку

  • flаg / флаг — метка macOS, изменяющая поведение файла сверх прав доступа; - attribute / атрибут — аналогична метка в Linux.

Подводя итог

Флаги и атрибуты полезны для предотвращения случайных изменений и улучшения защиты файлов на уровне ФС. Для решения проблем сначала просмотрите флаги/атрибуты, затем снимите их корректным инструментом (chflags или chattr). Если же причина в монтировании или повреждении ФС, сначала устраните эти причины.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Несколько аккаунтов Skype: Multi Skype Launcher
Программное обеспечение

Несколько аккаунтов Skype: Multi Skype Launcher

Журнал для работы: повысить продуктивность
Productivity

Журнал для работы: повысить продуктивность

Персональные звуки уведомлений на Android
Android.

Персональные звуки уведомлений на Android

Скачивание шоу Hulu для офлайн‑просмотра
Стриминг

Скачивание шоу Hulu для офлайн‑просмотра

Microsoft Start: персонализированная новостная лента
Новости

Microsoft Start: персонализированная новостная лента

Как изменить имя в Epic Games быстро
Гайды

Как изменить имя в Epic Games быстро