Linux で Sudo コマンドを使用してシェル スクリプトを実行する方法
sudo は、セキュリティ ポリシーで定義されているように、「許可されたユーザー」が別のユーザー (デフォルトではスーパーユーザー) としてコマンドを実行できるようにする強力なコマンド ライン ツールです。すべてではないにしても、ほとんどの Linux システムでは、セキュリティ ポリシーは /etc/sudoers ファイルによって制御されます。
こちらもお読みください: Linux で「sudo」を設定するための 10 の便利な Sudoers 構成
したがって、シェル スクリプトまたはプログラムを root として実行するには、sudo コマンドを使用する必要があります。ただし、sudo は、コマンドが存在しない限り、/etc/sudoers の secure_path で指定されたディレクトリに存在するコマンドのみを認識して実行します。 secure_path を指定すると、以下のようなエラーに対処できます。
これは、スクリプトが PATH 環境変数のディレクトリに存在する場合でも発生します。これは、ユーザーが sudo を呼び出すと、PATH が < に置き換えられるためです。セキュアパス。
echo $PATH
ls -l
sudo proconport.sh 80
上記のシナリオでは、ディレクトリ /home/aaronkilik/bin が PATH 環境変数にあり、スクリプト /home/aaronkilik/bin を実行しようとしています。 root 権限を持つ /proconport.sh (ポートでリッスンしているプロセスを検索)。
次に、/home/aaronkilik/bin が sudo secure_path にないため、「sudo: proconport.sh: コマンドが見つかりません」というエラーが発生しました。 > 次のスクリーンショットに示すように。
これを修正するには、visudo コマンドを使用して /etc/sudoers ファイルを編集し、スクリプトを含むディレクトリを sudo secure_path に追加する必要があります。次のように。
sudo visudo
注意: この方法は、特にインターネット上で実行されているサーバーにおいて、セキュリティに重大な影響を及ぼします。この方法では、システムがさまざまな攻撃にさらされる危険があります。これは、secure_path に追加された安全でない (スーパーユーザー権限なしの) ディレクトリへのアクセスを取得した攻撃者が、sudo コマンド< を使用して悪意のあるスクリプト/プログラムを実行できるためです。。
セキュリティ上の理由から、secure_path に関連する脆弱性について説明している sudo Web サイトの次の記事を確認してください: https://www.sudo.ws/sudo/alerts/secure_path.html
できれば、sudo でスクリプトを実行するときにスクリプトへの絶対パスを指定できます。
sudo ./proconport.sh 80
それでおしまい! sudo コマンドに関する記事のリストを参照してください。
- Linuxでパスワードを入力せずに「sudo」コマンドを実行する方法
- Linux で「sudo」パスワードのタイムアウト セッションを長く保つ方法
- 「ユーザー名が sudoers ファイルにありません。」を修正する方法このインシデントは「Ubuntu で報告されます」
- 間違ったパスワードを入力すると Sudo があなたを侮辱します
この記事に関してご質問やご意見がございましたら、以下のコメント フォームからお知らせください。