ИТ Блог. Администрирование серверов на основе Linux (Ubuntu, Debian, CentOS, openSUSE)

Как использовать команду Chattr в Linux (для начинающих)

Как использовать команду Chattr в Linux (для начинающих)

Chattr – это программа командной строки UNIX, которая поставляется в большинстве дистрибутивов Linux. Роль этой команды заключается в том, чтобы позволить пользователю-администратору устанавливать атрибуты файла, которые налагают ограничения на файлы.

Существует несколько атрибутов файла для разных ролей, таких как атрибут “+i”, который предотвращает переименование, удаление или модификацию файла, и атрибут “+a”, который позволяет добавлять только новое содержимое, а также несколько других, которые будут рассмотрены позже в этом руководстве.

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

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

 

Синтаксис команды Chattr

Команда chattr принимает три аргумента: первый – это параметр, второй – атрибут файла, а третий – путь к файлу, к которому вы хотите применить выбранный атрибут файла.

$ chattr [option] [attribute*] [path/to/file*]

 

При указании атрибута файла вы будете в основном использовать операторы “+” и “-”: оператор “+” добавляет ограничение выбранного атрибута к файлу, в то время как оператор “-” удаляет его. Кроме того, вы используете оператор “=”, чтобы удалить все существующие атрибуты и заменить их выбранными.

Доступными опциями для chattr являются опция “-R” для рекурсивного применения указанного атрибута к каждому файлу в выбранном каталоге, опция “-V” для отображения измененных файлов и опция “-f” для скрытия распространенных ошибок.

Нравится, не так ли? Теперь давайте узнаем немного больше о некоторых важных атрибутах файла, которые вы в основном будете использовать для установки ограничений с помощью команды chattr, начиная с…

 

Список атрибутов файла для команды Chattr

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

 

Приведенный выше список содержит несколько атрибутов из полного списка. Чтобы просмотреть весь список, вы можете использовать команду “man chattr”. Однако для новичка этого достаточно, поскольку ваша работа в основном будет вращаться вокруг них. Давайте теперь рассмотрим несколько практических примеров использования этого атрибута.

 

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

Атрибут “+i” делает файл неизменяемым, предотвращая любые модификации, даже пользователем root. В реальной ситуации критически важный файл конфигурации был бы защищен от случайных изменений.

$ sudo chattr +i myfile.txt

 

Вывод:

andreyex@linux: $ sudo chattr +1 myfile.txt   <- Применение ограничения
andreyex@linux:-$ echo "test" > myfile.txt 
bash: myfile.txt: Operation not permitted    <- Выполнение ограниченной задачи
andreyex@linux: $ rm myfile.txt
rm: cannot remove 'myfile.txt': Operation not permitted 
andreyex@linux:-5 my myfile.txt newfile.txt
mv: cannot move 'myfile.txt' to 'newfile.txt': Operation not permitted <- Выполнение ограниченной задачи
andreyex@linux:-$

 

Содержимое файла по-прежнему можно просматривать, несмотря на ограничения на запись, переименование и удаление.

 

Снимите ограничения на запись, переименование и удаление файлов

Чтобы снять ограничения, наложенные на файл предыдущим способом, вы можете использовать атрибут “-i”.

$ sudo chattr -i myfile.txt

 

Вывод:

andreyex@linux:-$ sudo chattr -i myfile.txt  <- Снятие ограничения
andreyex@linux:-$ echo "test" > myfile.txt  <- Тестирование ограничения
andreyex@linux: -$ rm myfile.txt    <- Тестирование ограничения
andreyex@linux:-

 

Обратите внимание, что это снимет ограничение только для атрибута “+i”. Если пользователь назначит другой атрибут или несколько атрибутов одновременно, они все равно будут существовать.

 

Применить разрешение только для добавления

Атрибут “+a” очень похож на атрибут “+i” и запрещает действия по записи, переименованию и удалению, но позволяет добавлять новое содержимое в файл. Вы можете применить этот атрибут к файлам журнала, чтобы предотвратить изменения, имеющие обратную силу.

$ sudo chattr +i myfile.txt

 

Вывод:

andreyex@linux: $ sudo chattr +a myfile.txt   <-  Добавление ограничений
andreyex@linux: 5 echo "New content" >> myfile.txt  <-  Добавление разрешения
andreyex@linux: $ echo "Write content" > myfile.txt  <-  Запись запрещена
bash: myfile.txt: Operation not permitted 
andreyex@linux:-5

 

Чтобы восстановить файл в исходное состояние, используйте атрибут “-a”, чтобы снять ограничение только на добавление.

 

Проверьте примененный атрибут к выбранному файлу

Чтобы отслеживать существующие атрибуты или проверять, установлен ли применяемый атрибут, вы можете использовать команду “lsattr”, в которой перечислены все атрибуты, присвоенные выбранному файлу.

$ lsattr myfile.txt

 

Вывод:

andreyex@linux:-$ lsattr myfile.txt 
----i---------e------- myfile.tx
andreyex@linux:-$

 

Приведенный выше вывод указывает, что файл имеет два атрибута: “i“, что означает неизменяемость файла, и “e“, который является атрибутом по умолчанию, применяемым ко всем файлам.

 

Замените существующий атрибут новым атрибутом

Если к файлу применено несколько атрибутов, но вы хотите заменить их все выбранным, вы можете указать атрибут с помощью оператора “=” для этой задачи.

$ sudo chattr =u myfile.txt

 

Вывод:

andreyex@linux:-$ lsattr myfile.txt 
----i---------e------- myfile.txt
andreyex@linux:-$ sudo chattr =u myfile.txt  <-  Замена существующего атрибута
andreyex@linux:-$ lsattr myfile.txt -
-u-------------------- myfile.txt 
andreyex@linux:-$

 

 

Примените атрибут ко всем файлам в выбранном каталоге

Чтобы применить выбранный атрибут ко всем файлам в целевом каталоге, используйте опцию “-RV” для рекурсивного внесения изменений во все файлы, а затем перечислите затронутые файлы.

$ sudo chattr -RV +u mydir/

 

Вывод:

andreyex@linux:-$ sudo chattr -RV +u mydir/
chattr 1.47.0 (15-Feb-2024)
Flags of mydir/ set as -u------------e-------
Flags of mydir//file3.txt set as -u------------e-------
Flags of mydir//file2.txt set as -u------------e-------
Flags of mydir//filel.txt set as -u------------e-------
Flags of mydir//file5.txt set as -u------------e-------
Flags of mydir//file4.txt set as -u------------e-------
andreyex@linux:-$

 

 

Выводы

В этой статье вы узнали, как использовать команду chattr с различными операторами и атрибутами, а также ее доступные опции. Если у вас есть какие-либо вопросы по теме, не стесняйтесь обращаться к нам через раздел комментариев.

Exit mobile version