私は次のコードを読んでいました:
$ sudo bash
# cd /home/
# ./gitpull.sh
最初の行はなぜ必要なのでしょうか。これは具体的に何をするのでしょうか。$ sudo
の代わりにとするとどうなるのでしょうか$ sudo bash
。
答え1
レベルユーザーとしてbashシェルを起動しますroot
。通常、一般ユーザーはアクセスできないため、これが必要です。/home/
あなたがやっていることの危険性は、ルート シェルにいるということです。つまり、マシンが簡単に台無しになってしまう可能性があるのです。
答え2
次のようにしたほうがよいでしょう:
$ sudo sh -c 'cd /home; ./gitpull.sh'
ルートとして呼び出されたコマンドはログに記録されるためです。sudo を介して直接シェルを呼び出すと、sudo のセキュリティ上の利点がすべて失われるため、避ける必要があります。
答え3
sudo <shell>
動作する場合は、sudo のインストールが不適切であり、潜在的なセキュリティ上の弱点があることを示します。
sudo
シェルのような任意のコマンドを許可するように設定しないでください。の目的は、sudo
認証された非 root ユーザーが、root パスワードを知らなくても、特定のコマンドを root として実行できるようにすることです。
任意のユーザーに許可されている場合sudo bash
、そのユーザーは自分のパスワードを知っているだけで root になることができます。
攻撃者が、実行可能なアカウントのいずれかのパスワードを入手した場合sudo bash
、攻撃者はルート権限を取得します。
sudo bash
(ルート シェルを取得する)と同等のことを実行する適切な方法はsu
、 の後に、自分のパスワードではなくルート パスワードを入力することです。
答え4
sudo
ユーザーが別のユーザー (通常はスーパーユーザーまたは root) のセキュリティ権限でプログラムを実行できるようにします。
bash
新しい bash シェルを起動します。
つまり、sudo bash
root ユーザーのセキュリティ権限で新しい bash シェルを起動します。