Andere Sprachen Deutsch ; English ; Français ; Nederlands ; |
Einleitung: Falls Sie su ohne die --login Option (abgekürzt su - ) verwenden, dann können einige Dateien in Ihrem home -Verzeichnis dem Benutzer root zugeordnet werden, was zu zukünftigen Problemen führen kann.
|
Die Verwendung des Befehls su
, um root-Privilegien zu erhalten, ist sehr riskant und kann im späteren Verlauf zu Problemen führen, welche nicht einfach zu beheben sind, falls Sie nicht mit den Gefahren vertraut sind.
Anstelle dessen sollten Sie su --login
verwenden, welches abgekürzt der Befehl su -l
oder nur su -
ist, falls Sie root-Privilegien benötigen.
Eine Alternative um su -
zu verwenden ist es, sudo zu verwenden.
Ursache
Um den Unterschied und die Gefahren bei der Verwendung von su
, ohne den Bindestrich, zu verstehen, beginnen wir mit der man-page für su
.
Laut dieser Seite, wird durch hinzufügen der --login
Option, der su
Befehl verändert:
startet die Shell als Anmelde-Shell mit einer Umgebung ähnlich zu einer realen Anmeldung: - löscht alle Umgebungsvariablen außer TERM und jene, die durch --whitelist-environment angegeben wurden. - initialisiert die Umgebungsvariablen HOME, SHELL, USER, LOGNAME und PATH. - wechselt in das Home-Verzeichnis des Zielbenutzers. - setzt argv[0] der Shell auf »-«, um die Shell zur Anmelde-Shell zu machen.
Nachfolgend finden Sie Code-Beispiele um zu zeigen, wie die Umgebungsvariablen Einfluss durch die Verwendung der Option --login
nehmen.
Melden Sie sich zu erst mit su
an:
Password: # env|grep tester|sort LOGNAME=tester MAIL=/var/spool/mail/tester PWD=/home/tester SCREENDIR=/home/tester/tmp USER=tester # exit exit $
Ergebnis: Die Umgebungsvariablen führen weiterhin auf die ursprüngliche Login-ID (tester in diesem Fall), anstelle auf den root-Zugang...
Nun melden Sie sich mit dem Befehl su --login
an:
Password: # env|grep tester|sort # # exit exit $
Ergebnis: Die Umgebungsvariablen wurde gelöscht und führen nicht mehr zur ursprünglichen Login-ID (tester in diesem Fall).
Was die Verwendung von su
ohne die Option --login
gefährlich macht, ist, dass viele Programme diese Umgebungsvariablen verwenden, um zu steuern, wo sie die von ihnen verwendeten Dateien speichern. Wenn ein Programm ausgeführt wird, das eine in ~/.config
gespeicherte Datei aktualisiert, dann wird die Konfigurationsdatei für dieses Programm im ~/.config
-Verzeichnis des Benutzers zum Eigentum von root.
Später, nach der Verwendung von su
und beenden der root-Privilegien, sobald der Anwender die gleiche Anwendung startet und etwas macht, wodurch die .config
Datei aktualisiert werden muss, wird dies fehlschlagen, da der reguläre Anwender keine Änderungen an Dateien durchführen kann, welche root zugeordnet sind.
Die Dateien, welche root zugeordnet sind und im home
-Verzeichnis des Anwenders liegen, können zu Problemen führen, welche schwer zu beheben sind.
Warnung! Denken Sie immer daran su - zu verwenden und niemals nur su !
|
Beheben des Fehlers
Falls der Fehler bereits getan wurde, kann dies wie folgt behoben werden:
Password: # chown -Rc tester:tester /home/tester # exit exit $
Die Option "c", für chown, führt den Befehl aus um die Änderungen anzuzeigen, welche durchgeführt wurden und die Option "R" steht für rekursiv. Sie müssen bei diesen Befehlen "tester" durch Ihren eigenen Benutzernamen ersetzen.
Falls IMAP für E-Mails verwendet wird, muss das E-Mail Verzeichnis in die eigene Gruppe mail zurückgewechselt werden:
Password: # chgrp -Rc mail ~/mail # exit exit $
Es werden möglicherweise noch weitere Änderungen für andere Anwendungen benötigt. Prüfen Sie deshalb die Ausgabe des chown-Befehls sorgfältig.