Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
-
blackm
- Moderator und Co-Admin
- Beiträge: 5921
- Registriert: 02.06.2002 15:03:17
- Lizenz eigener Beiträge: MIT Lizenz
Beitrag
von blackm » 24.08.2003 01:18:57
Hi,
ich möchte die GID eines Prozesses ändern. Mit
Code: Alles auswählen
#! /usr/bin/perl -w
use strict;
use diagnostics;
use POSIX;
print "UID: $>\n"; # $> --> effektive UID
print "GID: $)\n"; # $) --> effective GID
POSIX::setuid(23456);
POSIX::setgid(456);
POSIX::setpgid(456, 456);
system("touch /tmp/test");
system("ls -l /tmp/test");
unlink("/tmp/test");
$) = 45674;
print "$>\n";
print "$)\n";
wollte ich das ganze testen. Klappt aber leider nicht (Das Script lief als root). Die erzeugte Datei gehört dem user 23456 und der Gruppe root....
Jemand ne Idee?
by, Martin
-
pdreker
- Beiträge: 8298
- Registriert: 29.07.2002 21:53:30
- Lizenz eigener Beiträge: MIT Lizenz
- Wohnort: Nürnberg
Beitrag
von pdreker » 24.08.2003 04:57:00
Der User exisitert im System?
Passiert einfach nix, oder gibt's nen Fehler? PERL ist da manchmal etwas schweigsam. Kontrollier doch 'mal die Rückgabewerte von setuid und Co...
Patrick
-
Olaf Dietsche
- Beiträge: 520
- Registriert: 12.06.2003 23:18:50
- Wohnort: Siegburg
Beitrag
von Olaf Dietsche » 24.08.2003 12:38:28
Nachdem du setuid() gemacht hast, bist du nicht mehr root und darfst deswegen setgid() nicht mehr ausführen. Versuche mal setuid() am Schluß aufzurufen.
-
blackm
- Moderator und Co-Admin
- Beiträge: 5921
- Registriert: 02.06.2002 15:03:17
- Lizenz eigener Beiträge: MIT Lizenz
Beitrag
von blackm » 24.08.2003 13:16:35
Mensch Olaf, du bist auf jeden Fall der Held des Tages für mich. Sowas in der Richtig war mir heute Nacht auch eingefallen (komische Sachen von ich träume, oder?) aber wer weiss wann ich das ausprobiert hätte...
Nun funktioniert es, Danke für den Hinweis.