私のfedoraVMで、私のユーザーアカウントで実行しているとき、私は/usr/local/bin
を持っています 私の道のり:
[[email protected] ~]$ env | grep PATH
PATH=/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/justin/bin
同様に、su
を実行する場合 :
[[email protected] ~]$ su -
Password:
[[email protected] justin]# env | grep PATH
PATH=/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/justin/bin
ただし、sudo
を介して実行する場合 、このディレクトリはパスにありません:
[[email protected] justin]# exit
[[email protected] ~]$ sudo bash
[[email protected] ~]# env | grep PATH
PATH=/usr/kerberos/sbin:/usr/kerberos/bin:/sbin:/bin:/usr/sbin:/usr/bin
sudo
を介して実行すると、パスが異なるのはなぜですか ?
承認された回答:
/etc/sudoers
をご覧ください 。 Fedora(およびRHEL、Ubuntuなど)のデフォルトファイルには次の行が含まれています:
Defaults secure_path = /sbin:/bin:/usr/sbin:/usr/bin
これにより、sudoでバイナリを実行するときにパスがクリーンになります。これは、この質問で指摘された懸念のいくつかから保護するのに役立ちます。 /sbin
がない場合にも便利です および/usr/sbin
あなた自身の道で。