루트의 경우 'sudo'는 무엇을 의미합니까?

루트의 경우 'sudo'는 무엇을 의미합니까?

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두 번째 명령 의 효과는 무엇입니까 ? 왜 루트가 필요합니까 sudo?

답변1

응, 구글링해서 이걸 찾아냈어U&L 답변, 확인 중개정 내역그리고 인용된 소스를 따라가면개정판 #1, 이것은 우연히신생 버그; 문제는 루트 실행으로 전환할 때 환경 변수가 다시 설정되는 대신 이전 환경에서 전달된다는 것 su입니다 $UPSTART_SESSION.

열심히 검색하고 검색한 끝에 게시물을 발견했습니다(https://unix.stackexchange.com/questions/120050/sudo-service-vsftpd-returns-unknown-job-vsftpd) 이를 보여주는

sudo service xxxx start(또는 중지하거나 다시 시작)

작동하는 동안

`service xxxx start(su 세션에서)

작동하지 않습니다.

따라서 범인은 분명히 환경이었습니다. "sudo su" 또는 "su -" 대신 "su"를 사용하여 루트로 이동하면 "su"가 일반 사용자 환경의 대부분을 수행하므로 "service"도 제대로 작동하지 않습니다. 루트 세션으로.

몇 가지 테스트를 거친 후, "su"를 실행할 때는 설정되지만 "sudo su" 또는 "su -"를 사용할 때는 설정되지 않는 UPSTART_SESSION 환경 변수가 원인이라는 사실을 발견했습니다. 다음은 몇 가지 테스트 결과입니다.

-- 작동하지 않습니다

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, Joao S Veiga

이 문제를 해결하려면 설정을 해제하세요 $UPSTART_SESSION.

unset UPSTART_SESSION

또는 su -, 와 같은 다른 방법으로 루트로 전환하세요 .sudo susudo -i

답변2

그러한 맥락에서는 아무 의미가 없으므로 제거해야 합니다. 다른 사용자를 지정하지 않고 루트가 되려고 시도하므로 이미 루트인 경우 실행 중인 명령이 완료될 때까지 일부 리소스를 차지하는 sudo추가 프로세스(자체)를 만드는 것 외에는 아무 작업도 하지 않습니다 .sudo

관련 정보