Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » Perl/CGI » Setuid für Perl-Script

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: [ 1 ] > 2 <
010
06.12.2004, 16:38 Uhr
Tody



ok, ich hab mich da vertippt. er findet das script jetzt und sagt "permission denied". das klappt auch ohne perl-befehl.
in meinem perl-script gebe ich einen content-type an. das ist das erste was gedruckt wird.

so wie ich es verstanden habe sollte doch mein wrapper die berechtigung 4711 haben und mein script 700. warum muss das script jetzt immer noch für "alle welt" ausführbar sein (755)?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
011
06.12.2004, 19:41 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


da das nun mal so ist
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
012
07.12.2004, 10:44 Uhr
Tody



ok, das nehme ich dann mal so hin.

wenn ich jetzt den c-wrapper aufrufe, erscheint auch mein script. in dem form-tag gebe ich am besten bei action wahrscheinlich auch meinen c-wrapper an, oder?

leider führt das perl-script den iptables-XXX befehl nicht aus. der rückgabewert von


Code:
my $tmp = system("iptables-save /var/lib/filters");



ist -1. irgendwie hat das s-bit beim c-wrapper keinen einfluss.

oh mann, wenn doch mal alles so funktionieren würde wie es beschrieben ist.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
013
07.12.2004, 11:57 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


gib mal den kompletten pfad zu iptables-save an, evtl ist es ja ein "404"? ich weiß nicht was perl als standardpfad dann annimmt...
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
014
07.12.2004, 15:01 Uhr
Tody



hi,

die pfade sind angepasst und iptables-save wird ausgeführt. das heißt, egal ob über den wrapper oder beim direkten aufruf des perl-scripts. allerdings in beiden fällen negativ. rückgabewert von

my $tmp = system("/usr/sbin/iptables-save > /var/lib/filters");

ist 256. konnte bisher nicht rausfinden was das heißt. auf jeden fall ist /var/lib/filters komplett leer.

das hier steht im error_log nach ausführen des scripts:

iptables-save v1.2.11: , referer: http://ip/cgi-bin/test.cgi
Can't initialize: Permission denied (you must be root), referer: http://ip/cgi-bin/test.cgi
, referer: http://ip/cgi-bin/test.cgi

irgendwie frisst er nicht, dass er durch den wrapper root-rechte haben sollte.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
015
07.12.2004, 15:06 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


das problem ist, er sagt "YOU MUST BE ROOT" d.h es nützen keine setuid-rechte ...

evtl hilft es sudo zu verwenden...
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
016
07.12.2004, 18:35 Uhr
typecast
aka loddab
(Operator)



Zitat von Toby:

so wie ich es verstanden habe sollte doch mein wrapper die berechtigung 4711 haben und mein script 700. warum muss das script jetzt immer noch für "alle welt" ausführbar sein (755)?



Es gibt auch eine logische Erklaerung dafuer:

Das set-user Bit wirkt erst dann, wenn das Programm/Script ausgefuehrt wird. D.h., erst musst du die Rechte dafuer haben das Script auszufuehren und erst danach bekommst du die Rechte des Users, dem das Script gehoert.
--
All parts should go together without forcing. ... By all means, do not use a hammer. (IBM maintenance manual, 1925)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
017
08.12.2004, 13:44 Uhr
Tody



Hi,

vielen Dank soweit!!!

Vielleicht wäre es ja das beste, wenn nur eine Datei bearbeitet würde (durch iptables-save erstellt) und ein root-cronjob (oder ein prozess, der erkennt, dass die datei bearbeitet wurde) dann iptables-restore ausführt.

somit bräuchte mein perl-script keine root-rechte. es muss halt verhindert werden, dass zwei leute gleichzeitig die datei durch einen login bearbeiten können. kann ich sowas überprüfen? also wenn ich eine datei in einem perl-script geöffnet habe und diese script wird nocheinmal aufgerufen. kann ich dann feststellen, dass die datei schonmal geöffnet ist durch perl?

und gibt es ein progamm, dass feststellt, ob eine datei bearbeitet wurde und dann einen befehl ausführt?

vielen dank und grüße

tobi
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
018
08.12.2004, 13:53 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


man müsste die datei mit einer art "lock"-befehl nach dem öffnen "blockieren" können und welche dann erst nach dem schliessen wieder freigegeben wird.
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
019
10.12.2004, 12:11 Uhr
~Tody
Gast


Hi,

ja das ist gut. Ich versucxh mal, ob ich mit diesem Ansatz weiter komme.

Setuid lege ich erstmal ad acta.

Vielen Dank schonmal an alle Beteiligten!

Gruß
Tobi
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: [ 1 ] > 2 <     [ Perl/CGI ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: