webForumDet fria alternativet

hjälp med userAdd -p samt crypt();

0 svar · 263 visningar · startad av mikael_a

mikael_aMedlem sedan mars 2000475 inlägg
#1

Hej,

Jag har skapat ett litet skript som läser in användare ifrån en text fil, dessa skapas sedan med userAdd i Debian 3.1 och i MySQL samt sätts Quota på dem.

Problemet uppstår när jag skapar lösenordet, då userAdd kräver Crypt(); så genererar jag lösenorden med denna funktion och får ut en lång sträng, denna sträng använder jag sedan i userAdd -p kollar jag sedan med tex webmin så är det krypterade lösenordet endast mellan 8 - 15 tecken långt medans strängen beståt utav 20 tecken.

Troligen är det något i Debian som jag har glömt att aktivera, men jag får det itne att fungera riktigt.

bifogar koden:


#!/usr/local/bin/php -q

<?php 

$ReadFile  		= "data.txt";		// Filen du hämtar data ifrån
$WriteFile 		= "akronymer.txt";	// Filen du sparar data till
$AliasFile 		= "alias.txt";		// Filen du sparar data till
$PasswordLenght 	= "7";			// Antal tecken i lösenordet

$mysql_server 		= "localhost"; 		// Vilken server MySQL ligger på
$mysql_user 		= "xxx";		// Användarnamn (root)
$mysql_password 	= "xxx"; 		// Lösenord (root)
$mysql_database 	= "";		// Vilken databas
   
$path			= "/home3";		// Sökväg till var användarens www katalog ligger   

// Funktion för att skapa alumpade lösenord.
function generatePassword($plength) {

		if(!is_numeric($plength) || $plength <= 0) {
            		$plength = 7; // Sätter minsta storlek
            	}
            	
        		if($plength > 32){
            			$plength = 32; // Sätter max storlek
        		}

		// Skapar en variabel, som innehåller de bokstäver som skall användas.
		$chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';

		// Random number generator
		mt_srand(microtime() * 1000000);

        // Skapar lösenordet
        for($i = 0; $i < $plength; $i++)  {
            $key = mt_rand(0,strlen($chars)-1);
            $pwd = $pwd . $chars{$key};
        }

        // Byter plats på bokstäverna, för att skapa ännu svårare lösenord
        for($i = 0; $i < $plength; $i++) {
            $key1 = mt_rand(0,strlen($pwd)-1);
            $key2 = mt_rand(0,strlen($pwd)-1);

            $tmp = $pwd{$key1};
            $pwd{$key1} = $pwd{$key2};
            $pwd{$key2} = $tmp;
        }

        return $pwd; // Retunerar resultatet
}

//Ansluter till MySQL
		$conn = mysql_connect($mysql_server, $mysql_user, $mysql_password); 
		mysql_select_db($mysql_database, $conn); 

		print ("Text filen innehåller följande information:\n");
		print ("===========================================\n");
		$ReadFile = $ReadFile; //filnamnet
			
		$search = ("/[a-z]{4}[0-9]{2}/"); // skapar sök kriterierna
						
		$ReadFile = file($ReadFile) Or Die("kunde inte öppna filen"); // laddar filen
    	    	$ReadFile = implode($ReadFile, ""); // tar bort alla mellanslag

		echo "$ReadFile\n"; 
		echo "\n";
					
		  if ( preg_match_all( $search, $ReadFile, $matches ) ) { // om den hittar något som passar sök kriterierna. Gå vidare
		  	for ($i=0; $i< count($matches[0]); $i++) { // listar alla träffar
		  
		  	  $password = generatePassword($PasswordLenght); // Anropar funktionen för att skapa lösenord, skickar med storlek.
		  	  $crypt = crypt($password);
 		  	  
		  	    $akronym = htmlentities($matches[0][$i]); // gör om arrayen till en sträng
		  	     echo "Akronym: $akronym | E-post: $akronym@student.bth.se | Lösenord: $password\nCrypt: $crypt\n\n"; 	  	  
			  	  
			  	  $WriteFile = $WriteFile; //filnamnet - Akronym + lösenord
			  	  
			  	  $Open = fopen ($WriteFile, "a"); // öppnar filen
			  	  	fwrite ($Open, "$akronym\t$password\t$crypt\n"); // sparar filen, med akronym + lösenord
			  	  	fclose ($Open); // stänger filen
			  	  	
			  	  $AliasFile = $AliasFile; //filnamnet - Apache alias
			  	  
			  	  $Open = fopen ($AliasFile, "a"); // öppnar filen
			  	  	fwrite ($Open, "Alias /$akronym \"$path/$akronym/www\"\n"); // sparar filen, med alias 
			  	  	fclose ($Open); // stänger filen
			  	  	
			  	  
			  	  //skapar användaren och hans hemkatalog
			  	  system("useradd -g student -d \"$path\"/\"$akronym\" -m -p \"$crypt\" \"$akronym\""); 
		 				 			
		 			//skapar databasen
		 			mysql_query("CREATE DATABASE $akronym");
 			  		 echo "Databasen $akronym skapades\n";	
 			  		 
 			  		  //rättigheterna för databasen
 			  		  mysql_query("GRANT CREATE TEMPORARY TABLES ON *.* TO $akronym@'%' IDENTIFIED BY '$password' WITH MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0");
 			  		   echo "Rättigheterna för databasen $akronym skapades\n";
 			  		   
 			  		   //rättigheterna för tabellen
 			  		   mysql_query("GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, REFERENCES, INDEX, ALTER, CREATE TEMPORARY TABLES ON $akronym.* TO $akronym@'%' WITH GRANT OPTION");
 			  		    echo "Rättigheterna för tabellen $akronym skapades\n";
 			  		    
 			  		  
 			  		//lägger till 30mb/konto
			  	  	system("edquota -u -p test01 \"$akronym\"");     
 			  		 			  		
		  	} 		
		  }

?>
137 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
134 ms — hämta tråd, inlägg och bilagor (db)