#!/usr/bin/php -q &1"; exec($cmd,$ausg,$ret); if (0!=$ret) { echo "Konnte Datenbank nicht anlegen\n"; echo "MySQL meldet: \n"; echo (implode("\n",$ausg)); } else { echo "Datenbank angelegt\n"; $cmd="mysql --execute=\"use $user;grant all privileges on $user to $user@\\\"%\\\" identified by 'temp';\""; exec($cmd); $cmd="mysql --execute=\"use $user;grant all privileges on $user.* to $user@\\\"%\\\" identified by 'temp';\""; exec($cmd); echo ("Weiter mit Enter"); } echo "weiter mit Enter"; fgets($in,100); } // Loescht die Datenbank des Users function db_loeschen($in,$user) { cls(); $cmd="mysql --execute=\"drop database $user;\""; exec($cmd,$ausg,$ret); if (0!=$ret) { echo "Konnte Datenbank nicht loeschen\n"; echo "MySQL meldet: \n"; echo (implode("\n",$ausg)); } else { $cmd="mysql --execute=\"use mysql; delete from user where user='$user';\""; exec ($cmd); $cmd="mysql --execute=\"use mysql; delete from tables_priv where user='$user';\""; exec ($cmd); echo "DB geloescht \n"; } echo "weiter mit Enter"; fgets($in,100); } // Legt das Verzeichnis public_html fuer den User an function webdir_anlegen($in,$user) { cls(); $cmd="mkdir /home/$user/public_html 2>&1"; exec($cmd,$ausg,$ret); if (0!=$ret) { echo "Konnte Verzeichnis nicht anlegen\n"; echo "Linux meldet: \n"; echo (implode("\n",$ausg)); } else { $cmd="chown $user /home/$user/public_html"; exec($cmd); $cmd="chgrp users /home/$user/public_html"; exec($cmd); echo "Verzeichnis angelegt\n"; } echo "Weiter mit Enter\n"; fgets($in,100); } // Legt das Home-Verzeichnis des Users neu an function homedir_anlegen($in,$user) { cls(); $cmd="mkdir /home/$user 2>&1"; exec($cmd,$ausg,$ret); if (0!=$ret) { echo "Konnte Verzeichnis nicht anlegen\n"; echo "Linux meldet: \n"; echo (implode("\n",$ausg)); } else { $cmd="chown $user /home/$user"; exec($cmd); $cmd="chgrp users /home/$user"; exec($cmd); echo "Verzeichnis angelegt\n"; } echo "Weiter mit Enter\n"; fgets($in,100); } // Loescht einen User samt dazugehoeriger Datenbank function del_user($in,$user) { db_loeschen($in,$user); $cmd="userdel -rf $user 2>&1 | grep -v crontab"; exec ($cmd); echo "User $user geloescht\n"; echo "Weiter mit Enter\n"; fgets($in,100); } // Setzt das Passwort des Users wieder auf temp function reset_passwort($in,$user) { cls(); // grept die alte User-Zeile aus /etc/shadow $cmd="grep $user /etc/shadow"; exec($cmd,$line); // Kopiert die alte /etc/shadow ohne Zeile des Users $cmd="grep -v $user /etc/shadow > /etc/sha_temp"; exec($cmd); // Codiert Passwort $pwd=crypt("temp","XY"); $pos1=strpos($line[0],":"); $pos2=strpos($line[0],":",$pos1+1); // Usernamen extrahieren $newline=substr($line[0],0,$pos1+1); // Neues Passwort einfuegen $newline.=$pwd; // Rest der alten Zeile anhaengen $newline.=substr($line[0],$pos2,strlen($line[0])-$pos2); // Neue Zeile an die temporaere /etc/shadow anhaengen $cmd="echo \"$newline\" >> /etc/sha_temp"; exec($cmd); // Backup der alten Datei erstellen exec ("cp /etc/shadow /etc/sha_backup"); // /etc/shadow ueberschreiben exec ("mv /etc/sha_temp /etc/shadow"); echo "Passwort geaendert\nWeiter mit Enter"; fgets($in,100); } // Funktion main um Exploits mit Globals zu verhindern function main($argc, $argv) { $in=fopen("php://stdin","r"); $err=fopen("php://stderr","w"); // Wurde ein Username uebergeben? if (3==$argc && "-u"==$argv[1] && isset($argv[2])) { $user=$argv[2]; // Usernamen auslesen } else { // Username wurde nicht angegeben fputs($err,"Bitte mit -u user einen Usernamen angeben\n"); exit(1); } // Funktion um mit /etc/passwd zu // pruefen ob es den User gibt if (false === user_exists($user)) { fputs($err,"Username existiert nicht\n"); exit(2); } while (1) //Endlosschleife zur Verarbeitung { cls(); text_rot(); echo "Administration fuer User $user\n"; text_schwarz(); echo "1) Konsistenz pruefen\n"; echo "2) MySQL DB fuer User anlegen\n"; echo "3) MySQL DB von User loeschen\n"; echo "4) Web-Verzeichnis fuer User anlegen\n"; echo "5) Home-Verzeichnis fuer User anlegen\n"; echo "6) Passwort zuruecksetzen\n"; echo "7) User loeschen\n"; echo "q) Programm beenden\n\n"; echo "Ihre Wahl: "; // Bei der Eingabe Whitespaces entfernen $eingabe=trim(fgets($in,255)); switch ($eingabe) { case "1": konsistenz_check($in,$user); break; case "2": db_anlegen($in,$user); break; case "3": db_loeschen($in,$user); break; case "4": webdir_anlegen($in,$user); break; case "5": homedir_anlegen($in,$user); break; case "6": reset_passwort($in,$user); break; case "7": del_user($in,$user); break; // Weitere Cases case "q": exit(0); // Piepton bei ungueltiger Eingabe default: echo chr(7); } } } // main main($argc, $argv); ?>