Запрет изменения файла linux

«Защита от дурака» или как запретить изменение/удаление важных папок

Доброе время суток.

Исторически так сложилось, что для своих мелких проектов держу виртуалку. Однако, так как я не использую ее ресурсы на 100%, решил не жадничать и пустил похоститься несколько друзей. Сайтов не много, деньги за хостинг не беру, поэтому ставить что-то вроде cpanel счел перебором. К тому же я их тех, кто предпочитает настраивать все вручную. Структуру выбрал следующую:

И тут возник вопрос: как запретить пользователю удалять/переименовывать папки в sitename.ru? Если будет отсутствовать папка web, то и apache и nginx выдадут предупреждение, но все-равно загрузятся. Но если удалить/переместит папку logs, то и apache и nginx не запустятся из-за ошибки (по мне довольно странное поведение). Папка hostuser полностью принадлежит данному пользователю и его личной группе (hostuser:hostuser), а это означает, что при желании он сможет удалить любую внутреннюю папку/файл, даже если она будет принадлежать суперпользователю. Так как же запретить удаление/перемещение, чтобы пользователь (случайно или специально) не сломать весь хостинг?

После недолгого гугления решение было найдено. По мимо стандартных разрешений и acl, в файловых системах типа ext2, ext3, ext4 для файла можно выставлять дополнительные атрибуты. Подробней о всех атрибутах прочитать на Wiki, либо man chattr. Нас же интересует атрибут immutable. Данный атрибут для файла или папки может выставить только суперпользователь. Если назначит атрибут immutable на файл, то данный файл нельзя будет изменить или удалить (причем даже суперпользователь это не сможет сделать, пока не уберет данный атрибут). Если назначит атрибут immutable на папку, то данную папку нельзя будет удалить, а так же нельзя будет изменить структуру внутри нее. Тем самым получается, что если нам нужно защитить папку sitename.ru и структуру внутри нее, нам необходимо выполнить простую команду:

Для снятия атрибута необходимо использовать флаг -i.

Если же нужно защитить только одну папку (например, logs), можно поступить следующим образом:

Собственно так можно поставить «защиту от дурака» (даже с правами суперпользователя).

Спасибо за внимание.

Важно понимать, данная статья не об информационной безопасности. Замок на почтовом ящике — это информационная безопасность. Стекло на кнопке пожарной сигнализации — это защита от дурака.
Если создать файл .keep и дать ему атрибут -i, саму папку можно перенести и файл можно перенести. Нельзя удалить сам файл и структуру папок до этого файла.
Если вам требуется более надежный уровень безопасности, используйте атрибут immutable совместно с mount —bind. С помощью этой связки можно настроить защиту от намеренного изменения структуры.

Источник

Права доступа к файлам в Linux

В операционной системе Linux есть много отличных функций безопасности, но она из самых важных — это система прав доступа к файлам. Linux, как последователь идеологии ядра Linux в отличие от Windows, изначально проектировался как многопользовательская система, поэтому права доступа к файлам в linux продуманы очень хорошо.

И это очень важно, потому что локальный доступ к файлам для всех программ и всех пользователей позволил бы вирусам без проблем уничтожить систему. Но новым пользователям могут показаться очень сложными новые права на файлы в linux, которые очень сильно отличаются от того, что мы привыкли видеть в Windows. В этой статье мы попытаемся разобраться в том как работают права файлов в linux, а также как их изменять и устанавливать.

Читайте также:  Opera ��� ���������� mac os

Основные права доступа к файлам в Linux

Изначально каждый файл имел три параметра доступа. Вот они:

  • Чтение — разрешает получать содержимое файла, но на запись нет. Для каталога позволяет получить список файлов и каталогов, расположенных в нем;
  • Запись — разрешает записывать новые данные в файл или изменять существующие, а также позволяет создавать и изменять файлы и каталоги;
  • Выполнение — вы не можете выполнить программу, если у нее нет флага выполнения. Этот атрибут устанавливается для всех программ и скриптов, именно с помощью него система может понять, что этот файл нужно запускать как программу.

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

  • Владелец — набор прав для владельца файла, пользователя, который его создал или сейчас установлен его владельцем. Обычно владелец имеет все права, чтение, запись и выполнение.
  • Группа — любая группа пользователей, существующая в системе и привязанная к файлу. Но это может быть только одна группа и обычно это группа владельца, хотя для файла можно назначить и другую группу.
  • Остальные — все пользователи, кроме владельца и пользователей, входящих в группу файла.

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

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

Специальные права доступа к файлам в Linux

