что означает «sudo» для root?

что означает «sudo» для root?

Я запускаю следующие команды в Ubuntu 14.04:

root@ubuntu:~# service rpki-ca restart 
stop: Unknown job: rpki-ca
start: Unknown job: rpki-ca
root@ubuntu:~# sudo service rpki-ca restart 
rpki-ca stop/waiting
rpki-ca start/running
root@ubuntu:~#

Какой эффект sudoво второй команде? Зачем root нужен sudo?

решение1

Ок, гуглю это, нахожу этоответ U&L, проверяя егоистория измененийи следуя цитируемому источнику вредакция №1, это случаетсяОшибка Upstart; проблема в том, что при переключении в режим root переменная suсреды $UPSTART_SESSIONпереносится из предыдущей среды, а не устанавливается заново.

После долгих раздумий и гугления я нашел пост (https://unix.stackexchange.com/questions/120050/sudo-service-vsftpd-returns-unknown-job-vsftpd) показывая, что

sudo service xxxx start(или остановить, или перезапустить)

работает, пока

`service xxxx start (в сеансе su)

не работает.

Таким образом, виновником явно была среда: если вы входите в систему как пользователь root с помощью «su» вместо «sudo su» или «su -», «service» также не будет работать правильно, поскольку «su» перенесет большую часть вашей обычной пользовательской среды в сеанс root.

После некоторых тестов я обнаружил, что виновником является переменная среды UPSTART_SESSION, которая устанавливается, когда вы "su", но не устанавливается, когда вы "sudo su" или "su -". ​​Вот некоторые результаты тестов:

-- не работает

jsveiga@dell:~$ su
Password:
root@dell:/home/jsveiga# service smbd restart
stop: Unknown job: smbd
start: Unknown job: smbd

-- работает даже из сеанса su

root@dell:/home/jsveiga# sudo service smbd restart
smbd stop/waiting
smbd start/running, process 3823

-- работает

root@dell:/home/jsveiga# exit
jsveiga@dell:~$ sudo su
root@dell:/home/jsveiga# service smbd restart
smbd stop/waiting
smbd start/running, process 3862

-- работает

root@dell:/home/jsveiga# exit
jsveiga@dell:~$ su -
Password:
root@dell:~# service smbd restart
smbd stop/waiting
smbd start/running, process 3905

-- переход на su, а затем отмена настройки UPSTART_SESSION работает

root@dell:/home/jsveiga# exit
jsveiga@dell:~$ su
Password:
root@dell:/home/jsveiga# service smbd restart
stop: Unknown job: smbd
start: Unknown job: smbd
root@dell:/home/jsveiga# unset UPSTART_SESSION
root@dell:/home/jsveiga# service smbd restart
smbd stop/waiting
smbd start/running, process 4244

Таким образом, скрипты запуска/остановки каким-то образом терпят неудачу просто из-за наличия UPSTART_SESSIONпеременной окружения.

BR, Жуан С. Вейга

Чтобы исправить это, просто отмените $UPSTART_SESSION:

unset UPSTART_SESSION

или переключиться на root-доступ другими способами, например su -, , sudo suили sudo -i.

решение2

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

Связанный контент