[php] scripts runnen als user foo i.p.v. www

Pagina: 1
Acties:

  • Tader
  • Registratie: September 2001
  • Laatst online: 13-08-2024

Tader

mx01.hotmail.com:~#

Topicstarter
Ik had vandaag een discussie met iemand over het volgende:
Ik heb een account op XS4ALL, ik wil via een php script files op die server aanpassen. Het lijkt alleen te werken wanneer ik die files 777 zou maken, zodat de user waaronder de webserver (en dus php) draait dit kan veranderen, dit wil ik niet -> lekker veilig.

Nu zei hij dat je php scripts op zo'n manier kon maken dat ze draaien als je normale user (of iets dergelijks met het zelfde resultaat) zodat je niet je files wereld schrijfbaar hoeft te maken.

Dit klinkt mij als kink-klare-onzin in de oren. Apache draait immers niet als root -> hoe kan apache dan php als een andere gebruiker laten draaien?

Is het nou wel of niet mogelijk om met php op een veilige manier je bestanden te editen?

Verwijderd

Dat ligt eraan hoe je apache configureert: als root, chroot of een gebruiker!

  • Bigs
  • Registratie: Mei 2000
  • Niet online
Met Apache 2.0 kun je PHP onder jouw uid uit laten voeren, weet er verder ook het fijne niet van (alleen dat xs4all geen Apache 2.0 draait).

Verwijderd

Op maandag 15 oktober 2001 01:30 schreef Bigs het volgende:
Met Apache 2.0 kun je PHP onder jouw uid uit laten voeren, weet er verder ook het fijne niet van (alleen dat xs4all geen Apache 2.0 draait).
klopt, maar het hangt er ook vanaf ook welke user apache draait.

  • Bigs
  • Registratie: Mei 2000
  • Niet online
Op maandag 15 oktober 2001 01:31 schreef joska het volgende:

[..]

klopt, maar het hangt er ook vanaf ook welke user apache draait.
Duh, je zult vast nog wel meer in moeten stellen, daarom staat er ook 'kun'.

Verwijderd

Op maandag 15 oktober 2001 01:33 schreef Bigs het volgende:

[..]

Duh, je zult vast nog wel meer in moeten stellen, daarom staat er ook 'kun'.
Misschien..

  • Tader
  • Registratie: September 2001
  • Laatst online: 13-08-2024

Tader

mx01.hotmail.com:~#

Topicstarter
Maar weten jullie een praktische oplossing voor op XS4ALL? Ik zat zelf te denken aan het volgende, maar ik weet niet of dat werkt...

Ik maak in C een programmatje een file saved (van stdin) (met een wachtwoord). Dit programmatje maak ik set-user-id'ed. Ik roep dat programmatje aan vanuit een php script.

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Op maandag 15 oktober 2001 01:30 schreef Bigs het volgende:
Met Apache 2.0 kun je PHP onder jouw uid uit laten voeren, weet er verder ook het fijne niet van (alleen dat xs4all geen Apache 2.0 draait).
Tsja, niet zo gek dat ze dat niet draaien. Aangezien apache in principe nog beta is (ok, de apache site draait er al tijden op).

Maar inderdaad, scripts onder de uid-van-de-gebruiker uitvoeren is mogelijk in apache 2.0

  • _JGC_
  • Registratie: Juli 2000
  • Laatst online: 09:30
heb je telnet of ssh access?
Dan gewoon met chgrp aanpassen naar de group waaronder apache draait, ben je toch ook veilig?

Verwijderd

Daar is ook een php commando voor hoor.
PHP:
1
2
3
<?
$bla = chgrp('file', 'group');
?>

http://www.php.net/chgrp

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Op maandag 15 oktober 2001 10:28 schreef _JGC_ het volgende:
heb je telnet of ssh access?
Dan gewoon met chgrp aanpassen naar de group waaronder apache draait, ben je toch ook veilig?
Maar een gewone user mag dat vaak niet...
Op maandag 15 oktober 2001 10:29 schreef daniel_hoenderdos het volgende:
Daar is ook een php commando voor hoor.
PHP:
1
2
3
<?
$bla = chgrp('file', 'group');
?>

