ИТ Блог. Администрирование серверов на основе Linux (Ubuntu, Debian, CentOS, openSUSE)
Понедельник, 31 марта, 2025
Сегодня у нас 1 праздник:
Международный День Резервного Копирования (World Backup Day). Пользователи сайта социальных новостей reddit предложили сделать дату 31.03 Международным днём резервного копирования, аргументируя это тем, что никогда заранее нельзя узнать, какие сюрпризы преподнесёт 1.04

Как использовать команду 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