TProcess und Root skript [gelöst]

Antworten
Benutzeravatar
corpsman
Lazarusforum e. V.
Beiträge: 1498
Registriert: Sa 28. Feb 2009, 08:54
OS, Lazarus, FPC: Linux Mint Mate, Lazarus GIT Head, FPC 3.0
CPU-Target: 64Bit
Wohnort: Stuttgart
Kontaktdaten:

TProcess und Root skript [gelöst]

Beitrag von corpsman »

Servus, ich bastle gerade eine Anwendung, welche eine weitere Anwendung aufruft, die wiederrum Root Rechte benötigt (alles auf dem Raspberry Pi).

Da ich meine Anwendung selbst aber nicht als Root starten will, hatte ich es mit einem Shellskript versucht, welches ich als user ohne Root rechte aufrufen kann (der entsprechende eintrag in /etc/sudoers sorgt dafür das dies geht).

Wenn ich nun aber mittels TProcess das besagte Skript aufrufe geht es nicht, weil mir hier anscheinend die Rechte fehlen (wenn ich meine Anwendung mittels sudo starte gehts übrigens).

Kennt einer von euch einen weg wie ich ohne root rechte aus meinem Code heraus das skript starten kann, so dass es geht ?

Gruß

Corpsman
Zuletzt geändert von corpsman am Di 19. Nov 2013, 07:16, insgesamt 1-mal geändert.
--
Just try it

Benutzeravatar
m.fuchs
Lazarusforum e. V.
Beiträge: 2640
Registriert: Fr 22. Sep 2006, 19:32
OS, Lazarus, FPC: Winux (Lazarus 2.0.10, FPC 3.2.0)
CPU-Target: x86, x64, arm
Wohnort: Berlin
Kontaktdaten:

Re: TProcess und Root skript

Beitrag von m.fuchs »

Hast du mal versucht dein Programm in die /etc/sudoers einzutragen? Wenn ich mich recht erinnere, erbt der Kindprozess die Rechte des Elternprozesses. Dein Programm bräuchte also Root-Rechte.
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de

Socke
Lazarusforum e. V.
Beiträge: 3158
Registriert: Di 22. Jul 2008, 19:27
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
CPU-Target: 32bit x86 armhf
Wohnort: Köln
Kontaktdaten:

Re: TProcess und Root skript

Beitrag von Socke »

Vielleicht kommt sudo nicht damit klar, dass es ohne Standardinput/-output gestartet wird. Versuch mal TProcess.Option = [toUsePipes].

Alternativ kannst du das über die Dateirechte steuern. Das setuid-Bit sorgt dafür, dass die Datei mit den Rechten des Dateieigentümers gestartet wird.
  • Besitzer: root
  • Gruppe: die, mit der das Programm aufgerufen werden soll
  • Berechtigungen: rwsr-x--- (bzw. 4750 oktal)
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein

Benutzeravatar
corpsman
Lazarusforum e. V.
Beiträge: 1498
Registriert: Sa 28. Feb 2009, 08:54
OS, Lazarus, FPC: Linux Mint Mate, Lazarus GIT Head, FPC 3.0
CPU-Target: 64Bit
Wohnort: Stuttgart
Kontaktdaten:

Re: TProcess und Root skript

Beitrag von corpsman »

Servus,

@socke
poUsePipes hat leider nichts gebracht.

@m.fuchs
Wenn ich meinem Programm root rechte gebe, dann sind alle Dateien die es erzeugt, auch wieder im Besitz von root, das würde ich gerne verhindern. Zudem möchte ich nicht jeder x-beliebigen Anwendung Root rechte geben... Du hast allerdings recht, bevor es gar nicht geht. Bleibt mir dies als letzte Wahl.

[Edit]
So das vergeben der Dateirechte hat es gebracht *g*. Wenn die run.sh Datei root gehört, und sie von TProcess gestartet wird. Dann muss ich kein PW eingeben und kann die Anwendung mit root rechten starten. Die Ausgabedatei ist wie gewünscht im Besitz meines Benutzers.