http://www.php.net/chgrp
En dat mag dan natuurlijk al helemaal niet.

Verwijderd

Hmzz, ja. Lekker slim van mij...
Even niet aan gedacht.

  • Tader
  • Registratie: September 2001
  • Laatst online: 13-08-2024

Tader

mx01.hotmail.com:~#

Topicstarter
Op maandag 15 oktober 2001 10:28 schreef _JGC_ het volgende:
Dan gewoon met chgrp aanpassen naar de group waaronder apache draait, ben je toch ook veilig?
Hoe veilig? Elke halve zool bij XS4ALL kan dan een scriptje maken dat die files aanpast! Alle scripts draaien immers als de zelfde user... :(

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Op maandag 15 oktober 2001 01:25 schreef Tader het volgende:
Dit klinkt mij als kink-klare-onzin in de oren. Apache draait immers niet als root -> hoe kan apache dan php als een andere gebruiker laten draaien?
Trouwens...

Apache draait standaard _wel_ als root. Maar het "hoofdprocess" forkt naar een andere user toe...

Waardoor alle clients met (bijv) nobody of www draaien

Verwijderd

Kun je je data niet in een MySQL of PostreSQL database bewaren ?

  • _-= Erikje =-_
  • Registratie: Maart 2000
  • Laatst online: 09-09 15:42
php scripts worden geparsed, niet uitgevoerd toch? dus een chmod 644 zou al genoeg moeten zijn, dan kunnen ze alleen nog maar je inhoud lezen

Verwijderd

Op maandag 15 oktober 2001 11:10 schreef _-= Erikje =-_ het volgende:
php scripts worden geparsed, niet uitgevoerd toch? dus een chmod 644 zou al genoeg moeten zijn, dan kunnen ze alleen nog maar je inhoud lezen
Parsen = kijken of de code aan de PHP grammatica voldoet.
Als het parsen lukt, en je code dus geldig is, gaat de PHP module pas je code uitvoeren. PHP files moeten niet 644 zijn, 444 is al genoeg want de webserver moet die gewoon kunnen lezen.

Maar hij heeft het hier over zijn data files en over het feit dat hij er naartoe wil schrijven. Dan moeten die +w zijn, en liefst niet voor iedereen. Beste oplossing is gewoon die files chgrp www-data maken en dan chmod 660. Die commandos kan je gerust toepassen als jij de eigenaar van die files bent, dus waar zit het probleem eigenlijk ?

  • Tader
  • Registratie: September 2001
  • Laatst online: 13-08-2024

Tader

mx01.hotmail.com:~#

Topicstarter
Ik heb het volgende programmatje geprobeerd te maken, het zou een bestand moeten kunnen maken dat van 'mij' is :-) Dus niet van www-data...

Het lijkt bij mij thuis op de computer te werken (uitvoeren als een andere user kan ik toch schrijven in mijn eigen homedir...) maar op XS4ALL geeft het een segfault (wanneer door een andere gebruiker uitgevoerd)...

(Na compileren heb ik (natuurlijk) het Set-User-Id bitje aangezet...)

aanroepen: ./copy password bron doel

<code>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>

int
main(int argc, char **argv)
{
FILE *ifp, *ofp;

int c;

if (argc != 4) {
fprintf(stderr, "Error: Use the right arguments!\n");
exit(1);
}
if (strcmp(argv[1], "password")) {
fprintf(stderr, "Error: Use the right values!\n");
exit(2);
}
if ((ifp = fopen(argv[2], "r")) == NULL) {
fprintf(stderr, "Error: Cannot open ifp for reading!\n");
exit(3);
}
if ((ofp = fopen(argv[3], "w")) == NULL) {
fprintf(stderr, "Error: Cannot open ofp for writing!\n");
exit(3);
}
while ((c = getc(ifp)) != EOF)
putc(c, ofp);

fclose(ofp);
fclose(ifp);

return 0;
}
</code>
Pagina: 1