Immutable files in linux

RootUsers

Guides, tutorials, reviews and news for System Administrators.

Prevent File/Directory Modification, Deletion and Renaming in Linux

In order to prevent a file or directory from being accidentally or intentionally modified, renamed or deleted in Linux, we can set the immutable flag which will disable this functionality.

About the immutable flag

The immutable flag is an extended file system attribute, and can be set on both files and directories. With this flag in place, the file or directory cannot be modified, renamed or deleted without first removing the immutable flag. Setting this flag requires root privileges.

Example

In the following example, we create a new empty file called ‘no-edit.txt’.

[[email protected] ~]# touch no-edit.txt 

We can use the lsattr command on this file to view its extended attributes, in this case only ‘e’ is there by default.

[[email protected] ~]# lsattr no-edit.txt --------------e---- no-edit.txt

Next we’ll write some data to the file, which works as expected.

[[email protected] ~]# echo test >> no-edit.txt [[email protected] ~]# cat no-edit.txt test

Now we use the chattr command to set the ‘i’ flag, where i represents immutable.

[[email protected] ~]# chattr +i no-edit.txt 

We can now run the lsattr command again to confirm that the ‘i’ flag is now listed on the file.

[[email protected] ~]# lsattr no-edit.txt ----i---------e---- no-edit.txt

The no-edit.txt file is now immutable, so let’s try and write more data to it and see if we can delete or rename it.

[[email protected] ~]# echo more-test >> no-edit.txt zsh: operation not permitted: no-edit.txt [[email protected] ~]# rm -f no-edit.txt rm: cannot remove 'no-edit.txt': Operation not permitted [[email protected] ~]# mv no-edit.txt no-edit2.txt mv: cannot move 'no-edit.txt' to 'no-edit2.txt': Operation not permitted

As we can see in this example, we are not able to modify, delete, or rename our test file as it has been set to immutable. This works exactly the same when applying the ‘i’ flag to a folder, however if you do make a folder immutable, this will apply to all of the files inside, meaning that any sub directories or files within the immutable directory cannot be modified.

If you want to be able to change, remove, or rename an immutable file or directory, you must first remove the ‘i’ flag. This is done again using the change attribute (chattr) command, as shown below.

[[email protected] ~]# chattr -i no-edit.txt [[email protected] ~]# lsattr no-edit.txt --------------e---- no-edit.txt

At this point we can now edit, delete or rename the no-edit.txt file as it is no longer immutable.

Читайте также:  Astra linux сервер времени

Summary

In Linux we can set the immutable flag on a file or directory with the ‘chattr’ command. Once immutable, it will not be possible to delete, modify, or rename the file or directory that it has been applied to. We can use the ‘lsattr’ command to list attributes on a particular file or directory to see if the ‘i’ flag is in place. A superuser can remove the immutable flag, allowing it to be removed, edited, or renamed.

Share this:

Источник

How to Make File and Directory Undeletable, Even By Root in Linux

On Unix-like operating systems including Linux, root is the account or user name that by default can modify all directories and files on a system. In this article, we’ll show how to make directories or files unremovable even by the root user in Linux.

To make a file undeletable by any system user, including root, you need to make it unmodifiable using using the chattr command. This command changes file attributes on a Linux file system.

How to Make File Undeletable in Linux

The command below makes /backups/passwd file immutable (or undeletable). This implies that the file can’t be modified in any way: it can’t be deleted or renamed. You can’t even create a link to it and no data can be written to the file as well.

Note that you need superuser privileges to set or remove this attribute, using the sudo command:

$ sudo chattr +i /backups/passwd OR $ sudo chattr +i -V /backups/passwd

Make File Undeletable in Linux

To view attributes of a file, use the lsattr command as shown.

View Linux File Attributes

Now try to remove the immutable file, both as a normal user and as a root.

$ rm /backups/passwd $ sudo rm /backups/passwd

Delete Immutable File in Linux

How to Recursively Make Directory Undeletable in Linux

Using the -R flag, you can recursively change attributes of directories and their contents as follows.

Make Directory Undeletable in Linux

To make a file mutable again, use -i sign to remove the above attribute, as follows.

$ sudo chattr -i /backups/ passwd

You will find these related article useful:

That’s it! In this article, we showed how to make files unremovable even by the root user in Linux. You can ask any questions via the feedback form below.

Источник

Immutable files in linux

Библиотека сайта rus-linux.net

Утилита chattr является стандартной утилитой Linux, позволяющей устанавливать или удалять атрибуты файла, которые отделены от стандартных прав доступа (чтение, запись, исполнение). Для работы с механизмом атрибутов предназначена еще одна утилита под названием lsattr , которая выводит список атрибутов, установленных для заданного файла. Хотя механизм атрибутов файлов, для работы с которым используются утилиты chattr и lsattr , изначально и поддерживался лишь файловыми системами семейства EXT (EXT2/3/4), на сегодняшний день он также поддерживается многими другими файловыми системами в Linux, такими, как XFS, Btrfs, Reiserfs и некоторыми другими.

