Mailinglisten-Archive |
----------------------------------------------------------- On 23.05.00 at 06:56 florian leibert wrote: >Hallo, ich habe folgendes kleines programm geschrieben und es mit "chmod +s" >zum schreiben von dateien anderer benutzer berechtigt... >trotzdem kommt folgender fehler: [snip] >Warning: fopen("/etc/named.conf","a") - Keine Berechtigung in >/home/www/knmm.de/srvadmin/domain.php on line 14 > >Warning: Supplied argument is not a valid File-Handle resource in >/home/www/knmm.de/srvadmin/domain.php on line 22 > >Warning: Supplied argument is not a valid File-Handle resource in >/home/www/knmm.de/srvadmin/domain.php on line 24 mit chmod +s alleine erreichst Du noch nicht viel. Wenn Deine Berechtigungen wie folgt ausschauen: -rwsr-sr-x 1 ich gruppe 31 Apr 4 09:28 domain.php dann wuerde das nichts anderes bedeuten, als dass das OS das Programm als User 'ich' mit der GruppenId 'gruppe' starten wuerde. Um auf Systemdateien zugreifen zu koennen, muesstest Du die Berechtigungen wie folgt setzen: -rwsr-sr-x 1 root root 31 Apr 4 09:28 domain.php Das wuerde nun bedeuten, dass Dein Programm als root/root gestartet werden wuerde. Ja wuerde, und da kommt jetzt die Falle, ueber die ich auch schon gestolpert bin: Wenn wir mal den apache aussen vor lassen, und das Script direkt von einer sh aus starten wuerden, dann passiert ja folgendes: Die Shell liest die 1. Zeile der Programmdatei ein, und stoesst auf das shebang #!/usr/bin/php Daraufhin startet die Shell den php-Interpreter mit Deinem Programmnamen als Argument. Und genau ab dem Moment sind Deine oben vergebenen Rechte irrelevant, da ja eigentlich der Php-Interpreter gestartert wird, und Dein Programm von dem ja wiederum nur ganz normal eingelesen und verarbeitet wird. Um zu erreichen, dass Dein script nun als root/root laeuft, muesstest Du schon den Interpreter mit root/root und +s ausstatten, wovon ich aber dringenst abraten wuerde, weil dann _alle_ scripts als root laufen!! Unterm apache schaut das dann wieder anders aus: Solange Du Dein Script nicht als CGI startest, sind die Rechte wiederum vollkommen irrelevant, da der apache die Datei ja wiederum nur ganz einfach oeffnet, und durch das mod_php jagt. Verwendest Du CGI, dann hast Du das gleiche Problem wie oben: der php-Interpreter ist nicht root/root. Die einzige Variante mit der das funktioniert, ist der 'suexec'-Mechanismus des apache. Das funktioniert aber _nur_ mit CGI! Das muss aber IMHO dem apache schon beim Kompilieren beigebracht werden. Da gibts beim Apache aber eine gute Doku dazu, die solltest Du wirklich _genau_ durchlesen! Gruesse, Andy
php::bar PHP Wiki - Listenarchive