Ich werde den Antworten nicht zustimmen, die besagen, dass das Alter des Unix-Sicherheitsmodells oder die Umgebung, in der es entwickelt wurde, schuld sind. Ich glaube nicht, dass dies der Fall ist, da Mechanismen vorhanden sind, um damit umzugehen.
Das Root-Berechtigungssystem ist sinnvoll, aber auf Desktop-Systemen scheint es, als würde es die falschen Daten schützen.
Die Berechtigungen des Superusers dienen dazu, das System vor seinen Benutzern zu schützen. Die Berechtigungen für Benutzerkonten dienen dazu, das Konto vor anderen Nicht-Root-Konten zu schützen.
Indem Sie ein Programm ausführen, erteilen Sie ihm die Erlaubnis, Dinge mit Ihrer UID zu tun. Da Ihre UID vollen Zugriff auf Ihr Home-Verzeichnis hat, haben Sie dem Programm den gleichen Zugriff transitiv gewährt. So wie der Superuser den Zugriff hat, um Änderungen an den Systemdateien vorzunehmen, die vor böswilligem Verhalten geschützt werden müssen (Passwörter, Konfiguration, Binärdateien), haben Sie möglicherweise Daten in Ihrem Home-Verzeichnis, die die gleiche Art von Schutz benötigen.
Das Prinzip der geringsten Rechte besagt, dass Sie nicht mehr Zugriff gewähren sollten, als unbedingt erforderlich ist. Der Entscheidungsprozess zum Ausführen eines Programms sollte in Bezug auf Ihre Dateien derselbe sein wie in Bezug auf Systemdateien. Wenn Sie einem Code, dem Sie nicht vertrauen, im Interesse des Schutzes des Systems keine uneingeschränkte Nutzung des Superuser-Kontos geben würden, sollte ihm im Interesse des Schutzes Ihrer Daten keine uneingeschränkte Nutzung Ihres Kontos gewährt werden.
Gibt es keine Möglichkeit, bösartigen Code in $HOME zu verhindern? Und warum kümmert sich niemand darum?
Unix bietet aus dem gleichen Grund, aus dem es keinen Blade Guard um den rm-Befehl gibt, keine so detaillierten Berechtigungen an:Die Berechtigungen sind nicht dazu da, Benutzer vor sich selbst zu schützen.
Um zu verhindern, dass bösartiger Code Dateien in Ihrem Home-Verzeichnis beschädigt, führen Sie ihn nicht über Ihr Konto aus. Erstellen Sie einen separaten Benutzer, der keine besonderen Berechtigungen hat, und führen Sie Code unter dieser UID aus, bis Sie festgestellt haben, ob Sie ihm vertrauen können oder nicht.
Es gibt andere Möglichkeiten, dies zu tun, wie zum Beispiel chrooted Jails, aber diese einzurichten, erfordert mehr Arbeit, und ihnen zu entkommen ist nicht mehr die Herausforderung, die es einmal war.
Weil das UNIX-basierte Sicherheitsmodell 50 Jahre alt ist.
UNIX liegt den meisten verbreiteten Betriebssystemen zugrunde, und selbst die große Ausnahme Windows wurde mehr als offensichtlich davon beeinflusst. Es stammt aus einer Zeit, als Computer große, teure und langsame Maschinen waren, die ausschließlich von arkanen Spezialisten benutzt wurden.
Zu dieser Zeit hatten die Benutzer einfach keine umfassenden persönlichen Datensammlungen irgendwelche Computer, nicht ihren Uni-Server, nicht ihren PC (und schon gar nicht ihr Handy). Die von Benutzer zu Benutzer unterschiedlichen Daten waren typischerweise Ein- und Ausgabedaten von wissenschaftlichen Rechenprozessen – ein Verlust könnte ein Verlust sein, aber größtenteils ein Verlust, der durch Neuberechnung kompensiert werden könnte, sicherlich nicht wie die Folgen der heutigen Datenlecks.
Niemand hätte sein Tagebuch, Bankdaten oder Nacktbilder auf einem Computer gespeichert und sie so vor böswilligem Zugriff geschützt hatte keine hohe Priorität - tatsächlich wären die meisten Studenten in den 70er Jahren wahrscheinlich begeistert gewesen wenn andere Interesse an ihren Forschungsdaten zeigten. Daher wurde die Verhinderung von Datenverlust als oberste Priorität in der Computersicherheit angesehen, und dies wird durch regelmäßige Backups statt durch Zugriffskontrollen angemessen gewährleistet.
Dies ist eine sehr scharfsinnige Beobachtung. Ja, Malware, die als Ihr Benutzer ausgeführt wird, kann Daten in Ihrem Home-Verzeichnis beschädigen/zerstören/modifizieren. Ja, die Benutzertrennung auf Einzelplatzsystemen ist weniger sinnvoll als auf Servern. Es gibt jedoch immer noch einige Dinge, die nur der Root-Benutzer (oder ein gleichwertiger Benutzer) tun kann:
- Installieren Sie ein Rootkit im Kernel.
- Ändern Sie den Bootloader so, dass er eine frühe Hintertür für Persistenz enthält.
- Löschen Sie alle Blöcke der Festplatte, wodurch Ihre Daten unwiederbringlich werden.
Ehrlich gesagt finde ich die Privilegientrennung auf Workstations am nützlichsten, um die Workstation vor ihrem größten Feind zu schützen:mir. Es macht es schwieriger, mein System zu vermasseln und zu beschädigen.
Zusätzlich könnten Sie als root immer einen Cronjob einrichten, der ein Backup Ihres Home-Verzeichnisses erstellt (z.B. mit rsnapshot
) und speichert es so, dass Ihr Benutzer nicht darauf schreiben kann. Das wäre ein gewisses Maß an Schutz in der von Ihnen beschriebenen Situation.
Obligatorisches xkcd