Warum keine Berechtigungen wie Android oder iOS?

26

Wenn ich ein Programm wie GIMP oder LibreOffice unter Linux installiere, werde ich nie nach Berechtigungen gefragt. Wenn ich ein Programm auf Ubuntu installiere, erteile ich diesem Programm dann explizit die volle Berechtigung zum Lesen / Schreiben auf meinem Laufwerk und zum vollständigen Zugriff auf das Internet?

Konnte GIMP theoretisch jedes Verzeichnis auf meinem Laufwerk lesen oder löschen, ohne ein Passwort vom Typ sudo zu benötigen?

Ich bin nur neugierig, ob es technisch möglich ist, nicht, ob es wahrscheinlich ist oder nicht. Natürlich weiß ich, dass es nicht wahrscheinlich ist.

Stackinator
quelle
26
Obligatorische XKCD: xkcd.com/1200
Andrea Lazzarotto
10
Weil das Sicherheitsmodell von Linux aus einer Zeit stammt, in der noch niemand daran gedacht hat. Tatsächlich stammt es aus der Zeit vor dem Internet - als Ihre größte Bedrohung andere Personen waren, die denselben Computer verwendeten.
user253751
2
Zum Teil, weil viele der Benutzer von * nix keine Programme "installieren", kompilieren sie diese entweder aus dem Quellcode oder schreiben sie selbst. Stellen Sie sich vor, Sie müssten für jedes einfache kleine Shell-Skript, das Sie geschrieben haben, die "Berechtigungen" -Rigamarole durchgehen: Wäre das nicht eine massive Zeitverschwendung?
Jamesqf
4
Ich kaufe diese Argumentation jedoch nicht, "der Code ist Open Source, Sie können ihn überprüfen und selbst kompilieren!". All diese Aussagen sind wahr, aber das bedeutet nicht, dass ich jede Zeile Code, die ich ausführe, überprüfen kann, und selbst wenn ich es täte oder ein Team von Leuten oder die ganze Welt, bedeutet das in keiner Weise Sie werden schädlichen oder fehlerhaften Code erkennen, der sich negativ auf Ihren Computer auswirkt. Aber danke für den Input, ich sehe, wie es zu einem großen Schmerz werden kann und ich habe jetzt Wege gefunden, um es zu umgehen.
Stackinator

Antworten:

31

Hier gibt es zwei Dinge:

  • Wenn Sie ein Programm standardmäßig installieren (Systeminstallationsprogramm wie apt / apt-get unter Ubuntu), wird es normalerweise in einem Verzeichnis installiert, in dem es allen Benutzern zur Verfügung steht (/ usr / bin ...). In dieses Verzeichnis müssen Berechtigungen geschrieben werden, sodass Sie während der Installation spezielle Berechtigungen benötigen.

  • Wenn Sie das Programm verwenden, wird es mit Ihrer Benutzer-ID ausgeführt und kann nur dort lesen oder schreiben, wo Programme, die mit Ihrer ID ausgeführt werden, lesen oder schreiben dürfen. Im Fall von Gimp werden Sie zum Beispiel feststellen, dass Sie Standardressourcen wie Pinsel nicht bearbeiten können, weil sie sich in der Freigabe befinden /usr/share/gimp/und Sie sie zuerst kopieren müssen. Dies zeigt auch, Edit>Preferences>Folderswo die meisten Ordner paarweise vorhanden sind, wobei ein System schreibgeschützt ist und ein Benutzer schreibgeschützt ist.

