А как насчет:
sudo -Eu <user> <command>
Вы жаловались на среду в предыдущем комментарии , так что вы также можете сравнить различия между выходами:
sudo -u <user> printenv
sudo -Eu <user> printenv
Преамбула:ip
и ifconfig
являются утилитами для управления и мониторинга сети. Обычно они не используются для чтения/записи постоянных файлов конфигурации -, поэтому ip link
не работает. Постоянное управление конфигурацией должно выполняться другими средствами, такими как NetworkManager
.
(Скорее всего, нет необходимости говорить об этом, но, как примечание, iproute2
, который обеспечивает ip
, , был принят или принимается многими дистрибутивами в качестве замены для net-tools
, который обеспечивает ifconfig
. Они часто поставляются как пакеты по умолчанию в дистрибутивах из соображений совместимости ).
Почему ifup
сработало, а systemctl restart NetworkManager
нет:
В CentOS (Я проверил для CentOS 7 ), ifup
и ifdown
предоставлены initscripts
; они работают со сценариями в /etc/sysconfig/network-scripts/
, предоставленными тем же пакетом. Таким образом, неудивительно, что ifup
можно применить сделанные там изменения.
NetworkManager -поставщик сетевых услуг по умолчанию, унаследованный CentOS от восходящего потока -в Red Hat и Fedora, настроен на использование подключаемого модуля ifcfg-rh
для чтения/записи конфигурации сети из /etc/sysconfig/network-scripts/ifcfg-*
.Но он не отслеживает эти файлы.
man nm-settings-ifcfg-rh
предупреждает, что
Users can create or modify the ifcfg-rh connection files manually, even if that is not the recommended way of managing the profiles. However, if they choose to do that, they must inform NetworkManager about their changes (see monitor-connection-file in nm-settings(5), and nmcli con (re)load).
Таким образом, systemctl reload NetworkManager
не должен перезагружать конфигурацию сетевого соединения из файла в CentOS. Для этого вы можете вызвать nmcli connection reload
или изменить конфигурацию NetworkManager
, как указано в man NetworkManager.conf
:
monitor-connection-files
Whether the configured settings plugin(s) should set up file monitors and immediately pick up changes made to connection files while NetworkManager is running. This is disabled by default; NetworkManager will only read the connection files at startup, and when explicitly requested via the ReloadConnections D-Bus call. [...]
ip
напрямую изменяет состояние оборудования, как и ifconfig
. Единственная разница между ifconfig
и ip
заключается в том, что ip
имеет другой синтаксис и поддерживает некоторые функции, которые ifconfig
не поддерживают.
ifup
и ifdown
, с другой стороны, запускайте множество сценариев, читайте ваш файл /etc/network/interfaces
и другие файлы конфигурации и действуйте в соответствии с этим. Это включает в себя добавление статических настроек IP, которые вы, вероятно, поместили в /etc/network/interfaces
.
В принципе, Network Manager также должен их обрабатывать, но я не запускаю Network Manager (большую часть времени, когда он мне мешает ), поэтому я не могу сказать, почему он не работает. т работать.
Поэтому :, если вы хотите, чтобы ваши файлы конфигурации сети учитывались, используйте ifup
/ ifdown
и Network Manager. Если вы хотите напрямую изменить настройки интерфейса, используйте ip
и ifconfig
.