私は次のコードを読んでいました:
$ Sudo bash
# cd /home/
# ./gitpull.sh
なぜ最初の行が必要なのですか、それは正確に何をしますか? $ Sudo
の代わりに $ Sudo bash
?
root
レベルのユーザーとしてbashシェルを起動します。通常のユーザーは/home/
にアクセスできないため、これが必要です。
あなたがしていることの危険性はあなたがルートシェルにいることです-あなたはあなたのマシンをかなり簡単に台無しにすることができます。
あなたはやったほうがはるかに良いでしょう:
$ Sudo sh -c 'cd /home; ./gitpull.sh'
Rootとして呼び出されたコマンドがログに記録されるためです。 Sudoを介して直接シェルを呼び出すと、Sudoのセキュリティ上の利点がすべて回避されるため、回避する必要があります。
悪名高いSudoは、SuperuserDoの頭字語です。
それは基本的に普通のユーザーをしばらくの間スーパーユーザーにします。
コマンドSudo bashでは、事実上、スーパーユーザーが実行する->シェルにログインしているrootユーザーを開くBourneシェル(bash)を実行しています。
Sudoを実行したばかりの場合、オペレーティングシステムは何をすべきかわかりません。したがって、一般的にSudoの後にはunixコマンドが続きます。
Sudo
を使用すると、ユーザーは別のユーザー(通常はスーパーユーザーまたはroot)のセキュリティ権限でプログラムを実行できます。bash
は新しいbashシェルを開始します。
そう、 Sudo bash
rootユーザーのセキュリティ権限で新しいbashシェルを開始します。
Sudo <Shell>
が機能する場合、Sudoのインストールが不十分であり、セキュリティが弱くなる可能性があることを裏切っています。
Sudo
は、シェルのような任意のコマンドを許可するように構成しないでください。 Sudo
の目的は、認証された非rootユーザーが、rootパスワードを知らなくてもrootとして特定のコマンドを実行できるようにすることです。
Sudo bash
がすべてのユーザーに許可されている場合、そのユーザーは、自分のパスワードを知っているという理由だけでrootになります。
攻撃者がSudo bash
を実行できるアカウントのいずれかのパスワードを取得した場合、攻撃者はそれによってrootを持ちます。
Sudo bash
(ルートシェルを取得)と同等の処理を行う適切な方法は、su
の後に、自分のパスワードではなくルートパスワードを指定することです。
Sudo
の代わりにSudo bash
を指定している
tcsh
、pdksh
、または昔ながらのsh
などの別のシェルではなく、bashから./gitpull.sh
を呼び出していることを絶対に確認してください。スクリプトのハッシュバング行で、スクリプトがそれを実行するシェルを指定できるはずですが、何らかの理由で省略されたか、命令の作成者がそれに依存することを望まない可能性があります。bash
を開始すると、「ログインシェル」のようには機能せず、スクリプトはそれに依存していると思います。また、@ nisdisは正しいです。プレーンな古いSudo
は、使用情報を出力するだけです。しかし、なぜsu
..を使用しないのですか。