Magnet
quelle
17
Sobald das Programm installiert ist, spielt es keine Rolle mehr, wie es installiert wurde. Das Einzige, was zählt, ist, unter welcher Benutzer-ID es ausgeführt wird (
dh
3
@xenoid Sofern das Programm nicht im Besitz von root und mit aktiviertem setuid-Bit installiert ist. In diesem Fall wird das Programm als root ausgeführt, obwohl es von einer anderen Person verwendet wird.
Monty Harder
2
Ja, alle 18 von ihnen: mount / umount / ping / sudo ...
Magnet
2
@xenoid, ich denke, das Wichtigste dabei ist, dass Sie bei der Installation eines Pakets nicht explizit nach der Erlaubnis gefragt werden, eine setuid-Binärdatei zu installieren. Stattdessen wird alles, was im Paket enthalten ist, installiert, und Sie müssen nur auf eine andere Weise "wissen", ob es sich um privilegierte Programme handelt. Sie sind vollständig auf den Packager angewiesen, um sicherzustellen, dass das Paket mit der Dokumentation übereinstimmt und ansonsten sicher ist usw. Das Paketmanager-Dienstprogramm unternimmt nichts, um Ihnen dabei zu helfen.
Ilkkachu
3
Ja, also nichts Neues, deshalb gibt es Repositories ... Auch ohne das setuid-Bit und die installierte Software können viele andere unangenehme Dinge erledigt werden, wie z rm -rf ~/. Wenn Sie von anderen Quellen installieren, müssen Sie vorsichtig sein (oder nach einer Codeüberprüfung von der Quelle installieren).
Xenoid
23

Wenn ich ein Programm auf Ubuntu installiere, erteile ich diesem Programm explizit die volle Berechtigung zum Lesen / Schreiben auf meinem Laufwerk und den vollen Zugriff auf das Internet?

Ja, wenn Sie sudooder ein gleichwertiges Produkt verwenden, erteilen Sie dem Installationsprogramm die volle Berechtigung zum Lesen / Schreiben an einer beliebigen Stelle auf Ihrem Laufwerk. Das ist meistens dasselbe. Es gibt auch ein Flag namens setuid, das der Installer setzen kann, wodurch das Programm auch nach der Installation über die vollen Berechtigungen verfügt.

Selbst wenn wir das Installationsprogramm ignorieren und das Programm nicht setuid ist (es kommt sehr selten vor, dass Programme setuid verwenden), hat es beim Ausführen des Programms uneingeschränkten Zugriff auf alles, worauf Ihr Konto zugreifen kann. Wenn Sie beispielsweise bei Ihrem Online-Banking angemeldet sind, kann dies möglicherweise dazu führen, dass alle Ihre Gelder nach Nigeria gesendet werden.

Warum keine Berechtigungen wie Android oder iOS?

Das Sicherheitsmodell - das heißt, wie das Sicherheitssystem aufgebaut ist - unter Linux ist sehr alt. Es wurde von Unix geerbt, das bis in die 1960er Jahre zurückreicht. Damals gab es kein Internet, und die meisten Mitarbeiter einer Abteilung verwendeten denselben Computer. Die meisten Ihrer Programme stammten von großen Unternehmen, denen vertraut wurde. Daher wurde das Sicherheitssystem so konzipiert, dass Benutzer voneinander und nicht von den Programmen, die sie ausführen, geschützt werden.

Heutzutage ist es ziemlich veraltet. Android basiert auf Linux, erstellt jedoch ein separates "Benutzerkonto" für jede App und nicht für jeden Benutzer. Ich weiß nicht, was iOS verwendet. Bemühungen wie Flatpak versuchen derzeit, dasselbe auf den Linux-Desktop zu bringen.

user253751
quelle
2
Dies ist tatsächlich ein Argument für die Ausführung von potenziell ausnutzbarem Code als separater, nicht privilegierter Benutzer und die Hoffnung, dass im Betriebssystem keine Sicherheitsanfälligkeit bezüglich Rechteerweiterung besteht. Oder Docker.
Willtech
@immibis Android verwendet den Linux-Kernel und einen ext-FS. Es hat keine anderen Ähnlichkeiten afaik. Kombinieren Sie nicht Linux und UNIX-like (oder GNU / Linux). (Zumindest hast du FreeBSD nicht "Linux" genannt ..)
wizzwizz4
1
@ wizzwizz4 Linux ist ein Kernel, Android verwendet den Kernel namens Linux, ich bin mir nicht sicher, was du meinst.
user253751
@ Willtech Technisch funktioniert es als Sicherheitsmaßnahme, aber es ist ziemlich unpraktisch. Im Allgemeinen möchten Sie, dass Apps auf Ihre Dateien zugreifen können. Aber nur die Dateien, auf die Sie Zugriff hatten.
user253751
@immibis Die Berechtigungen sind nicht im Kernel implementiert, daher ist es irreführend, dass Android auf einem System basiert, das das Berechtigungsmodell enthält. (IIirc der Kernel erzwingt zwar einige der Berechtigungen ..)
wizzwizz4
9

Was Sie möchten, wird von Flatpack-Apps bereitgestellt. Dies entspricht in etwa iOS-, Android- oder Windows Store-Apps.

Ich habe sie nicht verwendet, daher weiß ich noch nicht, ob sie die GUI implementiert haben, um die Berechtigungen anzuzeigen, die für jede App bei der Installation erforderlich sind.

https://blogs.gnome.org/alexl/2017/01/20/the-flatpak-security-model-part-2-who-needs-sandboxing-anyway/

Jede Flatpak-Anwendung enthält ein Manifest namens Metadaten. Diese Datei beschreibt die Details der Anwendung, wie die Identität (Anwendungs-ID) und die verwendete Laufzeit. Außerdem werden die Berechtigungen aufgelistet, die für die Anwendung erforderlich sind.

Nach der Installation erhält eine Anwendung standardmäßig alle von ihr angeforderten Berechtigungen. Sie können die Berechtigungen jedoch jedes Mal überschreiben, wenn Sie flatpak run oder global für jede Anwendung aufrufen, indem Sie flatpak override verwenden (Details finden Sie auf den Manpages flatpak run und flatpak override). Der Umgang mit Anwendungsberechtigungen ist derzeit in der Benutzeroberfläche etwas verborgen, aber es ist langfristig geplant, Berechtigungen während der Installation anzuzeigen und das Überschreiben zu vereinfachen.

Ich habe auch Ubuntus Alternative, Snappy, nicht benutzt, um zu wissen, ob es eine solche Funktion bietet, die in der GUI sichtbar ist.

sourcejedi
quelle
Haben Flatpaks Lese- / Schreibrechte für meinen Home-Ordner in Ubuntu?
Stackinator
1
Wenn man den Link liest, sieht es so aus, als ob a) sie eine elegante Lösung im Auge haben, bei der Apps nur Zugriff auf Dateien erhalten, die der Benutzer in einem Fenster zum Öffnen / Speichern von Dateien usw. ausgewählt hat .
Sourcejedi
2
Web-Apps sind eine viel üblichere Lösung für dieses Problem, wenn auch in vielen Fällen ärgerlich ineffizient. Jeder beliebte Webbrowser ist eine äußerst vielseitige und gründlich getestete Sandbox.
Sudo
6

Es ist technisch möglich , und die Lösungen sind apparmor, selinuxund firejailoder sogar volle Container wie LXCoder eine vollständige virtuelle Maschine (zB VirtualBox, kvmoder vmware). Für die Vernetzung gibt es opensnitcheinen Klon des littlesnitchProgramms von OSX.

Der Grund, warum es kein verbreitetes Sicherheitsmodell mit vom Benutzer erteilten Berechtigungen gibt, ist, dass Sie traditionell vorsichtig sind, was Sie auf Ihrem PC ausführen. 90% der Inhalte in den Appstores mobiler Systeme werden auf PCs als Malware eingestuft.

Es gibt Scanner für Adware (dh Adware oder Spybot D & D), die Verhalten wie das Verbinden von Facebook, Google Analytics und Werbenetzwerken als Malware auf dem PC einstufen. Das mobile Ökosystem ist wie ein Neustart des Computers, wenn es um diese Dinge geht. Jeder bündelt Adware, nur weil es einfach ist und fügt Analytics hinzu, nur weil er neugierig ist. Die Nebenwirkungen sind verminderte Privatsphäre und Sicherheit. Der Sicherheitsteil wird vom Sandbox-Modell berücksichtigt, der Datenschutzteil ist immer noch ein offenes Problem.

Ein weiterer Grund dafür, dass dies nicht lange auf dem PC vorhanden ist, ist die Komplexität einer Sandbox, was bedeutet, dass beide für ältere PCs vor einiger Zeit möglicherweise zu langsam sind und mehr Engineering für etwas erforderlich sind, das damals wenig Vorteile hatte.

