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


26

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

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

XXX @ XXX

root @ XXX」、

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

私は「sudoを」コマンドのマニュアルを確認する場合でも、ここで、それは「「sudoを-s」の別の物語は、缶誰が何であるかを私に説明説明にsudo -s」を正確にやって?



7
askubuntu.comを選ぶ理由 sudoあるほとんどのUbuntu固有の...
デイブSherohman

回答:


9

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

sudo $SHELL

ただし、設定されていない/bin/sh場合SHELLは、フォールバックまたは何かになります。


6

sudo -s$SHELL環境変数で指定されたシェルをスーパーユーザー/ルートとして実行します。を使用して別のユーザーを指定できます-u

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

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

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

3

マニュアルから:

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

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

さらに深刻なのは、sudo -sがシェル環境変数を実行することです。変数を追加しなかったため、passwdで指定されたとおりに実行され、rootとして接続します。


1
マニュアルからは、ユーザーを指定しない場合、デフォルトでrootになることは明らかではありません。あなたは-uそれを学ぶためにオプションの説明を読む必要があります。しかし、慣れていない人にとってはsudo、彼らは見ることを知らないでしょう-u
ウィスバッキー


0

現在のシェルの上にシェルの別のインスタンスを作成しているようですが、ルート権限があります。sudo -sexitと入力した後、元のシェルに戻ることは間違いないでしょう。


-1

sudo -sを使用すると、現在のIDの確認を求められる可能性があるため、事前に許可されているコマンド(/ etc / sudoersを参照)を実行できます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.