chattr +i с указанием имени файла добавляет запрет на его изменение пользователем. Запрет снимается командой chattr -i.
Утилита chattr используется для тонких настоек прав доступа, в дополнение к chown и chmod.
chattr +i и chattr -i, запрет изменения файлов в Linux
Создадим от имени непривелегированного пользователя текстовый файл, который будем использовать для демонстрации
touch test.txt
На него установлены стандартные права, их не меняем
ls -la | grep test
-rw-r—r— 1 admin admin 0 Mar 10 20:30 test.txt
В файл можно свободно добавлять любое содержимое, например цифру 1.
echo "1" > test.txt
Теперь добавим блокировку. От имени пользователя root или через sudo
sudo chattr +i test.txt
Права, владелец и группа владельца файла не изменились
ls -la | grep test
-rw-r—r— 1 admin admin 2 Mar 10 20:31 test.txt
При этом вносить какие-либо коррективы сейчас нельзя. Также нельзя добавлять новое содержимое. Попытка сделать это завершится ошибкой.
echo "2" > test.txt
bash: test.txt: Operation not permitted
Проверить статус можно так
lsattr test.txt
—-i———e— test.txt
Также вывод приведен на скриншоте:
Поскольку добавил блокировку суперпользователь — снять ее может только он. Для этого та же команда для файла выполняется с ключем -i. Возможность редактирования после этого появится.
Без снятия блокировки редактировать файл не сможет в том числе суперпользователь.
chattr используют чтобы ограничить доступ к каким-либо важным файлам или возможностям системы. Блокировать так можно бинарные файлы php или sendmail, это сделает невозможным для пользователя без root доступа снять блокировку.
Также chattr не так очевиден как простая смена прав что имеет значение когда целью является защита от несанкционированного доступа.
Статус после снятия блокировки
lsattr test.txt
—————e— test.txt
Вывод lsattr после снятия блокировки для файла:
Читайте также про SUID и SGID биты. В статье есть описание принципов выставления прав на файлы и каталоги в Linux.