Parallel Port Zugriff, ROOT Rechte?

Per Programm Hardware ansprechen

Parallel Port Zugriff, ROOT Rechte?

Beitragvon BlackAngelus » Sa 3. Aug 2013, 09:28

Hallo alle zusammen,

hab ein kleines Progi, das auf den LPT Port Zugreift, es klappt alles auch soweit, jedoch nur wenn ich das Progi als ROOT ausführe.
Nun zu der Frage, wie kann ich ohne root Rechte darauf zugreifen bzw die root rechte anfordern aus Gambas herraus damit keine Fehler auftaucht??

MFG und danke im voraus
BlackAngelus
BlackAngelus
Foriker
 
Beiträge: 4
Registriert: Fr 2. Aug 2013, 15:20

Re: Parallel Port Zugriff, ROOT Rechte?

Beitragvon tux_ » So 4. Aug 2013, 19:03

Die meisten Geraetedateien gehoeren root und koennen daher nur durch Programme, die ueber root-Rechte verfuegen, angesprochen werden - reine Sicherheitsmasznahme (man stelle sich vor, jedes beliebige Programm koennte z.B. Daten irgendwo auf die Festplatte schreiben, ohne eine Instanz um dieses Privileg bitten zu muessen).

Es ist moeglich, mithilfe des chmod-Programms oder geeigneter udev-Regeln die Zugriffsrechte auf deinen Parallelport fuer deinen Benutzer (oder deine Gruppe) anzupassen. Das hat aber den Nachteil, dass dann alle Programme, die unter deinem Namen ausgefuehrt werden theoretisch Zugriff auf den Parallelport erlangen koennen und dass ein anderer Benutzer deines Programms erst sein System entsprechend konfigurieren muss, was nicht sehr nutzerfreundlich ist.

Generell wird die folgende Strategie verfolgt:

1) Beim Start des Programms: Bin ich ein root-Programm, d.h. ist User.Id = 0? Wenn ja, dann ist das Ziel erreicht. Wenn nicht, folge Schritt 2);
2) Die Klasse Desktop in gb.desktop bietet die Methode Desktop.RunAsRoot(), welche den Benutzer ueber ein installiertes graphisches Werkzeug das root-Password (fuer das Programm "su") angeben laesst und dann das angegebene Programm ausfuehrt. Diese Methode wird genutzt, um das aktuelle Programm erneut, diesmal aber mit root-Rechten, ausfuehren zu lassen;
3) Diesen Prozess beenden.

Der Quelltext fuer ein graphisches Programm sieht damit wie folgt aus:

Code: Alles auswählen
' Gambas class file

Public Sub _new()
  ' Wenn nicht bereits root
  If User.Id <> 0 Then
    ' Wenn wir ein ausfuehrbares Gambas-Archiv sind, dann muessen wir gbr3 als Interpreter verwenden...
    If Application.Path Ends ".gambas" Then
      Desktop.RunAsRoot("gbr3 " & Application.Path)
    Else ' sonst (wir sind ein Projektverzeichnis) gbx3.
      Desktop.RunAsRoot("gbx3 " & Application.Path)
    Endif
    ' Eine neue Instanz dieses Programmes sollte nun mit root-Rechten laufen. Wir beenden diesen Prozess.
    Me.Close()
  Endif
End
Achtung: Es passiert, dass ich einen frisch geschrieben Beitrag innerhalb von 10 Minuten noch 3-4 Mal aendere!
tux_
Site Admin
 
Beiträge: 941
Registriert: Di 11. Nov 2008, 20:05

Re: Parallel Port Zugriff, ROOT Rechte?

Beitragvon BlackAngelus » Mo 5. Aug 2013, 12:32

Hallo tux_,
genau sowas habe ich gesucht, danke danke ;-)

MFG
BlackAngelus
BlackAngelus
Foriker
 
Beiträge: 4
Registriert: Fr 2. Aug 2013, 15:20

Re: Parallel Port Zugriff, ROOT Rechte?

Beitragvon BlackAngelus » Mi 7. Aug 2013, 15:05

Hallo nochmal,

bekomme nun folgende Fehlermeldung:

Code: Alles auswählen
Warning: Tried to connect to session manager, None of the authentication protocols specified are supported


beim starten des Progis.
Weiss vielleicht jemand Rat?

MFG
BlackAngelus
BlackAngelus
Foriker
 
Beiträge: 4
Registriert: Fr 2. Aug 2013, 15:20

Re: Parallel Port Zugriff, ROOT Rechte?

Beitragvon tux_ » Do 8. Aug 2013, 11:28

Es gibt scheinbar Probleme bei der Interaktion von Desktop.RunAsRoot() und deinem Desktop. Da kann ich nicht helfen.
Achtung: Es passiert, dass ich einen frisch geschrieben Beitrag innerhalb von 10 Minuten noch 3-4 Mal aendere!
tux_
Site Admin
 
Beiträge: 941
Registriert: Di 11. Nov 2008, 20:05


Zurück zu Hardware

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast

cron