[Ubuntu] Shellscripting en MD5crypt?

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Mijn situatie is als volgt. Ik ben bezig met een mailserver op te zetten, hiervoor gebruik ik postfix, postfixadmin en courier, samen met een MySQL database om de users te beheren.

Mijn hele setup werkt prima, maar nu zou ik willen users toevoegen niet alleen via postfixadmin, maar ook via een simpel shellscriptje. Het script dat ik geschreven heb werkt opzich, in de zin dat ik er gegevens mee kan wegschrijven op de juiste plaats in de database, maar het probleem is dat het paswoord dat ik wegschrijf niet in het juiste encryptie is. Postfixadmin schrijft paswoorden weg in md5crypt encryptie, terwijl ik met mijn script niet verder kom dan een gewone MD5 encryptie.

Wat ik dus wil is dat ik met mijn script het paswoord kan omzetten naar een md5crypt'ed paswoord, om het daarna toe te voegen aan de MySQL database, zodat er geen verschil is tussen een user die door postfixadmin toegevoegd werd en een user die door mijn script toegevoegd werd. Ik kan dan wel postfixadmin wijsmaken dat hij een MD5 encryptie moet gebruiken, waardoor het probleem ook zou opgelost zijn, ware het niet dat courier geen gewone MD5 ondersteunt, waardoor pop3 authenticatie dus niet werkt.

Ik ben nog maar pas bezig met linux, dus mijn kennis is behoorlijk beperkt (drie weken geleden wist ik niet wat ls -a deed), maar hier is hoever ik gekomen ben:

(Het script stelt enkele vragen waarvan het antwoord niet gebruikt word, dit is omdat ik van plan ben nog andere dingen er mee te doen, maar dat doet niet ter zake. Verder weet ik dat het waarschijnlijk verre van optimaal werkt, maar ook dat is mijn vraag niet. Het is een WIP.)

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
# Gegevens inlezen
echo "Geef de volledige naam in van de user"
read fullname
echo "Geef de naam in die de user zal gebruiken om in te loggen via FTP, gevolgd door enter"
read username
echo "Geef het paswoord in dat de user zal gebruiken om in te loggen via FTP, gevolgd door enter"
read userpassword
echo "Geef de grootte van de voor de user beschikbare webspace in MB"
read webspace
echo "Geef het domein van de user in in het formaat domein.tld, gevolgd door enter"
read userdomain
echo ""

# Gegevens controleren

echo "Je gaf als naam $fullname in"
echo "Je gaf als gebruikersnaam $username in"
echo "Je gaf als paswoord $userpassword in"
echo "Je gaf als grootte van de webspace $webspace MB in"
echo "Je gaf als domein $userdomain in"
echo ""
echo "Zijn bovenstaande gegevens correct? y gevolgd door enter om verder te gaan, n gevolgd door enter om het script te stoppen en opnieuw te beginnen"

read confirmation

if [ $confirmation == y ]

   then

# Tijdelijke MySQL file maken voor mail

