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.