web-dev-qa-db-ja.com

なぜSudobashが必要なのですか?

私は次のコードを読んでいました:

$ Sudo bash
# cd /home/
# ./gitpull.sh

なぜ最初の行が必要なのですか、それは正確に何をしますか? $ Sudo の代わりに $ Sudo bash

3
David542

rootレベルのユーザーとしてbashシェルを起動します。通常のユーザーは/home/にアクセスできないため、これが必要です。

あなたがしていることの危険性はあなたがルートシェルにいることです-あなたはあなたのマシンをかなり簡単に台無しにすることができます。

7
hvgotcodes

あなたはやったほうがはるかに良いでしょう:

$ Sudo sh -c 'cd /home; ./gitpull.sh'

Rootとして呼び出されたコマンドがログに記録されるためです。 Sudoを介して直接シェルを呼び出すと、Sudoのセキュリティ上の利点がすべて回避されるため、回避する必要があります。

3
William Pursell

悪名高いSudoは、SuperuserDoの頭字語です。

それは基本的に普通のユーザーをしばらくの間スーパーユーザーにします。

コマンドSudo bashでは、事実上、スーパーユーザーが実行する->シェルにログインしているrootユーザーを開くBourneシェル(bash)を実行しています。

Sudoを実行したばかりの場合、オペレーティングシステムは何をすべきかわかりません。したがって、一般的にSudoの後にはunixコマンドが続きます。

2
nisdis

Sudoを使用すると、ユーザーは別のユーザー(通常はスーパーユーザーまたはroot)のセキュリティ権限でプログラムを実行できます。
bashは新しいbashシェルを開始します。
そう、 Sudo bashrootユーザーのセキュリティ権限で新しいbashシェルを開始します。

0
suzanshakya

Sudo <Shell>が機能する場合、Sudoのインストールが不十分であり、セキュリティが弱くなる可能性があることを裏切っています。

Sudoは、シェルのような任意のコマンドを許可するように構成しないでください。 Sudoの目的は、認証された非rootユーザーが、rootパスワードを知らなくてもrootとして特定のコマンドを実行できるようにすることです。

Sudo bashがすべてのユーザーに許可されている場合、そのユーザーは、自分のパスワードを知っているという理由だけでrootになります。

攻撃者がSudo bashを実行できるアカウントのいずれかのパスワードを取得した場合、攻撃者はそれによってrootを持ちます。

Sudo bash(ルートシェルを取得)と同等の処理を行う適切な方法は、suの後に、自分のパスワードではなくルートパスワードを指定することです。

0
Kaz

Sudoの代わりにSudo bashを指定している

  • tcshpdksh、または昔ながらのshなどの別のシェルではなく、bashから./gitpull.shを呼び出していることを絶対に確認してください。スクリプトのハッシュバング行で、スクリプトがそれを実行するシェルを指定できるはずですが、何らかの理由で省略されたか、命令の作成者がそれに依存することを望まない可能性があります。
  • 他の引数なしでbashを開始すると、「ログインシェル」のようには機能せず、スクリプトはそれに依存していると思います。
  • 指示を書いた人からの習慣の力(多分彼/彼女はマルチシェル環境で働いています)。
  • おそらく、インストラクションライターはあまり熟練していないか、他の環境からの悪い習慣を持っています。

また、@ nisdisは正しいです。プレーンな古いSudoは、使用情報を出力するだけです。しかし、なぜsu ..を使用しないのですか。

0
LawrenceC