Heute sehen wir Versuche, Sandboxing in neuen Paketformaten wie Snap und Flatpak zu verwenden, und Browser verwenden es auch für ihre Erweiterungen. Chromium verwendet seit dem Start ein Berechtigungsmodell, und Firefox verwendet eines für alle Weberweiterungen (seit 57 die einzigen Erweiterungen, die Sie installieren können). Dies ist sehr vernünftig, da Benutzer Browsererweiterungen von unbekannten Autoren genauso installieren wie Apps von Personen, von denen sie noch nie gehört haben. Sie glauben, dass sie nicht gefährlicher sind als eine Website, die sie besuchen.

allo
quelle
4

Android verwendet ein "Marktplatz" -Sicherheitsmodell: Verschiedene Anwendungen stammen von verschiedenen (semi-vertrauenswürdigen) Anbietern und sollten von geschützten Ressourcen und voneinander isoliert werden. Die meisten Apps werden gewinnorientiert vertrieben: Sie werden verkauft (Payware), zeigen bezahlte Werbung oder "monetarisieren" ihre Benutzer, indem sie ihre Daten an Dritte verkaufen. Es besteht eine hohe Motivation, sich auf illegale Datenzugriffe einzulassen, auch wenn sie erwischt werden.

Die meisten Anwendungen in Debian, Red Hat und ähnlichen "klassischen" Linux-Distributionen werden in Quellform verteilt: Nachdem eine Open-Source-Anwendung genügend Traktion erlangt hat, wird sie manuell ausgewählt, um von Distributionsbetreuern aufgenommen zu werden. Es gibt wenig Motivation, einen illegalen Datenzugriff durchzuführen. Potenzielle Gewinne rechtfertigen keine Bemühungen.

Es ist erwähnenswert, dass das fortschrittliche Sicherheitsmodell von Android einer der Gründe ist, warum es so viel Anziehungskraft erlangt und iOS auf mobilen Märkten leicht überwindet. Moderne Desktop-Linux-Distributionen sind nicht nur "anders" - sie sind auch in Bezug auf ihre Sicherheits- und Distributionsmodelle weit in der Vergangenheit.

Einige Linux-Distributionen haben Verbesserungen an ihrem Softwareverteilungssystem vorgenommen: zentrale Software-Repositorys von Drittanbietern (AUR), spezielle Paketformate für die Verteilung von Software von Drittanbietern (AppImage, Snappy, Flatpack) und sekundäre Repository-Systeme (Docker). Leider gewinnen diese Verbesserungen mit der Zeit nur sehr wenig an Bedeutung: AppImage wurde 2004 erfunden, die erste Version von AUR wurde 2005 veröffentlicht, aber keine der modernen Linux-Distributionen hat ihre Funktionen nach mehr als 10 Jahren offiziell übernommen.

user1643723
quelle
3

Wenn ich ein Programm wie GIMP oder LibreOffice unter Linux installiere, werde ich nie nach Berechtigungen gefragt.

Diese Anwendungen werden in einem privilegierten Teil des Dateisystems installiert, auf das Sie und die meisten Benutzer normalerweise keinen Zugriff haben.

In Mainstream-Distributionen, die für die Desktop-Verwendung eingerichtet wurden, hat der einzelne Benutzer, der bei der Installation eingerichtet wurde, normalerweise Administratorrechte. Normalerweise werden sie nur nach ihrem eigenen Anmeldekennwort gefragt, um die Software zu installieren, und das nicht immer.

Nach der Installation wird die Software standardmäßig so eingerichtet, dass sie von normalen Benutzern ausgeführt werden kann und das Lesen von Datendateien ermöglicht. Das ist alles was benötigt wird.

Wenn ich ein Programm auf Ubuntu installiere, erteile ich diesem Programm dann explizit die volle Berechtigung zum Lesen / Schreiben auf meinem Laufwerk und zum vollständigen Zugriff auf das Internet?

Nicht das Programm. Was passiert ist, dass das Benutzerkonto zu verschiedenen Gruppen gehört und die verschiedenen Gruppen Zugriff auf verschiedene Ressourcen gewähren.