Для того, чтобы позволить обычным пользователям выполнять программы от имени суперпользователя без знания его пароля была придумана такая вещь, как SUID и SGID биты. Рассмотрим эти полномочия подробнее.

  • SUID — если этот бит установлен, то при выполнении программы, id пользователя, от которого она запущена заменяется на id владельца файла. Фактически, это позволяет обычным пользователям запускать программы от имени суперпользователя;
  • SGID — этот флаг работает аналогичным образом, только разница в том, что пользователь считается членом группы, с которой связан файл, а не групп, к которым он действительно принадлежит. Если SGID флаг установлен на каталог, все файлы, созданные в нем, будут связаны с группой каталога, а не пользователя. Такое поведение используется для организации общих папок;
  • Sticky-bit — этот бит тоже используется для создания общих папок. Если он установлен, то пользователи могут только создавать, читать и выполнять файлы, но не могут удалять файлы, принадлежащие другим пользователям.

Теперь давайте рассмотрим как посмотреть и изменить права на файлы в Linux.

Как посмотреть права доступа к файлам в Linux

Конечно, вы можете посмотреть права доступа к файлам в Linux с помощью файлового менеджера. Все они поддерживают эту функцию, но так вы получите неполную информацию. Для максимально подробной информации обо всех флагах, в том числе специальных, нужно использовать команду ls с параметром -l. Все файлы из каталога будут выведены в виде списка, и там будут показаны все атрибуты и биты.

Чтобы узнать права на файл linux выполните такую команду, в папке где находится этот файл:

За права файлов в linux тут отвечают черточки. Первая это тип файла, который рассмотрен в отдельной статье. Дальше же идут группы прав сначала для владельца, для группы и для всех остальных. Всего девять черточек на права и одна на тип.

Читайте также:  Оригинальные драйвера для windows

Рассмотрим подробнее, что значат условные значения флагов прав:

  • — нет прав, совсем;
  • —x — разрешено только выполнение файла, как программы но не изменение и не чтение;
  • -w- — разрешена только запись и изменение файла;
  • -wx — разрешено изменение и выполнение, но в случае с каталогом, вы не можете посмотреть его содержимое;
  • r— — права только на чтение;
  • r-x — только чтение и выполнение, без права на запись;
  • rw- — права на чтение и запись, но без выполнения;
  • rwx — все права;
  • —s — установлен SUID или SGID бит, первый отображается в поле для владельца, второй для группы;
  • —t — установлен sticky-bit, а значит пользователи не могут удалить этот файл.

В нашем примере, файл test1 имеет типичные разрешения для программ, владелец может все, группа только чтение и выполнение, а все остальные — только выполнение. Для test2 дополнительно установлен флаг SUID и SGID. А для папки test3 установлен Sticky-bit. Файл test4 доступный всем. Теперь вы знаете как посмотреть права на файл linux.

Как изменить права файла в Linux

Чтобы изменить права на файл в linux вы можете использовать утилиту chmod. Она позволяет менять все флаги, включая специальные. Рассмотрим ее синтаксис:

$ chmod опции категория действие флаг файл

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

Категория указывает для какой группы пользователей нужно применять права, как вы помните доступно только три категории:

  • u — владелец файла;
  • g — группа файла;
  • o — другие пользователи.

Действие может быть одно из двух, либо добавить — знак «+», либо убрать — знак — «-«. Что касается самих прав доступа, то они аналогичны выводу утилиты ls: r — чтение, w — запись, x — выполнение, s — suid/sgid, в зависимости от категории, для которой вы его устанавливаете, t — устанавливает sticky-bit. Например, всем пользователям полный доступ к файлу test5:

chmod ugo+rwx test5

Или заберем все права у группы и остальных пользователей:

chmod go-rwx test5

Дадим группе право на чтение и выполнение:

chmod g+rx test5

Остальным пользователям только чтение:

Для файла test6 установим SUID:

А для test7 — SGID:

Посмотрим что получилось:

Как видите, изменить права на файл в Linux очень просто. К тому же вы можете изменить основные права с помощью файлового менеджера.

Выводы

Вот и все, теперь вы знаете не только что такое права доступа к файлам в Linux, но и как их посмотреть, и даже как их изменить. Это очень важная тема, в которой действительно стоит разобраться новичкам, чтобы использовать свою систему более полноценно. Если у вас остались вопросы, спрашивайте в комментариях!

На завершение хочу предложить неплохое видео про права доступа в Linux:

Источник

unixforum.org

Форум для пользователей UNIX-подобных систем

  • Темы без ответов
  • Активные темы
  • Поиск
  • Статус форума

запрет изменения файла (resolv.conf)

Модератор: Bizdelnick

запрет изменения файла

Изменение атрибутов ext2fs и ext3fs используя chattr [исправить]

Команда chattr позволяет изменять параметры ФС для отдельного файла или директории:
chattr +a — только добавление данных (append-only), удаление и переименование запрещено;
chattr +i — запрещено удаление, изменение или переименование (immutable);
chattr +A — запретить сохранение данных о каждом обращении к файлу (no atime)
chattr +S — синхронное изменение всех данных на диск, без кэширования;
chattr +c — файл будет хранится на диске в сжатом виде (нужен отдельный патч для ядра);
chattr +s — после удаления файла, место на диске забивается нулями (внешний патч);
chattr +u — резервирование данных файла после удаления (внешний патч);

