Не мог изменить атрибуты файла (например, неизменный) на/etc/resolv.conf

Я заметил, что администратор сети часто изменял мой сервер DNS, таким образом, я хотел установить неизменный бит на /etc/resolv.conf файл, который не работал. Я заметил что /etc/resolv.conf файл является на самом деле символьной ссылкой на /run/resolvconf/resolv.conf.

Теперь, sudo chattr +i /run/resolvconf/resolv.conf результаты в:

chattr: Inappropriate ioctl for device while reading flags on /run/resolvconf/resolv.conf

Из того, что я могу сказать, это означает это /run/resolvconf/ не поддерживает такие атрибуты. Это правильно?

Xubuntu 15.10;

Как я могу защитить мой от записи resolv.conf файл?

3
задан 12 February 2016 в 13:55

2 ответа

/run a tmpfs (электронный диск) файловая система, и не поддерживает расширенные атрибуты:

% df -T /run
Filesystem     Type  1K-blocks  Used Available Use% Mounted on
tmpfs          tmpfs    393016  6416    386600   2% /run

На том, как избежать /etc/resolv.conf будучи измененным NetworkManager, я нашел возможное решение в Дуге форумами Linux.

Создайте a resolv.conf файл, содержащий настройки, которые Вы хотите сохранить где-нибудь в Вашей системе (говорят в /etc/resolv.conf.DNSoverride) и вставленный в этот сценарий /etc/NetworkManager/dispatcher.d:

#! /bin/sh
cp -f /etc/resolv.conf.DNSoverride /etc/resolv.conf

Сценарий, заключая в кавычки man networkmanager:

[...] должен быть регулярный исполняемый файл, принадлежавший корню. Кроме того, это не должно быть перезаписываемо группой или другим, и не setuid. [...]

Заключение в кавычки man networkmanager:

[...] NetworkManager выполнит сценарии в/etc/NetworkManager/dispatcher.d каталоге или подкаталогах в алфавитном порядке в ответ на сетевые события. [...]

Это означает, что сценарий скопирует /etc/resolv.conf.DNSoverride перезапись /etc/resolv.conf каждый раз сетевое событие происходит, переопределяя возможные изменения, внесенные в /etc/resolv.conf.

2
ответ дан 1 December 2019 в 16:59

Этот ответ обращается к некоторым проблемам в ответе Косом.

Поскольку /etc/resolv.conf символьная ссылка, переопределение ее непосредственно может вызвать ошибку когда resolvconf -u автоматически выполняется.

Во-первых, создайте свою замену resolv.conf.override как ниже. Это предназначается для замены resolv.conf. Соответствуйте полномочиям и владельцу как указано ниже:

$ ll /etc/resolv.conf.override
-rwxrwxrwx 1 root root 172 Jun 26 20:38 resolv.conf.override*

Затем, создайте сценарий такой как 20-resolv-conf-override. Соответствуйте полномочиям и владельцу как ниже.

$ cd /etc/NetworkManager/dispatcher.d
$ ll 20-resolv-conf-override
-rwxr-xr-x 1 root root 101 Jun 26 20:45 20-resolv-conf-override*

$ cat 20-resolv-conf-override
#!/bin/sh
cp -f /etc/resolv.conf.override /run/resolvconf/resolv.conf

$ sudo ln -f 20-resolv-conf-override ./pre-up.d/

Сценарии в dispatcher.d выполненный, когда NetworkManager ре/запускать. Напротив, сценарии в dispatcher.d/pre-up.d эффективно выполненный, когда система является ре/запускать. Оба необходимы.

0
ответ дан 1 December 2019 в 16:59

Другие вопросы по тегам:

Похожие вопросы: