|
Hvis du ønsker å legge til en bruker på Linuxsystemet ditt ved hjelp av PHP og Apache, er dette en av fremgangsmåtene.
Jeg har:
- Ubuntu 8.10 - server
- PHP
- Apache
Kommandoen vi ønsker utført er:
useradd $1 -m -c "$2" -s /bin/sh -p $3
useradd - Programmet som legger til en bruker. Dette programmet kan ta imot forskjellige parametre.
$1 - Parameter for brukernavnet.
-m - Parameter som forteller useradd at det skal lage en hjemmekatalog tilknyttet brukeren
-c - Parameter for kommentar. Dette er en helt vanlig tekststreng, og inneholder som regel brukerens fulle navn.
"$2" - Parameter for brukernavnet. Viktig at det står i anførselstegn.
-s - Parameter som angir hvilket shell brukeren skal ha. Hvis denne uteblir, velger systemet shell selv.
/bin/sh - Parameter som sier at det skal være /bin/sh shell som skal brukes.
-p - Parameter som forteller at nå kommer passordet.
"$3" - Parameter for passord.
Bash - fil:
Vi trenger en liten fil som skal gjøre denne oppgaven. Vi kaller den nybruker, og den inneholder bare en linje:
useradd $1 -m -c "$2" -s /bin/sh -p $3
Visudo
Vi skal nå fortelle systemet at Apache skal få utføre sudo-kommandoer. Vær svært forsiktig med dette, siden apache er en webserver, og er den koblet til Internett, kan stort sett alle få tilgang. (Joda, det er mulig å begrense, men vi tar ikke hensyn til dette akkurat nå.)
Rediger filen sudoers. Det gjøres tryggest med kommandoen sudo visudo. Jeg la til linjen:
www-data ALL=NOPASSWD:/usr/sbin/useradd, /bin/mkdir, /bin/sh
www-data er "apache-brukeren". Det brukernavnet brukeren får når han besøker sidene. Det neste på linjen forteller systemet programmene www-data skal få lov til å kjøre.
PHP-filen
Neste, og siste skritt, er å lage en fil som inneholder et lite PHP script. Filen heter index.php
Ny bruker
if (isset($_POST['login'])){ //sjekker om login har fått en verdi
$login = $_POST['login']; // hvis login har fått verdi, blir $login tildelt denne verdien
$fulltnavn = $_POST['fulltnavn']; // hvis fulltnavn har fått verdi, blir denne gitt til $fulltnavn
$passwd = $_POST['pwd']; // hvis pwd har fått en verdi, blir denne tildelt $passwd
$passwd_crypt=crypt($_POST'pwd']); // denne linjen crypterer $passwd og gir verdien til $passwd_crypt
$test = '/home/'-$login; // gir variable $test verdien '/home/login'
if (is_dir($test)) { // tester om brukernavnet er en katalog i mappen /home, hvis den er det kommer det en melding og scriptet slutter å kjøre.
echo "Bruker finnes fra før. Velg et annet brukernavn.";
exit();
} else {
$res=`bash /var/www/nybruker $login "$fulltnavn" '$passwd_crypt'`; // Dette er linjen som legger til den nye brukeren.
echo "Ny bruker er lagt til.";
}
?>
Dette er den, etter min mening, enkleste måten å legge til en bruker via intranett/internett. MEN: Jeg har ikke tatt hensyn til sikkerhet eller andre ting. Vær klar over det, og en annen ting: Jeg fraskriver meg alt ansvar hvis dette på noen måte kludrer til maskinen din.
Lykke til!
|