Пример:
chattr -R +i /bin /sbin /usr/bin /usr/sbin — запрещаем изменение бинарников
chattr +a /var/log/secure — предотвращаем модификацию лога злоумышленником

Читайте также:  Не грузиться windows home

Для просмотра расширенных атрибутов используется утилита lsattr.

получаем:
stanislav@lexx4:/etc$ chattr +i resolv.conf
chattr: Неприменимый к данному устройству ioctl while reading flags on resolv.conf

смотрю свойства
stanislav@lexx4:/etc$ ls -l resolv.conf
-rw-r—r-T 1 root root 140 Дек 4 11:27 resolv.conf

создаём resolv.conf в Temp. пробуем
stanislav@lexx4:

/Temp$ ls -l resolv.conf
-rw-r—r— 1 stanislav stanislav 141 Дек 4 11:52 resolv.conf
stanislav@lexx4:

/Temp$ chattr +i resolv.conf
chattr: Неприменимый к данному устройству ioctl while reading flags on resolv.conf

а в чём собственно дело? как зафиксировать файл, если reiserfs ?

Re: запрет изменения файла

Сообщение sciko » 04.12.2009 12:23

Он русский и это многое объясняет.

Добавьте разделу attrs в опции монтирования.

Re: запрет изменения файла

Сообщение Brainsburn » 04.12.2009 12:26

Re: запрет изменения файла

Сообщение Poor Fred » 04.12.2009 12:27

Re: запрет изменения файла

Re: запрет изменения файла

Сообщение Poor Fred » 04.12.2009 13:01

Эти люди, мягко говоря, не совсем компетентны (хотя я на звание гуру вовсе не претендую).

Рассказывай, что ты не хочешь, чтобы там менялось, а перед этим посмотри внимательно /etc/dhclient/dhclient.conf (если у тебя Дебиан или клон и если я не сильно ошибаюсь с именем файла)

Re: запрет изменения файла

Сообщение sciko » 04.12.2009 13:22

Re: запрет изменения файла

глянул и не понял ничего. хотя там почти всё закоментировано, но как то передаётся на скрипт /sbin/dhclient-script, который пересоздаёт /etc/resolv.conf

а смысл в том, что воткнул второй сетевой кабель в комп и всё вроде работает, но до перезагрузки. если в файле переписать (или заменить на рабочую копию), опять хорошо.
так бы и ладно, но проявилась ещё проблема. пишу sudo aptitude update в консоли — Ош ftp://ftp.debian-multimedia.org sid Release.gpg Не удалось найти IP адрес для ftp.debian-multimedia.org
хотя пинг проходит нормально.

Re: запрет изменения файла

Сообщение Poor Fred » 05.12.2009 07:02

Re: запрет изменения файла

Re: запрет изменения файла

Сообщение mailman137 » 05.12.2009 12:57

Имхо, можно попробовать применить для /etc/dhcp3/dhclient.conf вот эту директиву со значением false

The do-forward-updates statement

If you want to do DNS updates in the DHCP client script (see dhclient-script(8)) rather than having the DHCP client do the
update directly (for example, if you want to use SIG(0) authentication, which is not supported directly by the DHCP client, you
can instruct the client not to do the update using the do-forward-updates statement. Flag should be true if you want the DHCP
client to do the update, and false if you don’t want the DHCP client to do the update. By default, the DHCP client will do
the DNS update.

Re: запрет изменения файла

Сообщение Poor Fred » 05.12.2009 13:31

Re: запрет изменения файла

Сообщение mailman137 » 05.12.2009 13:53

Re: запрет изменения файла

Сообщение Poor Fred » 05.12.2009 14:37

Сейчас под рукой конфига нет, там еще какие-то директивы, но в общем — да.

По-моему там еще директивы, что отправлять серверу. Но в данном случае они вроде не нужны, если провайдер ничего такого не требует.

Re: запрет изменения файла

что именно оставить?

Re: запрет изменения файла

Сообщение Poor Fred » 05.12.2009 15:46

domain-name, domain-name-servers, domain-search — это как раз то, что в /etc/resolv.conf прописывается. В нем нужно предварительно прописать требуемые сервера.

Re: запрет изменения файла

рано радовался. не знаю, что и как, но перезагрузился контрольный раз и опять по новой.

Re: запрет изменения файла

Сообщение Poor Fred » 06.12.2009 04:42

Поиграйся с опциями. Оставь минимальные запросы. Запускай вручную dhclient3 eth0 и смотри, когда и что изменяет resolv.conf. Почитай man dhclient.conf.

К примеру, вот мой конфиг (правда, на Фре):

Re: запрет изменения файла

Re: запрет изменения файла

Сообщение mailman137 » 06.12.2009 14:59

Источник

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