[PHP] Linux user met pass toevoegen via exec()

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Norckon
  • Registratie: September 2000
  • Laatst online: 01-09 21:26
Hallo,

Op het moment ben ik met een soort van mediagallerij in PHP bezig, waarbij het mogelijk moet worden grote aantallen bestanden in 1x als album toe te voegen. Om dit te bereiken wil ik op een bepaald moment Linux een gebruiker aan laten maken (10 random characters), incl. wachtwoord, om vervolgens een ftp link te geven waar de gebruiker zijn bestanden kan droppen. Na uploaden en een druk op de knop worden vervolgens de bestanden verwerkt en de gebruiker weer weggehaald.

Na installeren van sudo en het toekennen van exec-rechten voor useradd aan de apache-user (www-data), gebruik ik de volgende regel om een gebruiker toe te voegen:
PHP:
1
exec( sprintf("sudo useradd -d %s -s /bin/false -p %s %s", $updir, $crpass, $user) );


Dit werkt prima; de gebruiker wordt toegevoegd. Het probleem is nu het volgende: ik weet niet op welke manier het password ($crpass) gecodeerd moet worden. Naar mijn weten gebruikt Linux de crypt functie, welke PHP ook kent. Ik heb twee dagen lopen zoeken en alle mogelijke combinaties van crypt, md5, verschillende salts geprobeerd, maar hij blijft de login weigeren. Iemand enig idee of ervaring met iets dergelijks?

Acties:
  • 0 Henk 'm!

  • Vesta
  • Registratie: November 2004
  • Niet online
Het script van dit adres werkt bij mij. Het is wel een php5-bestand, mogelijk moet je het iets aanpassen voor php4. Ook krijg ik random een fout op regel 86. Als je dit script wil gebruiken moet je het dus nog wel even debuggen.

Nog wat opmerkingen:
  • Gebruik escapeshellarg als je dat nog niet deed.
  • Let op dat voor sommige systemen de maximum lengte 8 tekens is voor de username.
  • Hebben nieuwe gebruikers wel toegang tot de ftp, moeten ze niet eerst in een ftp group komen of een geldige shell hebben?
  • Is het gebruik van ftp niet te omslachtig? Bestanden uploaden met een formulier is veel makkelijker voor bezoekers. Enig voordeel van ftp is misschien dat er grotere bestanden geupload kunnen worden, maar daar heeft php ook een aantal instellingen voor.

Acties:
  • 0 Henk 'm!

  • Norckon
  • Registratie: September 2000
  • Laatst online: 01-09 21:26
Whehe.. af en toe ben ik echt te dom..

Het probleem kwam door het instellen van /bin/false als shell. vsftpd accepteerd dan de login niet, zoals je terecht opmerkt.

Het scriptje wat je gaf loopt inderdaad vast op regel 86, bij mij zelfs met een time-out. Nu ik het probleem gelocaliseerd heb blijkt dat de crypt functie van PHP i.c.m. een handmatig opgegeven salt ook prima voldoet.

FTP is misschien een beetje omslachtig, maar zeker in IE is er dan gewoon op een link te klikken en zijn de bestanden makkelijk met drag-and-drop up te loaden. Aangezien er eigenlijk altijd grote hoeveelheden bestanden, waaronder grote, geupload zullen worden, leek ons dit de beste oplossing. Bij formulieren moet je toch elk bestand apart opgeven..

Bedankt voor de reactie!

Acties:
  • 0 Henk 'm!

  • JeRa
  • Registratie: Juni 2003
  • Laatst online: 30-04 10:28

JeRa

Authentic

Norckon schreef op woensdag 02 november 2005 @ 00:58:
Het probleem kwam door het instellen van /bin/false als shell. vsftpd accepteerd dan de login niet, zoals je terecht opmerkt.
Ben ook tegen dat probleem aangelopen in vsftpd, maar het is op te lossen door vsftpd een allow-file te laten lezen met usernames die ook zonder geldige login mogen inloggen :) de PAM-configuratie van vsftpd bevat waarschijnlijk ook een regel met pam_shells.so, ook wel handig om die te commenten.

ifconfig eth0 down


Acties:
  • 0 Henk 'm!

  • Hagar
  • Registratie: Februari 2001
  • Laatst online: 20-03 20:39

Hagar

Diabootic

Als ik het goed heb kijkt vsftpd in /etc/shells of de shell wel geldig is.

Nu ook zonder stropdas