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

sudo2 番目のコマンドのの効果は何ですか? root に が必要なのはなぜですかsudo?

答え1

よし、グーグルでこれを見つけてU&Lの回答、そのチェック改訂履歴そして、引用された情報源に従って改訂版 #1、これはたまたまアップスタートバグ問題は、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セッション内)

動作しません。

したがって、原因は明らかに環境でした。「sudo su」または「su -」ではなく「su」を使用してルート権限を取得すると、「service」も正しく機能しません。「su」は、通常のユーザー環境のほとんどをルート セッションに持ち込むためです。

いくつかのテストを行った結果、原因は 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、ジョアン・S・ベイガ

これを修正するには、設定を解除するだけです$UPSTART_SESSION:

unset UPSTART_SESSION

またはsu -、、sudo suまたはなどの他の手段でルートに切り替えますsudo -i

答え2

このコンテキストでは、これは何も意味しないので削除する必要があります。他のユーザーを指定せずに、sudoroot になろうとします。そのため、すでに root になっている場合は、実行中のコマンドが完了するまでリソースを占有する追加のプロセス (自分自身用) を作成する以外は何sudoも行いません。

関連情報