echo "INSERT INTO \`postfix\`.\`mailbox\` (
\`username\` ,
\`password\` ,
\`name\` ,
\`maildir\` ,
\`quota\` ,
\`local_part\` ,
\`domain\` ,
\`created\` ,
\`modified\` ,
\`active\` 
)
VALUES (
'$username@$userdomain', '$username', '$fullname', '$username@$userdomain', '0', '$username', '$userdomain', '0000-00-00 00:00:00', '0000-00-00 00:00:00', '1'
);" > mail.sql

echo "INSERT INTO \`postfix\`.\`log\` (
\`timestamp\` ,
\`username\` ,
\`domain\` ,
\`action\` ,
\`data\` 
)
VALUES (
'0000-00-00 00:00:00', 'dieter@ubuntu.be', 'ubuntu.be', 'create_mailbox', ''
);" >> mail.sql

echo "INSERT INTO \`postfix\`.\`domain\` (
\`domain\` ,
\`description\` ,
\`aliases\` ,
\`mailboxes\` ,
\`maxquota\` ,
\`quota\` ,
\`transport\` ,
\`backupmx\` ,
\`created\` ,
\`modified\` ,
\`active\` 
)
VALUES (
'$userdomain', '$username''s domein', '10', '10', '10', '0', 'virtual', '0', '0000-00-00 00:00:00', '0000-00-00 00:00:00', '1'
);" >> mail.sql
    
    mysql -uroot -ppaswoord postfix < mail.sql
    
    rm -rf ./mail.sql
    
    mkdir /var/mail/vmail/$username@$userdomain 
    
   else
   
   echo "probeer opnieuw"

 fi


Wat ik dus wil is dat de variabele 'userpassword' omgezet word naar een md5crypt'ed paswoord.

Ik heb al heel wat zitten googelen, maar heb niks gevonden.

[ Voor 4% gewijzigd door Verwijderd op 13-02-2009 11:18 ]


Acties:
  • 0 Henk 'm!

  • Recursio
  • Registratie: Mei 2006
  • Laatst online: 01-09 18:41
Volgens mij kun je MySQL bij het INSERTen de functie md5() laten toepassen.
http://dev.mysql.com/doc/...nctions.html#function_md5
Kijk evt. voor het gemak eens via phpMyAdmin hoe je dat kunt doen?

In je eerste query mis ik dat je je password opstuurt, geloof ik. (Ik ben niet heel nauwkeurig aan het kijken.

echo "INSERT INTO \`postfix\`.\`mailbox\` (
\`username\` ,
\`password\` ,
\`name\` ,
\`maildir\` ,
\`quota\` ,
\`local_part\` ,
\`domain\` ,
\`created\` ,
\`modified\` ,
\`active\`
)
VALUES (
'$username@$userdomain', '$username', '$fullname', '$username@$userdomain', '0', '$username', '$userdomain', '0000-00-00 00:00:00', '0000-00-00 00:00:00', '1'
);" > mail.sql

Moet misschien zoiets zijn:
... knip ...
VALUES (
'$username@$userdomain', 'MD5($password)', '$username', '$fullname', '$username@$userdomain', '0', '$username', '$userdomain', '0000-00-00 00:00:00', '0000-00-00 00:00:00', '1'
);" > mail.sql

[ Voor 92% gewijzigd door Recursio op 13-02-2009 11:22 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Recursio schreef op vrijdag 13 februari 2009 @ 11:15:
Volgens mij kun je MySQL bij het INSERTen de functie md5() laten toepassen.
http://dev.mysql.com/doc/...nctions.html#function_md5
Kijk voor het gemak eens via phpMyAdmin hoe je dat kunt doen?
Dat had ik inderdaad al gevonden, maar MD5 en MD5crypt leveren niet dezelfde encryptie.

Acties:
  • 0 Henk 'm!

  • begintmeta
  • Registratie: November 2001
  • Niet online

begintmeta

Moderator General Chat
Heeft het pobleem van Courier met MD5 niet te maken met base64 vs binaire hashes? Hoe dan ook is het verder verstanding een salt te gebruiken als je voor simpel MD5 gaat.

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Recursio schreef op vrijdag 13 februari 2009 @ 11:15:
Volgens mij kun je MySQL bij het INSERTen de functie md5() laten toepassen.
http://dev.mysql.com/doc/...nctions.html#function_md5
Kijk evt. voor het gemak eens via phpMyAdmin hoe je dat kunt doen?

In je eerste query mis ik dat je je password opstuurt, geloof ik. (Ik ben niet heel nauwkeurig aan het kijken.

echo "INSERT INTO \`postfix\`.\`mailbox\` (
\`username\` ,
\`password\` ,
\`name\` ,
\`maildir\` ,
\`quota\` ,
\`local_part\` ,
\`domain\` ,
\`created\` ,
\`modified\` ,
\`active\`
)
VALUES (
'$username@$userdomain', '$username', '$fullname', '$username@$userdomain', '0', '$username', '$userdomain', '0000-00-00 00:00:00', '0000-00-00 00:00:00', '1'
);" > mail.sql

Moet misschien zoiets zijn:
... knip ...
VALUES (
'$username@$userdomain', 'MD5($password)', '$username', '$fullname', '$username@$userdomain', '0', '$username', '$userdomain', '0000-00-00 00:00:00', '0000-00-00 00:00:00', '1'
);" > mail.sql
Je had gelijk over het paswoord niet meesturen, ik stuurde als paswoord de username mee, dat wist ik al en is ondertussen aangepast.

'MD5($userpassword)', had ik al teruggevonden, maar zoals ik al zei genereert dit een MD5, en niet een MD5crypt paswoord.

Ik heb echter ontdekt dat grub-md5-crypt wel degelijk bruikbaar is, alleen weet ik nu nog niet hoe ik die functie moet gebruiken vanuit mijn script. Ik kan ze wel aanroepen, maar hoe geef ik die dan de juiste input vanuit mijn script, en hoe haal ik de output er van binnen in mijn script, in de vorm van een variabele??

user@ubuntu:~# grub-md5-crypt
Password:
Retype password:
$1$sGmBv$A5CTs4OE7VO/gH6rfKoMI/

Acties:
  • 0 Henk 'm!

  • ripperke
  • Registratie: Augustus 2003
  • Laatst online: 19-08 16:06

ripperke

w00t!

kan je niet gewoon de passwd functie van openssl gebruiken?
code:
1
openssl passwd -1 <password>


(-1 = MD5)

If TCP/IP handshaking was less formal, perhaps SYN/ACK would be YO/WASSUP


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
ripperke schreef op vrijdag 13 februari 2009 @ 12:01:
kan je niet gewoon de passwd functie van openssl gebruiken?
code:
1
openssl passwd -1 <password>


(-1 = MD5)
Dit lijkt inderdaad ook een paswoord op te leveren dat begrepen word door courier. Dan heb ik nog 1 vraag, hoe haal ik de output hiervan binnen in mijn script?

Acties:
  • 0 Henk 'm!

  • ripperke
  • Registratie: Augustus 2003
  • Laatst online: 19-08 16:06

ripperke

w00t!

code:
1
md5password=$(openssl passwd -1 $userpassword)


onder je user input en voor je sql statement zetten en dan $md5password gebruiken in je statement.

If TCP/IP handshaking was less formal, perhaps SYN/ACK would be YO/WASSUP

Pagina: 1