В данной статье я продемонстрирую методику использования утилиты chattr для защиты от перезаписи файлов в Linux.

Утилиты chattr и lsattr являются частью пакета утилит e2fsprogs , который предустановлен по умолчанию во всех современных дистрибутивах Linux.

Базовый синтаксис команд на основе утилиты chattr представлен ниже:

$ chattr [-RVf] [оператор][атрибут(ы)] файлы.

В качестве оператора может использоваться символ «+» (указывающий на то, что следует добавить заданные атрибуты в список атрибутов файла), символ «-» (указывающий на то, что следует удалить заданные атрибуты из списка атрибутов файла), а также символ » immutable» к списку его атрибутов. Например, для защиты от перезаписи файла /etc/passwd следует выполнить следующую команду:

Читайте также:  Zip file folder linux

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

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

Для снятия рассматриваемого атрибута следует воспользоваться следующей командой:

Атрибут защиты от перезаписи файла (immutable)

Если вы хотите защитить от перезаписи всю директорию (например, /etc) вместе со всем ее содержимым, вы можете воспользоваться флагом рекурсивного обхода «-R»:

Атрибут открытия файла лишь в режиме дополнения (append-only)

Еще одним полезным атрибутом является атрибут открытия файла лишь в режиме дополнения «append-only», который позволяет разрешить исключительно дописывать данные в файл. Вы не сможете перезаписать или удалить файл с данным атрибутом. Он может быть полезен в том случае, если вы хотите защитить файл системного журнала от случайной очистки.

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

$ sudo chattr +a /var/log/syslog

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

Заключение

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

Источник

How to make a file immutable on Linux

Suppose you want to write-protect some important files on Linux, so that they cannot be deleted or tampered with by accident or otherwise. In other cases, you may want to prevent certain configuration files from being overwritten automatically by software. While changing their ownership or permission bits on the files by using chown or chmod is one way to deal with this situation, this is not a perfect solution as it cannot prevent any action done with root privilege. That is when chattr comes in handy.

chattr is a Linux command which allows one to set or unset attributes on a file, which are separate from the standard (read, write, execute) file permission. A related command is lsattr which shows which attributes are set on a file. While file attributes managed by chattr and lsattr are originally supported by EXT file systems (EXT2/3/4) only, this feature is now available on many other native Linux file systems such as XFS, Btrfs, ReiserFS, etc.

Читайте также:  Linux d link dub e100

In this tutorial, I am going to demonstrate how to use chattr to make files immutable on Linux.

chattr and lsattr commands are a part of e2fsprogs package which comes pre-installed on all modern Linux distributions.

Basic syntax of chattr is as follows.

$ chattr [-RVf] [operator][attribute(s)] files.

The operator can be + (which adds selected attributes to attribute list), — (which removes selected attributes from attribute list), or = (which forces selected attributes only).

Some of available attributes are the following.

  • a : can be opened in append mode only.
  • A : do not update atime (file access time).
  • c : automatically compressed when written to disk.
  • C : turn off copy-on-write.
  • i : set immutable.
  • s : securely deleted with automatic zeroing.

Immutable Attribute

To make a file immutable, you can add immutable attribute to the file as follows. For example, to write-protect /etc/passwd file:

Note that you must use root privilege to set or unset immutable attribute on a file. Now verify that immutable attribute is added to the file successfully.

Once the file is set immutable, this file is impervious to change for any user. Even the root cannot modify, remove, overwrite, move or rename the file. You will need to unset the immutable attribute before you can tamper with the file again.

To unset the immutable attribute, use the following command:

If you want to make a whole directory (e.g., /etc ) including all its content immutable at once recursively, use -R option:

Append Only Attribute

Another useful attribute is append-only attribute which forces a file to grow only. You cannot overwrite or delete a file with append-only attribute set. This attribute can be useful when you want to prevent a log file from being cleared by accident.

Similar to immutable attribute, you can turn a file into append-only mode by:

$ sudo chattr +a /var/log/syslog

Note that when you copy an immutable or append-only file to another file, those attributes will not be preserved on the newly created file.

Conclusion

In this tutorial, I showed how to use chattr and lsattr commands to manage additional file attributes to prevent (accidental or otherwise) file tampering. Beware that you cannot rely on chattr as a security measure as one can easily undo immutability. One possible way to address this limitation is to restrict the availability of chattr command itself, or drop kernel capability CAP_LINUX_IMMUTABLE . For more details on chattr and available attributes, refer to its man page.

Support Xmodulo

This website is made possible by minimal ads and your gracious donation via PayPal or credit card

Please note that this article is published by Xmodulo.com under a Creative Commons Attribution-ShareAlike 3.0 Unported License. If you would like to use the whole or any part of this article, you need to cite this web page at Xmodulo.com as the original source.

Источник

Оцените статью
Adblock
detector