Auf meiner Fedora-VM habe ich beim Ausführen mit meinem Benutzerkonto /usr/local/bin auf meinem Weg:
[[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
Und ebenso beim Ausführen von 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
Allerdings beim Ausführen über sudo , dieses Verzeichnis befindet sich nicht im Pfad:
[[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
Warum sollte der Pfad anders sein, wenn er über sudo ausgeführt wird ?
Akzeptierte Antwort:
Sehen Sie sich /etc/sudoers an . Die Standarddatei in Fedora (sowie in RHEL und auch Ubuntu und ähnlichem) enthält diese Zeile:
Defaults secure_path = /sbin:/bin:/usr/sbin:/usr/bin
Dadurch wird sichergestellt, dass Ihr Pfad sauber ist, wenn Binärdateien unter sudo ausgeführt werden. Dies trägt zum Schutz vor einigen der in dieser Frage genannten Bedenken bei. Es ist auch praktisch, wenn Sie /sbin nicht haben und /usr/sbin auf deinem eigenen Weg.