Kapselung von Berechtigungen für GPU-Computing-Library

25/03/2014 - 22:26 von Marcel Müller | Report spam
Hallo,

ich habe eine Bibliothek (gpu_fft für Raspi), die aus technischen
Gründen nur als root funktioniert. Heißt, jedes Programm, was sie nutzen
möchte, muss als root laufen. Das ist Mist.

Wie kann man eine Bibliothek so Kapseln, dass sie über eine API ganz
normal von User-Level Programmen genutzt werden kann?

Die technischen Abhàngigkeiten sind ein Character Device für die
Kommandos - das könnte man zur Not noch mit Rechten regeln - und ein
Zugriff auf /dev/mem nebst mmap() und Sperren von Speicherseiten.
Spàtestens letzteres ist ein Show-Stopper.

Klassische Inter-Prozess-Kommunikation mit Kopieren der Daten ist ob der
zu übertragenden Datenmengen raus.

Was ich bràuchte ist so eine Art set user bit für API calls. Muss man
dazu notwendigerweise einen Kernel-Treiber schreiben? Das wàre mir
definitiv eine Gewichtsklasse zu schwer. Oder gibt es auch andere
Möglichkeiten? Kann man Code in Bibliotheksdateien besondere Rechte
einràumen?

Plattform ist Raspbian, also letztlich Debian.


Marcel
 

Lesen sie die antworten

#1 Juergen Ilse
25/03/2014 - 23:13 | Warnen spam
Hallo,

Marcel Müller wrote:
ich habe eine Bibliothek (gpu_fft für Raspi), die aus technischen
Gründen nur als root funktioniert. Heißt, jedes Programm, was sie nutzen
möchte, muss als root laufen. Das ist Mist.
Wie kann man eine Bibliothek so Kapseln, dass sie über eine API ganz
normal von User-Level Programmen genutzt werden kann?



Gar nicht, wenn die Library selbst etwas tut, was nur root tun kann.

Die technischen Abhàngigkeiten sind ein Character Device für die
Kommandos - das könnte man zur Not noch mit Rechten regeln - und ein
Zugriff auf /dev/mem



Das solltest du lassen, wenn du auch Programme ohne root-Rechte deine
Library nutzen lassen willst.

nebst mmap()



mmap() benoetigt doch nicht zwingend root-Rechte.

und Sperren von Speicherseiten.



Was meinst du hiermit?

Spàtestens letzteres ist ein Show-Stopper.



Wirklich?

Klassische Inter-Prozess-Kommunikation mit Kopieren der Daten ist ob der
zu übertragenden Datenmengen raus.



Fuer klassische IPC gibt es eine Menge Moeglichkeiten: neben pipes,
sockets und Message-Queues gibt es auch noch shared memory ...

Was ich bràuchte ist so eine Art set user bit für API calls.



Ich denke, was du brauchst, sind ein paar andere Konzepte fuer die
Implementierung deiner Library ...

Tschuess,
Juergen Ilse ()
Ein Domainname ist nur ein Name, nicht mehr und nicht weniger.
Wer mehr hineininterpretiert, hat das Domain-Name-System nicht
verstanden.

Ähnliche fragen