TProcess und Root skript [gelöst]
- 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]
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
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
Just try it
- 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
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
-
- 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
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.
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
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein
- 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
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 .
@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
Just try it
-
- 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]
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.
Du könntest aber, da du eh root bist, die Datei dem entsprechenden Nutzer übergeben.
- 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]
@carli
du meinst mit
du meinst mit
? oder gibts da eine in FPC eingebaute variante ? Und kann ich das auch mit von meiner Anwendung erstellten Ordnern machen ?sudo chown <username> dateiname
--
Just try it
Just try it
Re: TProcess und Root skript [gelöst]
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).
Nachtrag: FpChown befindet sich in der Einheit BaseUnix (bunxovlh.inc).
- 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]
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
Just try it
Re: TProcess und Root skript [gelöst]
User-ID und Group-ID kann mit den Funktionen GetUserId beziehungsweise GetUserGid aus der Einheit users ermittelt werden.