3

Я столкнулся с проблемами DNS на моем сервере и, наконец, подумал о перезапуске сетевой службы.

root@labadmin-VirtualBox:~# service network-manager restart
stop: Unknown job: network-manager
start: Unknown job: network-manager

Мне было интересно, доступна ли эта служба или нет, и провел некоторые исследования, чтобы решить эту проблему. Я подумал попробовать добавить sudo при выполнении команды, и это сработало.

root@labadmin-VirtualBox:~# sudo service network-manager restart
network-manager stop/waiting
network-manager start/running, process 5711

Может кто-нибудь объяснить мне, в чем разница в выполнении команды при выполнении от имени пользователя root с sudo и без него?

2 ответа2

2

Похоже, что это была общая проблема для Ubuntu на этапе Upstart. Проблема заключается в том, как передаются переменные среды выскочки в зависимости от того, используете ли вы sudo для получения прав root или su для получения прав root. Это была странность Upstart, что я не думаю, что когда-либо был исправлен.

$ env|grep UPST
UPSTART_SESSION=unix:abstract=/com/ubuntu/upstart-session/1000/21059
UPSTART_INSTANCE=
UPSTART_EVENTS=xsession started
UPSTART_JOB=unity7

Если вы хотите запросить статус заданий системного уровня, вы должны иметь возможность использовать status --system для переопределения переменных среды.

Источник: https://bugs.launchpad.net/upstart/+bug/1481967

-1

Root - это учетная запись пользователя с самыми высокими привилегиями, в которой у вас всегда есть привилегии root. Пользователь root отличается от обычного пользователя.

Если вы запускаете sudo для учетной записи root, это избыточно и не должно иметь значения, если только пользователю root явно не предоставлены привилегии более низкого уровня.

Если вы запускаете sudo для учетной записи пользователя, пользователь получает права root для команды, которая запускается с помощью sudo.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .