Поиск по сайту:

Учебное пособие по команде Linux chattr для начинающих (5 примеров)


Часто компьютер с Linux используется разными пользователями. Так что есть вероятность, что эти пользователи имеют доступ к общей группе файлов. Это открывает двери для таких проблем, как случайное удаление или редактирование важных файлов, чего вы, как администратор, определенно не хотите.

К счастью, есть команда chattr, предназначенная именно для таких случаев. В этом уроке мы объясним этот инструмент на нескольких простых для понимания примерах. Но прежде чем мы это сделаем, мы должны упомянуть, что все приведенные здесь примеры были протестированы на Ubuntu 22.04 LTS и Debian 11.

Команда Linux chattr

По сути, команда chattr используется для изменения атрибутов файла в файловой системе Linux. Ниже приведен его синтаксис:

chattr [ -RVf ] [ -v version ] [ mode ] files...

А вот что об этом говорит справочная страница:

       chattr changes the file attributes on a Linux file system.

       The format of a symbolic mode is +-=[aAcCdDeijsStTu].

       The  operator  '+'  causes  the  selected attributes to be added to the
       existing attributes of the files; '-' causes them to  be  removed;  and
       '=' causes them to be the only attributes that the files have.

       The  letters  'aAcCdDeijsStTu' select the new attributes for the files:
       append only (a), no atime updates (A), compressed (c), no copy on write
       (C), no dump (d), synchronous directory updates (D), extent format (e),
       immutable (i), data journalling (j), secure deletion  (s),  synchronous
       updates  (S),  no tail-merging (t), top of directory hierarchy (T), and
       undeletable (u).

       The following attributes are read-only, and may be listed by  lsattr(1)
       but  not  modified  by  chattr:  compression  error (E), huge file (h),
       indexed directory (I), inline data (N), compression raw access (X), and
       compressed dirty file (Z).

       Not  all  flags  are supported or utilized by all filesystems; refer to
       filesystem-specific man pages such as btrfs(5), ext4(5), and xfs(5) for
       more filesystem-specific details.

Ниже приведены несколько примеров в стиле вопросов и ответов, которые должны дать вам хорошее представление о том, как работает команда chattr.

Q1. Как использовать команду chattr?

Предположим, вы хотите сделать файл доступным только для чтения. Так что все, что вам нужно сделать, это запустить команду chattr с опцией +i и именем файла в качестве входных данных.

Например:

chattr +i test.txt

На следующем снимке экрана показано, что никакие другие операции с файлом не были выполнены успешно после того, как он стал доступен только для чтения с помощью chattr.

Примечание. Как вы уже заметили, для использования команды chattr необходимы привилегии суперпользователя.

Q2. Как снять ограничение только на чтение, наложенное chattr?

Это просто - все, что вам нужно сделать, это использовать опцию -i вместо +i. Например:

chattr -i test.txt

Таким образом, вы можете видеть, что фактор только для чтения был удален с помощью опции -i.

Q3. Как предоставить разрешение только на добавление к файлу?

Иногда вам может не понадобиться полное ограничение на файл. Я имею в виду, что вы можете захотеть предоставить пользователям доступ к файлу только для добавления, чтобы можно было добавлять новую информацию, но существующую информацию нельзя было удалить или отредактировать. Это также возможно с помощью chattr через опцию +a.

chattr +a test.txt

Итак, вы можете видеть, что теперь мы можем добавлять данные в файл, но не можем редактировать существующую информацию в файле, а также удалять файл. Чтобы изменить это поведение, просто используйте параметр -a.

chattr -a test.txt

Q4. Как применить ограничение с помощью chattr ко всем файлам в каталоге?

Это можно сделать с помощью флага -R, который позволяет рекурсивно изменять атрибуты каталогов и их содержимого. Например, если вы хотите сделать все файлы в каталоге test-dir доступными только для чтения, используйте команду chattr следующим образом:

chattr -R +i ./test-dir/

На следующем снимке экрана показано, что ограничение только для чтения было успешно применено ко всем файлам внутри каталога.

Q5. Как проверить атрибуты chattr, примененные к файлам?

До сих пор, чтобы проверить, успешно ли применен атрибут chattr, мы пытались выполнять такие операции, как редактирование файла или его удаление. Но есть отдельная команда, которая позволяет легко увидеть, были ли применены атрибуты или нет. Речь идет о команде lsattr.

lsattr [FILENAME]

Например, на следующем снимке экрана показаны выходные данные lsattr, явно указывающие на то, что атрибут i был применен ко всем файлам в каталоге.

Просто чтобы подтвердить, вот вывод после использования опции -i.

Как вы можете видеть на скриншоте выше, атрибут только для чтения был удален со всех файлов.

Заключение

Вы, вероятно, согласитесь, что chattr является обязательным инструментом командной строки, если вы являетесь системным администратором или вообще управляете пользователями на компьютере с Linux. Эффективное использование команды может избавить вас от многих хлопот. Этой статьи должно быть достаточно, чтобы начать работу с командой. После того, как вы попрактикуетесь в примерах, которые мы здесь обсуждали, перейдите на справочную страницу инструментов, чтобы узнать больше об этом.