[PHP] Linux gebruiker authenticeren

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Is het mogelijk om via een PHP script een Linux gebruiker te authenticeren opdat deze een bestand kan wegschrijven in een specifieke directory? Normaal wordt alles namelijk onder de webserver gebruiker (Apache in mijn geval) uitgevoerd. Alleen specifieke gebruikers zouden in deze directory mogen schrijven. Andere gebruikers mogen wel de inhoud van de directory lezen.

Als iemand een andere oplossing voor dit probleem heeft (SSH bv) hoor ik het graag.

Acties:
  • 0 Henk 'm!

Verwijderd

In principe kan dit niet in een PHP scriptje als PHP als Apache module draait. Als het als cgi-script draait kan je het setuid root maken, zodat het overal in kan schrijven. Dat wil je niet, want dat is onveilig. Een andere optie zou zijn om een shell op te starten vanuit PHP en daarin een su te doen ofzo.

Acties:
  • 0 Henk 'm!

Verwijderd

Verwijderd schreef op 21 november 2003 @ 18:56:
Een andere optie zou zijn om een shell op te starten vanuit PHP en daarin een su te doen ofzo.
Dat is inderdaad goed.

Wat je het beste niet kan doen is sudo gebruiken met passwd op die user uit, want als er dan een exploit in je site zit, is sudo mkreiserfs -f /dev/hda3 al goed genoeg om je server te slopen :z

Acties:
  • 0 Henk 'm!

  • dingstje
  • Registratie: Augustus 2002
  • Laatst online: 02-01-2024
je kan best een shellscriptje maken die passwd uitleest en in een temp filetje dropt. je leest die uit met php en verwijdert dat temp filetje weer.

If you can't beat them, try harder


Acties:
  • 0 Henk 'm!

  • DiedX
  • Registratie: December 2000
  • Laatst online: 18:19
Ik zie toch meer in mod_pam. Kan je met wat mooie functies heel de zooi dichttimmeren. Of je moet iets specifieker wezen!

DiedX supports the Roland™, Sound Blaster™ and Ad Lib™ sound cards


Acties:
  • 0 Henk 'm!

  • MikeN
  • Registratie: April 2001
  • Laatst online: 15-09 18:48
DiedX schreef op 21 november 2003 @ 21:09:
Ik zie toch meer in mod_pam. Kan je met wat mooie functies heel de zooi dichttimmeren. Of je moet iets specifieker wezen!
PAM is dan echter nog niet direct te benaderen vanuit PHP volgens mij?
Verder kun je dan wel authenticeren, maar nog niet wegschrijven onder een bepaalde user, aangezien daarvoor nog steeds een setuid oid nodig is.

Het script setuid root maken zal niet werken, aangezien script door _veel_ (zoniet alle?) unixes nooit setuid worden uitgevoerd om veiligheidsredenen.

Je kan een su uit laten voeren, waarvoor het volgens mij dan het makkelijkst is als je de data eerst in een tempfile zou opslaan en die later naar de juiste dir zou kopieren in het su commando. Daarbij moet je echt op veiligheidslekken letten, in de tijd tussen het opslaan in de tempfile en het kopieren/moven van de file door su zou hij mogelijk gelezen kunnen worden door andere gebruikers van de server.

Een andere optie is om niet PHP maar Perl te gebruiken. Je kan dan ook veel makkelijker via PAM checken (daar is wel een Perl module voor ofzo). Dit is eventueel ook via Apache setuid aan te roepen (via suidperl). Let echter dan wel _heel_ goed op je beveiliging.

[ Voor 7% gewijzigd door MikeN op 21-11-2003 22:38 ]


Acties:
  • 0 Henk 'm!

  • Theodoor
  • Registratie: Juni 1999
  • Laatst online: 08-08 12:08
Kijk eens op onderstaande site:
http://www.math.ohio-state.edu/~ccunning/pam_auth/
Volgens mij zoek je zoiets.

Wat je ook kan doen is de POSIX functies van de PHP API gebruiken:
http://nl.php.net/manual/nl/function.posix-getpwnam.php
Pagina: 1