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

Как запретить удалять нужные файлы, но разрешить создавать/изменять/удалять прочие файлы?

Допустим, есть такая файловая система 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, обратной командой.

Источник

unixforum.org

Команда 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 — предотвращаем модификацию лога злоумышленником

Читайте также:  Midnight commander linux размер папки

Для просмотра расширенных атрибутов используется утилита 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 в опции монтирования.

Brainsburn Сообщения: 949 Статус: / ОС: LFS,Gentoo Контактная информация:

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

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

Poor Fred Сообщения: 1575 Статус: Pygoscelis papua ОС: Gentoo Linux, FreeBSD

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

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

Уже в который раз вижу, как люди пытаются заблочить /etc/resolv.conf. На кой? Разберитесь лучше с конфигом программы, которая его изменяет! Держу пари, что это клиент DHCP.

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

Уже в который раз вижу, как люди пытаются заблочить /etc/resolv.conf. На кой? Разберитесь лучше с конфигом программы, которая его изменяет! Держу пари, что это клиент DHCP.

Poor Fred Сообщения: 1575 Статус: Pygoscelis papua ОС: Gentoo Linux, FreeBSD

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
хотя пинг проходит нормально.

Poor Fred Сообщения: 1575 Статус: Pygoscelis papua ОС: Gentoo Linux, FreeBSD

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

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

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

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

2 сетевухи, 2 провайдера. 1- инет, 2-локалка.
всё прописано в /etc/network/interfaces
обе сетевые получают по dhcp
запросы и ответы идут правильно
при перезагрузке файл /etc/resolv.conf перезаписывается на dns-сервер 2 провайдера и инет не пашет.
вручную переписываю файл — инет опять есть, но aptitude не находит серверов, хотя пинг до них проходит.

Читайте также:  Как создать линукс на флешке

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.

Poor Fred Сообщения: 1575 Статус: Pygoscelis papua ОС: Gentoo Linux, FreeBSD

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

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

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

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

Poor Fred Сообщения: 1575 Статус: Pygoscelis papua ОС: Gentoo Linux, FreeBSD

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

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

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

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

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

request subnet-mask, broadcast-address, time-offset, routers,
domain-name, domain-name-servers, domain-search, host-name,
netbios-name-servers, netbios-scope, interface-mtu,
rfc3442-classless-static-routes, ntp-servers;

Poor Fred Сообщения: 1575 Статус: Pygoscelis papua ОС: Gentoo Linux, FreeBSD

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

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

request subnet-mask, broadcast-address, time-offset, routers, host-name, netbios-name-servers, netbios-scope, interface-mtu, rfc3442-classless-static-routes, ntp-servers;

Достаточно будет, хотя не факт, что провайдер все эти данные дает. Но не помешают, во всяком случае. Минимум:

request subnet-mask, broadcast-address, routers,host-name; require subnet-mask, broadcast-address, routers;

Директива require задает что обязательно должно быть получено. Хотя сама она не обязательна. Как и строка

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

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

request subnet-mask, broadcast-address, time-offset, routers, host-name, netbios-name-servers, netbios-scope, interface-mtu, rfc3442-classless-static-routes, ntp-servers;

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

Poor Fred Сообщения: 1575 Статус: Pygoscelis papua ОС: Gentoo Linux, FreeBSD

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

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

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

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

# cat /etc/dhclient.conf interface "fxp0" < prepend domain-name-servers 127.0.0.1; prepend domain-name "mydomain"; request subnet-mask, broadcast-address, time-offset, routers, domain-name-servers; require subnet-mask, domain-name-servers; >lease

У меня свой DNS-сервер (а он уже форвардит к провайдерским) и свое имя хоста, поэтому мне не хотелось получать их от провайдера.

Читайте также:  Диск uuid узнать linux

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

в принципе, пока не решился этот вопрос, может подскажете, что делать с аптитуде? напомню, что когда и инет и локалка есть и браузер обе сети видит и пинг до всего есть, аптитуде не может update сделать. пишет не вижу сервера. .

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

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

Как подружить pppd и resolv.conf

Живу в общежитии с локальной сетью примерно на 2-3 тысячи машин. В сети так же имеется локальный DNS сервер и некоторое количество локальных ресурсов, для которых на этом DNS сервере существуют соответствующие записи. Подразумевается, что этот DNS сервер может ресолвить как внешние адреса, так и локальные. Выходом во «внешний мир» для меня служит VPN соединение провайдера, доступного в этой локальной сети. Проблема заключается в том, что после поднятия ppp интерфейса pppd перетирает глобальный /etc/resolv.conf своим, который содержит только две записи, полученные от провайдера и знать не знающие о наших локальных ресурсах.

Так как мне надоело каждый раз после поднятия ppp интерфейса вручную править /etc/resolv.conf, решил разобраться как заставить pppd не заменять этот файл своим.

Решение проблемы нашел только одно. Это убрать из файла настроек pppd (у меня это /etc/ppp/options) строку usepeerdns. Эта строка заставляет pppd запросить у провайдера адреса двух DNS серверов и передать их в скрипт /etc/ppp/ip-up в качестве переменных DNS1 и DNS2. Так же эта опция передает в этот же скрипт параметр USEPEERDNS со значением 1. После этого скрипт /etc/ppp/ip-up.d/0000usepeerdns перезаписывает файл /etc/resolv.conf своим, содержащим полученные адреса DNS серверов.

Poor Fred Сообщения: 1575 Статус: Pygoscelis papua ОС: Gentoo Linux, FreeBSD

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

Сообщение Poor Fred » 06.12.2009 16:53

в принципе, пока не решился этот вопрос, может подскажете, что делать с аптитуде? напомню, что когда и инет и локалка есть и браузер обе сети видит и пинг до всего есть, аптитуде не может update сделать. пишет не вижу сервера. .

Наверняка дело в неправильных маршрутах. Попробуй для начала пропинговать и протрассировать эти сервера, которых он не видит. Просмотри маршруты route -n. Доступны ли DNS-серверы, прописанные в resolv.conf?
Короче, так однозначно не скажешь, в чем проблема.

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

вобщем всё решилось изменением /etc/dhcp3/dhclient.conf на

option rfc3442-classless-static-routes code 121 = array of unsigned integer 8;
send host-name «ionitcom.ru»;

prepend domain-name-servers 172.18.0.1, 172.18.1.1;

request subnet-mask, broadcast-address, time-offset, routers,
netbios-name-servers, netbios-scope, interface-mtu,
domain-name, domain-name-servers, domain-search, host-name,
rfc3442-classless-static-routes, ntp-servers;

т е он автоматом дописывает в /etc/resolv.conf то, что тому не хватает.

всё работает, только напрягает

Источник

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