Я заметил, что администратор сети часто изменял мой сервер 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
файл?
/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
.
Этот ответ обращается к некоторым проблемам в ответе Косом.
Поскольку /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
эффективно выполненный, когда система является ре/запускать. Оба необходимы.