Das Sicherheitsmodell unter Linux sieht vor, dass Ihr Benutzerkonto über bestimmte Rechte verfügt und die Gruppen, zu denen Ihr Konto gehört, über bestimmte Rechte verfügen. Um auf einen Teil des Dateisystems zugreifen zu können, sind Root-Rechte erforderlich, die normalerweise nicht an Benutzer vergeben werden. Selbst wenn Sie sudo verwenden, erhalten Sie nicht alle Rechte.

Normale Benutzerkonten haben normalerweise Zugriff auf die Ressourcen, die sie voraussichtlich benötigen, z. B. das Internet.

Konnte GIMP theoretisch jedes Verzeichnis auf meinem Laufwerk lesen oder löschen, ohne ein Passwort vom Typ sudo zu benötigen?

Auf jedes Verzeichnis oder jede Datei, auf die Sie als Benutzer zugreifen dürfen, kann von der Anwendung zugegriffen werden, die Sie starten, da diese normalerweise Ihre Rechte erbt. Ein normal angemeldeter Benutzer hat normalerweise nicht das Recht, die meisten kritischen Systemdateien oder freigegebenen Dateien zu ändern.

Ich bin nur neugierig, ob es technisch möglich ist, nicht, ob es wahrscheinlich ist oder nicht. Natürlich weiß ich, dass es nicht wahrscheinlich ist.

Denken Sie daran, dass die meisten Benutzer Anwendungen in der Regel von Repositorys installieren, die gut überwacht werden und das Risiko feindlichen Codes gering ist.

Ich würde wahrscheinlich eine zusätzliche Lektüre vorschlagen, um sich mit Linux-Berechtigungen vertraut zu machen.

Das Android-Sicherheitsmodell wird weiterentwickelt, um den Anforderungen von Benutzern gerecht zu werden, die nicht nur im Allgemeinen nichts über das zugrunde liegende Sicherheitsmodell des Betriebssystems wissen, sondern auch kaum etwas über Computer verstehen .

Das Linux-Modell (das ich ehrlich gesagt mehr mag) soll es Benutzern (und insbesondere Administratoren) ermöglichen, mehr Kontrolle über die Sicherheit des Systems auszuüben (innerhalb der Grenzen, in denen die Berechtigungen zulässig sind).

Ich denke, vom Standpunkt des Benutzers aus ist es am besten als der Unterschied zwischen vollautomatischer und halbautomatischer oder manueller Steuerung zu beschreiben. Moderne Verbraucher wollen vollautomatisch. Linux hat semi-auto und manuell. Die meisten Linux-Benutzer müssen heutzutage nie mehr über das Sicherheitsmodell Bescheid wissen, aber das Steuerelement ist da, wenn Sie es benötigen oder möchten.

StephenG
quelle
2

Wenn Sie einige Programme installieren, können Sie sie in Ihrem eigenen Benutzerbereich (dh in Ihrem Home-Verzeichnis) und nicht systemweit installieren. Als solches werden Sie nicht nach Superuser-Rechten gefragt, da Sie diese nicht benötigen, um ein Programm für den Eigengebrauch eines Benutzers zu installieren. Ein auf diese Weise installiertes Programm wäre in der Tat nicht in der Lage, auf Dateien zuzugreifen, denen die Berechtigung "Nicht-Eigentümer-Nicht-Gruppenmitglieder können diese Berechtigung lesen" ohne eine erweiterte Berechtigung nicht erteilt wurde.

DopeGhoti
quelle
Wenn das Programm in meinem Home-Verzeichnis installiert ist, kann es irgendwo im Home-Verzeichnis lesen und schreiben?
Stackinator
2
Es wird mit Ihren Berechtigungen ausgeführt, sodass Sie auf alles zugreifen können, auf das Sie zugreifen können.
DopeGhoti
1
Auf einem Einzelbenutzer-Computer ist der Nur-Benutzer-Zugriff nicht viel sicherer als der Root-Zugriff. In jedem Fall ist wahrscheinlich alles Wichtige für Ihren Benutzer zugänglich.
Sudo