Parallel Port Zugriff, ROOT Rechte?

Fragen zu Raspberry, FritzBox, Microcontroller, UART, etc...
Antworten
BlackAngelus
Foriker
Beiträge: 4
Registriert: Fr 2. Aug 2013, 16:20
Kontaktdaten:

Parallel Port Zugriff, ROOT Rechte?

Beitrag von BlackAngelus » Sa 3. Aug 2013, 10: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

tux_
Moderator
Beiträge: 950
Registriert: Di 11. Nov 2008, 20:05
Kontaktdaten:

Re: Parallel Port Zugriff, ROOT Rechte?

Beitrag von tux_ » So 4. Aug 2013, 20: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!

BlackAngelus
Foriker
Beiträge: 4
Registriert: Fr 2. Aug 2013, 16:20
Kontaktdaten:

Re: Parallel Port Zugriff, ROOT Rechte?

Beitrag von BlackAngelus » Mo 5. Aug 2013, 13:32

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

MFG
BlackAngelus

BlackAngelus
Foriker
Beiträge: 4
Registriert: Fr 2. Aug 2013, 16:20
Kontaktdaten:

Re: Parallel Port Zugriff, ROOT Rechte?

Beitrag von BlackAngelus » Mi 7. Aug 2013, 16: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

tux_
Moderator
Beiträge: 950
Registriert: Di 11. Nov 2008, 20:05
Kontaktdaten:

Re: Parallel Port Zugriff, ROOT Rechte?

Beitrag von tux_ » Do 8. Aug 2013, 12: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!

Antworten

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 0 Gäste