J'exécute les commandes suivantes dans 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:~#
Quel est l'effet de Sudo
dans la deuxième commande? Pourquoi root a-t-il besoin de Sudo
?
Ok, googler ceci, trouver cela réponse U&L , vérifier son historique des révisions et suivre la source citée dans le révision # 1 , cela se trouve être un bug Upstart ; le problème est que lors du passage à root exécutant su
le $UPSTART_SESSION
La variable d'environnement est reprise de l'environnement précédent au lieu d'être à nouveau définie.
Après m'être beaucoup cogné la tête et googlé, j'ai trouvé un article ( https://unix.stackexchange.com/questions/120050/Sudo-service-vsftpd-returns-unknown-job-vsftpd ) montrant que
Sudo service xxxx start
(ou arrêter ou redémarrer)fonctionne, tandis que
`service xxxx start (dans une session su)
ne marche pas.
Donc, le coupable était clairement l'environnement: si vous allez root avec "su" au lieu de "Sudo su" ou "su -", "service" ne fonctionne pas non plus correctement, car "su" transportera la plupart de votre environnement utilisateur normal à la session racine.
Après quelques tests, j'ai constaté que le coupable est la variable d'environnement UPSTART_SESSION, qui est définie lorsque vous "su", mais pas lorsque vous "Sudo su" ou "su -". Voici quelques résultats de tests:
-- ne marche pas
jsveiga@Dell:~$ su Password: root@Dell:/home/jsveiga# service smbd restart stop: Unknown job: smbd start: Unknown job: smbd
- fonctionne même à partir d'une session su
root@Dell:/home/jsveiga# Sudo service smbd restart smbd stop/waiting smbd start/running, process 3823
-- travaux
root@Dell:/home/jsveiga# exit jsveiga@Dell:~$ Sudo su root@Dell:/home/jsveiga# service smbd restart smbd stop/waiting smbd start/running, process 3862
-- travaux
root@Dell:/home/jsveiga# exit jsveiga@Dell:~$ su - Password: root@Dell:~# service smbd restart smbd stop/waiting smbd start/running, process 3905
- aller su puis désactiver les travaux 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
Ainsi, les scripts de démarrage/d'arrêt échouent en quelque sorte simplement par la présence de
UPSTART_SESSION
variable d'environnement.BR, Joao S Veiga
Pour résoudre ce problème, désactivez simplement $UPSTART_SESSION
:
unset UPSTART_SESSION
ou basculez vers root par d'autres moyens, comme su -
, Sudo su
ou Sudo -i
.
Dans ce contexte, cela ne signifie rien et devrait être supprimé. Sans spécifier un autre utilisateur, Sudo
essaie de devenir root, et donc si vous êtes déjà root, c'est un no-op, autre que la création d'un processus supplémentaire (pour Sudo
lui-même) qui occupe certaines ressources jusqu'à ce que la commande qu'il exécute se termine.