Archiv verlassen und diese Seite im Standarddesign anzeigen : Gelöst: Zugriffsrechte für Programme- wie macht man das "richtig" ?
Wahrscheinlich klingt die Frage aus der Tastatur von einem langjährigen Linuxbenutzer etwas seltsam, aber irgendwie finde ich nicht die richtigen Suchbegriffe für Google.
Problem:
Anwendung a (Realcrypt bzw. Veracrypt) soll das Recht erhalten "mount" durchzuführen.
Meine bisherige Lösung: in der Sudoers Datei
%realcrypt ALL = NOPASSWD: /usr/bin/realcrypt
eingetragen. Damit durften alle user in der Gruppe "realcrypt" das Programm als Root ausführen.
Ebenso bei Programm B: um meinen GPS Logger auszulesen muss das Programm auf eine USB Schnittstelle zugreifen die immer nur die Rechte "root" hatte. Einfachste Lösung, das Programm als "root" laufen zu lassen.
Ebenfalls keine schöne Lösung.
Gibt es eine "professionelle" Methode bestimmten Programme bestimmte Zugriffe zu erlauben ohne ihnen gleich Vollzugriff zu erteilen ?
Den Usern einfach pauschal "mount" zugriff zu erteilen ist ebenfalls suboptimal, da -wie in einigen Anleitungen ausgeführt- dann schnell eine Shell mit suid gemountet werden kann, d.h. Mount Rechte sind nur ein Schritt vom Root Zugriff entfernt.
BetterWorld
04.01.16, 21:54
Du kannst ganz einfach alle (erlaubten) Parameter beim mount- Command angeben.
Und was "eine Shell mounten" meint, würde ich gerne wissen.
Ich verstand das so dass wenn man einen Datenträger mit einer lokalen Bash (sozusagen als "exe") "mounten" darf und diese dann mit SUID Bit starten kann man Root Rechte erhält.
Oder habe ich das falsch verstanden ? Ich bin nur Linux Anwender und versuche die Systeme "vernünftig" zu betreiben, habe mich mit "hacken" und "exploits" nie näher beschäftigt.
Ich habe das Problem wie ich Veracrypt erlaube ausschließlich den "mount" Befehl auszuführen, bzw. dem Programm das den GPS Logger ausliest ausschließlich auf die betreffende USB Schnittstelle zuzugreifen.
Statt dessen finde ich nur Möglichkeiten dem User (in dem Falle meinem "Arbeitskonto") Rechte zu geben oder zu entziehen. Wobei es ein erster Ansatz wäre dem User bestimmte Mount Rechte (z.B ausschließlich in "media" oder "mnt") zu geben und den Zugriff auf die USB Schnittstelle zu gewähren... das werde ich bei Gelegenheit mal ausprobieren.
So "richtig sauber" wäre es allerdings wenn ich Veracrypt die Rechte etwas zu mounten geben könnte, und dem Programm das den Logger bedient die Zugriffsrechte auf die Schnittstelle geben könnte. Geht das in Linux so granular oder muss man da wirklich mit SELinux oder AppArmor arbeiten ?
ThorstenHirsch
04.01.16, 23:23
Doch, doch, die eine Variante, die Du erwähnst, ist schon richtig: unter Unix/Linux werden keine Programme berechtigt, sondern User. Wenn Du willst, dass ein Programm etwas mounten darf, dann muss es unter einem User ausgeführt werden, der das darf. Und dementsprechend musst Du die Devices berechtigen ...wobei ich letzteres über die Gruppen lösen würde und nicht über den User.
Programme, die von init gestartet werden und im Hintergrund laufen, bekommen normalerweise einen eigenen User und vielleicht auch eine eigene Gruppe (Beispiel: Apache), wohingegen die Programme, die Dein User manuell oder automatisch (autostart) startet, ganz einfach unter Deinem User-Account laufen. Wozu Veracrypt gehört, weiß ich nicht.
edit: Willst Du Dir wirklich die Mühe machen und die Berechtigungen weiter einschränken als über das User/Group-Schema möglich ist? Ist das auf einem Desktop nicht etwas übertrieben?
Ich wollte für Moneyplex ne Kurzanleitung schreiben wie man das unter Veracrypt auf Linux betreibt. Fand es sehr hilfreich dass damals als ich damit anfing jemand dies für Truecrypt gemacht hatte.
Ich halte es für sicherer Veracrypt mit "root" Rechten laufen zu lassen als dem User dauerhaft Mount Rechte zu erteilen.
Bei dem anderen Programm weiß ich noch nicht wie ich das realisieren werde. Da muss ich nochmal nachsehen welche Rechte es genau benötigt.
Wenn ich schon was "veröffentliche" will ich sichergehen dass ich keine Leute dazu verführe Sicherheitslücken einzubauen. Somit werde ich doch dabei bleiben Veracrypt (und auch mein GPS Logger Programm) per sudoers List Root Rechte zu geben- (siehe oben: Gruppe "realcrypt") und in der Anleitung einfach darauf hinweisen.
Ich erhielt noch einen sehr lehrreichen Text von "Black Adder" zu diesem Thema:
.. ganz so einfach ist es nicht.
Starte mal veracrypt und schaue nach, was
ps auxww|grep veracrypt
sagt.
Unter welchem Benutzer läuft das Programm?
Das ist also nicht das Problem, dieser sudo-Eintrag hat andere Gründe.
Wenn man ein verschlüsseltes Dateisystem öffnen will, dann werden erhöhte Rechte benötigt und erst dann.
Dazu werden weitere veracrypt-Prozess gestartet und die laufen so lange mit root-Rechten, bis sie nicht mehr gebraucht werden.
Für das, was diese Prozess tun müssen, braucht es diese Rechte und das ist eben nicht nur "mount", sondern
- Zugriff auf den device-mapper (braucht Root)
- Zugriff auf Vershlüsselungsmodule des Kernels (braucht Root ggf. zum Laden von Modulen)
- Zugriff auf mount (braucht Root zum Mounten und ggf. zum Nachladen von Dateisystemtreibern)
und falls man einen Container verwendet, dann noch (zuerst)
- Zugriff auf loop-devices (braucht Root u.a. auch zum Laden des "loop"-Kernelmoduls)
Man sieht also, einen Prozess als root zu starten ist manchmal einfacher und nicht zwingend unsicherer als z.B. all diesen oben genannten Prozessen per sudoers o.ä. mit den (noch zu findenden Parametern, wie im Thread vorgeschlagen, viel Spass dabei) erhöhte Rechte zu geben, die dann schlimmstenfalls unabhängig von veracrypt vom Nutzer direkt gebraucht (oder eben missbraucht) werden können.
Veracrypt läuft tatsächlich im Standard nur mit den Rechten des startenden Users, die Sicherheitslücke durch den sudoers List Eintrag ist also nicht so groß wie ich dachte.
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.