sudo suとbashのルートスクリプトパスが異なるのはなぜですか? [コピー]

sudo suとbashのルートスクリプトパスが異なるのはなぜですか? [コピー]

管理者への注意:この問題は、sudoパスがsuと異なる理由とは関係ありません。これは、cronで実行されるbashスクリプトの環境変数は、ユーザーに対してsudoまたはsuに設定されている環境変数から継承されているように見えないためです。 (ただし、以降のすべてを参照してください。)

sudo suを実行してパスを表示すると、私のパスに/usr/local/binがあります。システム全体で使用できるように、複数のカスタムアプリケーションをこのフォルダに配置しました。 etc/sudoers では、/usr/local/bin は secure_path にあります。

しかし、

cronジョブを介してrootとして実行されるbashスクリプトを実行すると、/usr/local/binは明らかにパスに残りません。なぜなら、そこにインストールされたアプリケーションを実行しようとしたときに/etc in/にあるにもかかわらず、コマンドが見つからないからです。 sudoers。

これらのアプリケーションへのルートアクセス権を取得するにはどうすればよいですか?

Ubuntu16.10

ベストアンサー1

ご覧のとおり、作業環境は呼び出しcronシェルの環境とは異なります。ただし、cronテーブルに変数を設定できます。su -sudo -ssudo /path/to/executable

PATH="$PATH:/usr/local/bin"
0 0 * * * /path/to/run-me-at-midnight-with-path-changes.sh

おすすめ記事