web-dev-qa-db-ja.com

Sudo -sコマンドは正確には何ですか?この例ではどのように使用されていますか?

私は次の疑問を持っています。私がフォローしているソフトウェアのインストールに関連するチュートリアルでは、次のコマンドを実行する必要があると言っています(sshシェルで実行しているので、この手順のリストはexitコマンド):

Sudo -s
apt-get update
apt-get install -y build-essential libtool libcurl4-openssl-dev libncurses5-dev libudev-dev autoconf automake screen
exit

私の疑問は次のとおりです。

Sudoコマンドの後に-s parametherは正確に何をしますか?

Webで検索すると、次のことがわかりました。

‑ s [command] ‑s(Shell)オプションは、シェル環境変数が設定されている場合はそのシェル、またはパスワードデータベースで指定されているシェルを実行します。コマンドが指定されている場合、コマンドはシェルの‑cオプションを介して実行するためにシェルに渡されます。コマンドが指定されていない場合、インタラクティブシェルが実行されます

Sudo -sシェルの環境変数を使用してコマンドを実行しているように見えます。

しかし、これは私には明らかではありません。この場合、環境変数を使用して実行されるコマンドは何ですか? (Sudo -sのみを実行し、** Sudo -s [コマンド]は実行しません)。

それが何をするのか正確に説明してもらえますか?

Tnx

2
AndreaNobili

マニュアルページを引用すると、-sオプションは、シェル環境変数で指定されたシェルを実行します。だからもし

echo $Shell
/bin/bash

が設定されている場合、Sudo-sは実行と同等になります

Sudo -Eu root  /bin/bash

つまり、環境変数を保持しながら、シェル/ bin/bashをユーザーrootとして実行します。

3
nohup

オプションがない場合、基本的にSudo -s $Shellと同等です。 $ Shellは通常、現在のシェルへのパスです。 Linuxでは、これは通常/bin/bashですが、他の多くのシェルの1つである可能性もあります。

1
Zoredache

Sudo -sは、(Shell環境変数によって)昇格された特権でシェルを開始します。

多くの場合、これはSudo bashの実行に似ており、rootとして機能できるシェルを提供します。

Sudo -sの後にコマンドも指定すると、コマンドはその昇格されたシェルで実行されます。

1
Der Hochstapler