web-dev-qa-db-ja.com

「sudo -s」は実際には何をしますか?

私はubuntu 10.04を使用しています。

ターミナルで「Sudo -s」を実行した後、プロンプトが

XXX @ XXX

"root @ XXX"、

ルート権限に変更されたようです。

しかし、「Sudo」コマンドのドキュメントを確認すると、 ここ は、「Sudo -s」の別のストーリーを説明しています。誰かが「Sudo -s "正確にやっていますか?

26
Leem

2つは実際には矛盾していません-Sudoコマンドは常にユーザーをrootまたは-uスイッチで指定したユーザーに変更します。 -sが行うことは、そのユーザーとしてシェルを起動するためのショートカットを提供することだけです。それは本当に以下と同等です:

Sudo $Shell

ただし、Shellが設定されていない場合は、/bin/shまたは何かにフォールバックする可能性があります。

9
TomH

_Sudo -s_は、スーパーユーザー/ルートとして_$Shell_環境変数で指定されたシェルを実行します。 _-u_を使用して別のユーザーを指定できます。

_$Shell_環境変数には、ユーザーのデフォルトのログインシェルへのパスが含まれています。デフォルトのシェルプログラムの実際の設定は、通常_etc/passwd_にあります。現在のセッションで実行した内容によっては、$ Shell変数に現在使用しているシェルプログラムが含まれていない場合があります。たとえばzshで自動的にログインし、その後bashを呼び出した場合、$ Shellは_/bin/zsh_から変更されません。

現在のユーザーとシェルプログラムを表示:echo $(whoami) is logged in and Shell is $0

  • whoamiは、ユーザーが使用しているユーザー名を出力します。
  • _$0_には、現在実行中のプログラム(この場合はシェルプログラム)の名前/パスが含まれます。
7
RKelley

マニュアルから:

Sudoにより、許可されたユーザーは、sudoersファイルで指定されているように、スーパーユーザーまたは別のユーザーとしてコマンドを実行できます。

-s Shell、設定されている場合はShell環境変数で指定されたシェル、またはpasswd(5)で指定されたシェルを実行します。

さらに真剣に、Sudo -sはシェル環境変数を実行します。変数を追加しなかったので、passwdで指定されたように実行され、ルートとして接続します。

3

スーパーユーザーからのこの投稿を見てください:

「su -s」コマンドと「Sudo -s」コマンドの違いは何ですか?

ちなみに、投稿はスーパーユーザー(またはコメントで述べたようにaskubuntu)に移動する必要があります。

1
jopasserat

現在のシェルの上にシェルの別のインスタンスを作成しているようですが、root権限が必要です。あなたがした後で私はそれに賭けるでしょうSudo -s exitと入力すると、元のシェルに戻ります。

0
Noah Duncan