「sudo」で実行するたびに、「/etc/sudoers」に追加されたコマンドのパス名を指定する必要がありますか?

「sudo」で実行するたびに、「/etc/sudoers」に追加されたコマンドのパス名を指定する必要がありますか?

たとえば、に追加した行の場合/etc/sudoers

t  ALL=(ALL) NOPASSWD: /path/to/myscript

/path/toPATH現在のユーザーにはありますが、にはtありません。PATHroot

$ sudo /path/to/myscript

パスワードなしで動作しますが、run scriptを使用するたびにスクリプトのパス名を指定する必要がありますかsudo

$ sudo myscript
[sudo] password for t: 
sudo: changeCpuFreq.sh: command not found

myscriptパスがのパスではないため、パスワードを使用しても機能しません。PATHroot

$ sudo -E env "PATH=$PATH" myscript
[sudo] password for t: 

PATHtにコピーされたため、パスワードを使用できますが、root問題はまだパスワードが必要なことです。

ありがとうございます。

答え1

ただし、sudoers自体ではフルパス名を定義する必要はありません。しなければならないセキュリティ上の理由からこれを行います。

それ以外の場合は、root権限を取得するのはかなり簡単です。その他同じ名前のバイナリファイルプレスト楽章、即時ルート権限。

答え2

あなたはカスタマイズすることができますSudo編集者/etc/sudoers/etc/sudoers.d/*

警告する! ! !もしあなたのアカウントが無効になっています。ビジュドはい強く編集の提案Sudo構成。

sudoer のさまざまな検索パスを以下に定義します。私のユーザー:

Defaults:myuser secure_path="/path/to:/usr/sbin:/usr/bin:/sbin:/bin"

以下は、sudoを実行するときにさまざまな検索パスを定義します。

Defaults>root secure_path="/path/to:/usr/sbin:/usr/bin:/sbin:/bin"

/path/to/myscript以下は、呼び出し時に他の検索パスのみを定義します。Sudo:

Defaults!/path/to/myscript secure_path="/path/to:/usr/sbin:/usr/bin:/sbin:/bin"

上記のエントリはすべて「NOPASSWD」ルールとよく統合されており、呼び出し時にパスプレフィックスは必要ありませんsudo myscript

関連情報