Подробный гайд: Не редактируется /etc/sysconfig/network в Linux: причины и подробное решение
Файл конфигурации сети в директории /etc/sysconfig/network-scripts/ (обычно это файлы вида ifcfg-eth0, ifcfg-enp3s0 и т.д.) не дает себя редактировать, может быть вызвана несколькими причинами.
Ниже представлен подробный гайд по диагностике и решению этой проблемы, от самых частых и простых к более редким.
Причина 1: Недостаточно прав (Режим "Только для чтения" в редакторе)
Если вы открыли файл обычным пользователем, система позволит вам его прочитать, но не даст сохранить изменения. В редакторе vi/vim при попытке сохранения (:w) будет выдаваться ошибка E212: Can't open file for writing или Read-only.
Решение:
Открывайте файл исключительно через sudo или от имени суперпользователя root.
# Используем nano (проще для новичков)
sudo nano /etc/sysconfig/network-scripts/ifcfg-eth0
# Или используем vi/vim
sudo vi /etc/sysconfig/network-scripts/ifcfg-eth0
(Замените ifcfg-eth0 на имя вашего реального интерфейса, которое можно посмотреть командой ip a).
Причина 2: Особенности работы в редакторе Vi/Vim
Если вы используете vi или vim и при открытии файла не можете вводить текст (стрелки работают, но буквы не печатаются, или внизу написано -- INSERT -- отсутствует), значит, вы находитесь не в том режиме.
Решение:
- Чтобы начать печатать текст, нажмите клавишу
i(перейдете в режим Insert). Внизу слева появится надпись-- INSERT --. - Внесите нужные изменения.
- Чтобы сохранить и выйти: нажмите
Esc(выйдете из режима ввода), затем наберите:wqи нажмитеEnter. - Если нужно выйти без сохранения:
Esc, затем:q!иEnter.
Причина 3: Файл защищен атрибутом "неизменяемости" (Immutable)
Иногда администраторы или специфические скрипты блокируют файлы от изменений даже для root, устанавливая атрибут i (immutable). В этом случае sudo не поможет, а vi может открыть файл в режиме только для чтения.
Решение:
1. Проверьте атрибуты файла командой:
lsattr /etc/sysconfig/network-scripts/ifcfg-eth0
- Если в выводе вы видите букву
i(например,----i---------e----), значит, файл заблокирован.
3. Снимите блокировку:
sudo chattr -i /etc/sysconfig/network-scripts/ifcfg-eth0
4. После этого файл можно будет редактировать. (Не забудьте вернуть атрибут обратно, если это было сделано в целях безопасности: sudo chattr +i ...).
Причина 4: Файловая система смонтирована только для чтения (Read-Only)
Если на сервере произошел сбой, переполнение диска или ошибка файловой системы, Linux в целях защиты автоматически перемонтирует корневой раздел (/) в режим "только для чтения" (RO). В этом случае вы не сможете изменить ни один файл в /etc/.
Решение:
1. Проверьте статус монтирования:
mount | grep -E '\s+/\s+'
Если в скобках указано (ro, ...) вместо (rw, ...), значит файловая система в режиме Read-Only.
2. Попробуйте перемонтировать её в режим чтения/записи:
sudo mount -o remount,rw /
3. Если команда выдает ошибку, значит на диске есть ошибки. Потребуется перезагрузка сервера и проверка файловой системы через fsck (обычно это делается в режиме восстановления / Rescue mode).
Причина 5: Современные реалии (NetworkManager в CentOS 8 / RHEL 8 / Alma / Rocky)
Если вы используете современную версию ОС (RHEL/CentOS 8 и новее), ручное редактирование файлов ifcfg-* в /etc/sysconfig/network-scripts/ не рекомендуется и часто игнорируется или перезаписывается службой NetworkManager. Файлы могут быть помечены как управляемые только через API.
Решение (использование встроенных утилит):
Вместо ручного правки текста, используйте текстовый интерфейс NetworkManager:
sudo nmtui
- В появившемся меню выберите Edit a connection (Изменить подключение).
- Выберите ваш интерфейс, нажмите Edit.
- Внесите изменения (IP, шлюз, DNS) с помощью стрелок и пробела.
- Сохраните (OK) и выйдите.
Или используйте командную строку nmcli. Например, чтобы задать статический IP:
sudo nmcli connection modify "имя_подключения" ipv4.addresses "192.168.1.100/24"
sudo nmcli connection modify "имя_подключения" ipv4.gateway "192.168.1.1"
sudo nmcli connection modify "имя_подключения" ipv4.method manual
Как применить изменения после редактирования?
Для старых систем (CentOS 7, RHEL 7) с классической службой network:
sudo systemctl restart network
# или перезапустить конкретный интерфейс:
sudo ifdown eth0 && sudo ifup eth0
Для новых систем (CentOS 8+, RHEL 8+, Ubuntu/Debian с NetworkManager):
# Перечитать конфигурацию
sudo nmcli connection reload
# Перезапустить подключение (укажите имя из nmcli con show)
sudo nmcli connection up "имя_вашего_подключения"
Если ни один из способов не помог, напишите, какую именно ошибку выдает система или редактор при попытке сохранения, и я подскажу решение!
Мы делимся этой технической информацией, чтобы помочь вам в решении задач — используйте её с пониманием. Статья носит рекомендательный характер, поэтому, пожалуйста, применяйте описанные методы осмотрительно.