Michael Hilscher
Wenn Du das shell script ändern kannst, obwohl es nur für root les- und ausführbar sein wird, dann ist sicherlich alles wurscht. Ich denke, dass ein kompiliertes c-programm mit suid bit und owner root sicherlich schwerer zu ändern ist als ein perlscript mit suidperl? Ich versuche nicht, dein C-Programm zu verändern. Bei einer Veränderung entfällt ja automatisch das suid-Bit! Wenn Du z.B. nur einen Aufruf meinscript.sh verwendest, dann verändere ich den Pfad. Oder je nachdem, was in deinem Script verwendet wird, versuche ich wirklich, einfach über irgendwelche Ansatzpunkte etwas zu gewinnen. $PATH ist ein Ansatz, aber es gibt noch deutlich mehr. Du kannst natürlich den PATH setzen, aber was ist mit aliasen und und und ...
Aber zur Zeit bekomme ich weder das eine noch das andere hin, sodass ich meinem Partner für diese Arbeiten einen root-login 1. Testprogramm: perltest.pl --- #!/usr/bin/suidperl system ("date > datumsausgabe"); exit -rwsr-x--- 1 root users 58 Apr 25 21:11 perltest.pl
macvampi@linbook:~/test> perltest.pl Can't do setuid
ls -l /usr/bin/suidperl Ich bin sicher, dass es kein suid-Bit gesetzt hat! Also chmod u+s /usr/bin/suidperl Und dann noch dafür sorgen, dass SuSEconfig ihm dies nicht wieder wegnimmt!
2. Testprogramm: cprog (source: cprog.c / kompiliert mit gcc, option -o) --- #include
int main( int argc, char *argv[]) { return execv( "scriptname", argv); } -rwsr-x--- 1 root users 14669 Apr 25 22:02 cprog -r-xr-x--- 1 root root 71 Apr 25 21:59 scriptname macvampi@linbook:~/test> ./cprog scriptname: scriptname: Keine Berechtigung
Ähm ... was ist die erste Zeile von Deinem Script? #!/bin/sh oder so nehme ich an, oder? Ruf es doch ansonsten explizit auf: /bin/sh /path/to/scriptname
Ich kenne mich mit Perl nicht so gut aus. Es geht um Erweiterungen an der httpd.conf (automatisches Eintragen von Directories und Aliasen, sowie dem anlegen eines Useraccounts mit Passwort (nur für FTP).
useradd $1 -g nogroup -s /bin/false - d /usr/local/httpd/htdocs/kundenserver/$1/ftp echo "$1"":""$2" | chpasswd chown -R $1 /usr/local/httpd/htdocs/kundenserver/$1/cms/ftp chown -R $1 /usr/local/httpd/htdocs/kundenserver/$1/cms/ftp chmod -R 770 /usr/local/httpd/htdocs/kundenserver/$1/cms/ftp chmod -R 770 /usr/local/httpd/htdocs/kundenserver/$1/cms/ftp
zeile=`grep -sn "#Auto" httpd.conf` IFS=:; set -- $zeile edit_anfang=$1 zeilen=`wc -l httpd.conf` IFS=" "; set -- $zeilen; let bis=$1-$edit_anfang cat httpd.conf | head -$edit_anfang > httpd.tmp.conf echo "Alias und Core Directory bzw vserver bei domain" >> httpd.tmp.conf cat httpd.conf | tail -$bis >> httpd.tmp.conf cat httpd.tmp.conf > httpd.conf rm httpd.tmp.conf rcapache reload
Systemaufrufe kannst Du in Perl mit system machen. Aber das ist evtl. nicht ganz so sinnvoll. *grübel* Aber vielleicht konnte ich Dir ja erst einmal etwas helfen. Ansonsten können wir gerne eine erweiterte Fehlersuche per PM durchführen. Mit den besten Grüßen, Konrad Neitzel -- SoftMediaTec GmbH Tel: 0172 / 689 31 45 Fax: 069 / 90 50 99 53