LinuxでSudoコマンドを使ってシェルスクリプトを実行する方法


sudo は、セキュリティポリシーで定義されているように、「許可されたユーザー」が別のユーザー(デフォルトではスーパーユーザー)としてコマンドを実行できるようにする強力なコマンドラインツールです。すべてではないにしてもほとんどのLinuxシステムでは、セキュリティポリシーは/etc/sudoers ファイルによって決まります。

したがって、シェルスクリプトまたはプログラムをrootとして実行するには、sudoコマンドを使用する必要があります。ただし、 sudo は、/etc/sudoers secure_path に指定されたディレクトリに存在するコマンドのみを認識して実行します。 secure_path を使用すると、次のようなエラーに対処できます。

スクリプトが PATH 環境変数のディレクトリに存在する場合でも、これが発生します。ユーザーが sudo を呼び出すと、 PATH が<に置き換えられるためです。 strong> secure_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

セキュリティ上の理由から、sudoのWebサイトにある次の記事を参照して、secure_pathに関連する脆弱性を説明してください。https://www.sudo.ws/sudo/alerts/secure_path.html

できれば、sudoでスクリプトを実行しながら、スクリプトへの絶対パスを指定できます。

$ sudo ./proconport.sh 80

それでおしまい! sudoコマンドに関する記事のリストに従うことができます。

  1. How to Run ‘sudo’ Command Without Entering a Password in Linux
  2. How to Keep ‘sudo’ Password Timeout Session Longer in Linux
  3. How to Fix “Username is not in the sudoers file. This incident will be reported” in Ubuntu
  4. Let Sudo Insult You When You Enter Incorrect Password

この記事に関してご質問やご意見がありましたら、下のコメントフォームからご連絡ください。