- «Защита от дурака» или как запретить изменение/удаление важных папок
- Как запретить удалять нужные файлы, но разрешить создавать/изменять/удалять прочие файлы?
- 🐧 Предотвращение случайного удаления или изменения файлов и папок в Linux
- Предотвращение случайного удаления или изменения файлов и папок в Linux
- Предотвращение случайного удаления и изменения папок на Linux
- Как предотвратить случайное удаление файлов и папок, но разрешить операцию добавления на Linux
- Заключение
«Защита от дурака» или как запретить изменение/удаление важных папок
Исторически так сложилось, что для своих мелких проектов держу виртуалку. Однако, так как я не использую ее ресурсы на 100%, решил не жадничать и пустил похоститься несколько друзей. Сайтов не много, деньги за хостинг не беру, поэтому ставить что-то вроде cpanel счел перебором. К тому же я их тех, кто предпочитает настраивать все вручную. Структуру выбрал следующую:
/home/hostuser/vhosts/sitename.ru/
И тут возник вопрос: как запретить пользователю удалять/переименовывать папки в sitename.ru? Если будет отсутствовать папка web, то и apache и nginx выдадут предупреждение, но все-равно загрузятся. Но если удалить/переместит папку logs, то и apache и nginx не запустятся из-за ошибки (по мне довольно странное поведение). Папка hostuser полностью принадлежит данному пользователю и его личной группе (hostuser:hostuser), а это означает, что при желании он сможет удалить любую внутреннюю папку/файл, даже если она будет принадлежать суперпользователю. Так как же запретить удаление/перемещение, чтобы пользователь (случайно или специально) не сломать весь хостинг?
После недолгого гугления решение было найдено. По мимо стандартных разрешений и acl, в файловых системах типа ext2, ext3, ext4 для файла можно выставлять дополнительные атрибуты. Подробней о всех атрибутах прочитать на Wiki, либо man chattr. Нас же интересует атрибут immutable. Данный атрибут для файла или папки может выставить только суперпользователь. Если назначит атрибут immutable на файл, то данный файл нельзя будет изменить или удалить (причем даже суперпользователь это не сможет сделать, пока не уберет данный атрибут). Если назначит атрибут immutable на папку, то данную папку нельзя будет удалить, а так же нельзя будет изменить структуру внутри нее. Тем самым получается, что если нам нужно защитить папку sitename.ru и структуру внутри нее, нам необходимо выполнить простую команду:
chattr +i /home/hostuser/vhosts/sitename.ru
Для снятия атрибута необходимо использовать флаг -i.
Если же нужно защитить только одну папку (например, logs), можно поступить следующим образом:
touch /home/hostuser/vhosts/sitename.ru/logs/.keep chattr +i /home/hostuser/vhosts/sitename.ru/logs/.keep
Собственно так можно поставить «защиту от дурака» (даже с правами суперпользователя).
Важно понимать, данная статья не об информационной безопасности. Замок на почтовом ящике — это информационная безопасность. Стекло на кнопке пожарной сигнализации — это защита от дурака.
Если создать файл .keep и дать ему атрибут -i, саму папку можно перенести и файл можно перенести. Нельзя удалить сам файл и структуру папок до этого файла.
Если вам требуется более надежный уровень безопасности, используйте атрибут immutable совместно с mount —bind. С помощью этой связки можно настроить защиту от намеренного изменения структуры.
Как запретить удалять нужные файлы, но разрешить создавать/изменять/удалять прочие файлы?
Допустим, есть такая файловая система ext4 с точкой монтирования /ILYA, в которой находится файловое хранилище, и как пример, абсолютный путь к одному из файлов.
/ILYA/Music/W.A.S.P/1984 - W.A.S.P/01 - I wanna be somebody.flac
p='/ILYA' && sudo chown -R root:root "$p" && sudo chmod -R =r,u+w,+X "$p" && chown user "$p"
p='/ILYA' && sudo chown -R root:root "$p" && sudo chmod -R =r,u+w,+X,+t "$p" && chown user "$p"
Но это вообще ничего не изменило.
Подскажите, как решить эту задачу, или что я недосмотрел, или, хотя бы, куда мне копать?
Основная моя ошибка была в том, что я считал атрибуты chmod =r,u+w,+X,+t и a=trX,u+w эквивалентными на основании того, что =r было эквивалентно a=r . Запись с a= и короче, и красивее, и понятнее, а главное выполняет то, что от неё требуется. (Сбросить все привилегии и заново установить для всех пользователей стикибит, чтение, и если это директория, то и выполнение, а для владельца, по мимо этого, ещё установить запись)
И так моя задаче решается такой командой, к сожалению, без find не обойтись.
p='/ILYA' && sudo chown -R user:users "$p" && sudo chmod -R a-t,g-w "$p"
А также, в случае, если нужно запретить удалять даже root-у, тогда нужно использовать chattr + find только на файлы, пропуская директории.
В этом случае эти файлы, причём уже совершенно не важно кто ими владеет, не сможет удалить даже root, пока root не снимет атрибут i , j, обратной командой.
🐧 Предотвращение случайного удаления или изменения файлов и папок в Linux
Мануал
Иногда я случайно удаляю свои данные через SHIFT+DELETE.
Хуже того, я даже не делаю резервную копию данных перед их удалением.
Если вы похожи в этом плане на меня, вот хорошая новость для вас.
Существует простая, но полезная утилита командной строки под названием «chattr» (сокращение от Change Attribute), которую можно использовать для предотвращения случайного удаления или изменения файлов и папок в Unix-подобных дистрибутивах.
Он применяет/удаляет определенные атрибуты к файлу или папке в вашей системе Linux.
Таким образом, никто не сможет удалять или изменять файлы и папки случайно или преднамеренно, даже как пользователь root.
Звучит круто, не правда ли?
В этом кратком руководстве мы увидим, как использовать chattr в режиме реального времени, чтобы предотвратить случайное удаление файлов и папок в Linux.
Предотвращение случайного удаления или изменения файлов и папок в Linux
По умолчанию Chattr доступен в большинстве современных операционных систем Linux.
Так что давайте не будем беспокоиться об установке.
Синтаксис команды chattr по умолчанию:
chattr [operator] [switch] [filename]
- Оператор «+» вызывает добавление выбранных атрибутов к существующим атрибутам файлов.
- Оператор ‘-‘ заставляет их удалить.
- Оператор ‘=’ заставляет их быть единственными атрибутами.
В этом руководстве мы собираемся обсудить использование двух атрибутов, а именно a, i, которые используются для предотвращения удаления файлов и папок.
Позвольте мне создать файл с именем file.txt в моем текущем каталоге.
Теперь я собираюсь применить атрибут «i», который сделает файл неизменным.
Это означает, что вы не можете удалять, изменять файл, даже если вы являетесь владельцем файла и пользователем root.
rm: cannot remove 'file.txt': Operation not permitted
Позвольте мне попробовать с командой sudo:
rm: cannot remove 'file.txt': Operation not permitted
Давайте попробуем добавить некоторое содержимое в текстовый файл.
$ echo 'Hello World!' >> file.txt
bash: file.txt: Operation not permitted
Даже если вы попытаетесь удалить файл из файлового менеджера в режиме графического интерфейса, вы не сможете это сделать!
К ак вы заметили в приведенных выше выводах, мы не можем удалить или изменить файл даже как пользователь root.
Чтобы отозвать атрибуты, просто используйте ключ «-i», как показано ниже.
$ echo 'Hello World!' >> file.txt
$ cat file.txt Hello World!
Точно так же вы можете ограничить каталоги от случайного удаления или изменения, как описано в следующем разделе.
Предотвращение случайного удаления и изменения папок на Linux
Создайте каталог с именем dir1 и файл file.txt внутри этого каталога.
$ mkdir dir1 && touch dir1/file.txt
Теперь сделайте этот каталог и его содержимое (file.txt) неизменным, используя команду:
- -R – рекурсивно сделает dir1 и его содержимое неизменным.
- + i – делает каталог неизменным.
Вы получите следующий вывод:
rm: cannot remove 'dir1/file.txt': Operation not permitted
Как предотвратить случайное удаление файлов и папок, но разрешить операцию добавления на Linux
Теперь мы знаем, как предотвратить случайное удаление и изменение файлов и папок.
Далее мы собираемся запретить удаление файлов и папок, но разрешить запись файла только в режиме добавления.
Это означает, что вы не можете редактировать, изменять существующие данные в файле, переименовывать файл и удалять файл.
Вы можете открыть файл для записи только в режиме добавления.
Чтобы установить атрибут добавления режима для файла/каталога, мы делаем следующее:
Для каталогов:
Файл / папка с установленным атрибутом «a» можно открыть только в режиме добавления для записи.
Добавьте некоторое содержимое в файл (ы), чтобы проверить, работает ли это.
$ echo 'Hello World!' >> file.txt
$ echo 'Hello World!' >> dir1/file.txt
Как видите, мы можем добавить содержимое. Э
то означает, что мы можем изменять файлы и папки.
Давайте попробуем удалить файл или папку.
rm: cannot remove 'file.txt': Operation not permitted
Давайте попробуем удалить папку:
rm: cannot remove 'dir1/file.txt': Operation not permitted
Чтобы удалить атрибуты, выполните следующие команды:
Теперь вы можете удалять или изменять файлы и папки как обычно.
Для более подробной информации обратитесь к справочным страницам.
Заключение
Резервное копирование и защита данных – одна из основных задач системного администратора Linux.
На рынке доступно множество бесплатных и коммерческих программ для защиты данных.
К счастью, у нас есть этот встроенный инструмент, который помогает нам защитить данные от случайного удаления или изменения.
Chattr может использоваться как дополнительный инструмент для защиты важных системных файлов и данных в вашей системе Linux.
Пожалуйста, не спамьте и никого не оскорбляйте. Это поле для комментариев, а не спамбокс. Рекламные ссылки не индексируются!
- Аудит ИБ (49)
- Вакансии (12)
- Закрытие уязвимостей (105)
- Книги (27)
- Мануал (2 306)
- Медиа (66)
- Мероприятия (39)
- Мошенники (23)
- Обзоры (820)
- Обход запретов (34)
- Опросы (3)
- Скрипты (114)
- Статьи (352)
- Философия (114)
- Юмор (18)
Anything in here will be replaced on browsers that support the canvas element
Что такое 404 Frame? Большинство инструментов для взлома веб-сайта находятся в 404 Frame. Итак, что же представляют собой команды? Вы можете отдавать команды, используя повседневный разговорный язык, поскольку разработчики не хотели выбирать очень сложную систему команд. Команды Команды “help” / “commands” показывают все команды и их назначение. Команда “set target” – это команда, которая должна […]
В этой заметке вы узнаете о блокировке IP-адресов в Nginx. Это позволяет контролировать доступ к серверу. Nginx является одним из лучших веб-сервисов на сегодняшний день. Скорость обработки запросов делает его очень популярным среди системных администраторов. Кроме того, он обладает завидной гибкостью, что позволяет использовать его во многих ситуациях. Наступает момент, когда необходимо ограничить доступ к […]
Знаете ли вы, что выполняется в ваших контейнерах? Проведите аудит своих образов, чтобы исключить пакеты, которые делают вас уязвимыми для эксплуатации Насколько хорошо вы знаете базовые образы контейнеров, в которых работают ваши службы и инструменты? Этот вопрос часто игнорируется, поскольку мы очень доверяем им. Однако для обеспечения безопасности рабочих нагрузок и базовой инфраструктуры необходимо ответить […]
Одной из важнейших задач администратора является обеспечение обновления системы и всех доступных пакетов до последних версий. Даже после добавления нод в кластер Kubernetes нам все равно необходимо управлять обновлениями. В большинстве случаев после получения обновлений (например, обновлений ядра, системного обслуживания или аппаратных изменений) необходимо перезагрузить хост, чтобы изменения были применены. Для Kubernetes это может быть […]
Является ли запуск сервера NFS в кластере Kubernetes хорошей идеей или это ворота для хакеров Одним из многочисленных преимуществ сетевой файловой системы является ее способность выполнять многократное чтение-запись. И как и все в наши дни, NFS – это просто еще одна служба, которую можно запустить в своем кластере Kubernetes. Однако является ли сервер NFS подходящей […]