Vielen Dank allen Antwortern, ihr wart wie immer eine große Hilfe.

P.S. : wen interessiert was ich hier mache, dem sei das Stuttgarter Lazarustreffen diesen Fr. empfohlen, da stelle ich es vor.

[Edit2]
Leider hat das vergeben der Dateirechte doch nichts genützt. Ubuntu genehmigt dem User nach einmaliger Eingabe des sudo passwortes für 15 minuten die root rechte. Danach muss das PW wieder eingegeben werden. Somit musste ich nun m.fuchs lösung nehmen, mit allen Nachteilen :(.
--
Just try it

carli
Beiträge: 657
Registriert: Sa 9. Jan 2010, 17:32
OS, Lazarus, FPC: Linux 2.6.x, SVN-Lazarus, FPC 2.4.0-2
CPU-Target: 64Bit

Re: TProcess und Root skript [gelöst]

Beitrag von carli »

Wenn du das Programm mit Sudo startest, werden auch alle erstellten Dateien Eigentum von Root.
Du könntest aber, da du eh root bist, die Datei dem entsprechenden Nutzer übergeben.

Benutzeravatar
corpsman
Lazarusforum e. V.
Beiträge: 1498
Registriert: Sa 28. Feb 2009, 08:54
OS, Lazarus, FPC: Linux Mint Mate, Lazarus GIT Head, FPC 3.0
CPU-Target: 64Bit
Wohnort: Stuttgart
Kontaktdaten:

Re: TProcess und Root skript [gelöst]

Beitrag von corpsman »

@carli

du meinst mit
sudo chown <username> dateiname
? oder gibts da eine in FPC eingebaute variante ? Und kann ich das auch mit von meiner Anwendung erstellten Ordnern machen ?
--
Just try it

Achtzig
Beiträge: 90
Registriert: Mo 15. Okt 2007, 13:09
OS, Lazarus, FPC: Debian
CPU-Target: xxBit

Re: TProcess und Root skript [gelöst]

Beitrag von Achtzig »

Mit FpChown kann man das setzen. Und als Root kannst Du alle Ordner und Dateien ändern - inklusive der selbst erstellten Dateien.

Nachtrag: FpChown befindet sich in der Einheit BaseUnix (bunxovlh.inc).

Benutzeravatar
corpsman
Lazarusforum e. V.
Beiträge: 1498
Registriert: Sa 28. Feb 2009, 08:54
OS, Lazarus, FPC: Linux Mint Mate, Lazarus GIT Head, FPC 3.0
CPU-Target: 64Bit
Wohnort: Stuttgart
Kontaktdaten:

Re: TProcess und Root skript [gelöst]

Beitrag von corpsman »

wenn ich das richtig sehe, muss ich dazu die UID des Benutzers und seiner Gruppe kennen, mittels "id" bekomme ich das in einer Konsole raus, geht es auch mit Lazarus mitteln, habe es in baseunix nicht gefunden.
--
Just try it

Achtzig
Beiträge: 90
Registriert: Mo 15. Okt 2007, 13:09
OS, Lazarus, FPC: Debian
CPU-Target: xxBit

Re: TProcess und Root skript [gelöst]

Beitrag von Achtzig »

User-ID und Group-ID kann mit den Funktionen GetUserId beziehungsweise GetUserGid aus der Einheit users ermittelt werden.

Benutzeravatar
corpsman
Lazarusforum e. V.
Beiträge: 1498
Registriert: Sa 28. Feb 2009, 08:54
OS, Lazarus, FPC: Linux Mint Mate, Lazarus GIT Head, FPC 3.0
CPU-Target: 64Bit
Wohnort: Stuttgart
Kontaktdaten:

Re: TProcess und Root skript [gelöst]

Beitrag von corpsman »

super danke nu gehts.
--
Just try it

Antworten