was bedeutet „sudo“ für Root?

was bedeutet „sudo“ für Root?

Ich führe die folgenden Befehle in Ubuntu 14.04 aus:

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:~#

Welchen Effekt hat sudoder zweite Befehl? Warum braucht root sudo?

Antwort1

Ok, googeln Sie dies, finden Sie diesU&L-Antwort, überprüft seineRevisionsverlaufund gemäß der zitierten Quelle imRevision #1, das ist zufällig einUpstart-Fehler; das Problem besteht darin, dass beim Wechsel zur Root-Ausführung sudie $UPSTART_SESSIONUmgebungsvariable aus der vorherigen Umgebung übernommen wird, anstatt erneut festgelegt zu werden.

Nach langem Kopfzerbrechen und Googeln habe ich einen Beitrag gefunden (https://unix.stackexchange.com/questions/120050/sudo-service-vsftpd-returns-unknown-job-vsftpd) Zeigt das

sudo service xxxx start(oder stoppen oder neu starten)

funktioniert, während

`service xxxx starten (in einer su-Sitzung)

funktioniert nicht.

Der Übeltäter war also eindeutig die Umgebung: Wenn Sie sich mit „su“ statt mit „sudo su“ oder „su -“ als Root anmelden, funktioniert auch „service“ nicht richtig, da „su“ den Großteil Ihrer normalen Benutzerumgebung in die Root-Sitzung überträgt.

Nach einigen Tests habe ich herausgefunden, dass der Übeltäter die Umgebungsvariable UPSTART_SESSION ist, die gesetzt wird, wenn Sie „su“ verwenden, aber nicht, wenn Sie „sudo su“ oder „su -“ verwenden. Hier sind einige Testergebnisse:

-- funktioniert nicht

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

-- funktioniert sogar aus einer Su-Sitzung

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

-- funktioniert

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

-- funktioniert

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

-- mit su zu arbeiten und dann UPSTART_SESSION aufzuheben funktioniert

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

Daher schlagen die Start-/Stopp-Skripte allein aufgrund der Anwesenheit der UPSTART_SESSIONUmgebungsvariable fehl.

BR, Joao S Veiga

Um dies zu beheben, heben Sie einfach die Einstellung auf $UPSTART_SESSION:

unset UPSTART_SESSION

oder wechseln Sie auf andere Weise zum Root-Benutzer, z. B. per su -, sudo suoder sudo -i.

Antwort2

In diesem Kontext bedeutet es nichts und sollte entfernt werden. Ohne Angabe eines anderen Benutzers sudoversucht es, Root zu werden. Wenn Sie also bereits Root sind, ist das ein No-Op, abgesehen davon, dass ein zusätzlicher Prozess (für sudosich selbst) erstellt wird, der einige Ressourcen belegt, bis der von ihm ausgeführte Befehl beendet ist.

verwandte Informationen