[UNIX/Shell] Loginscript - incorrect password afvangen

Pagina: 1
Acties:
  • 193 views sinds 30-01-2008
  • Reageer

  • aaajeetee
  • Registratie: Augustus 2002
  • Laatst online: 09:31
Ik ben vrij nieuw in UNIX / shell scripts en stuit nu op een probleem.

Ik wil graag via een shell script automatisch inloggen (als root) en dan enkele commando's uitvoeren (o.a. groupadd). Ik doe dit m.b.v. expect.

Het wachtwoord wordt ter beveiliging als parameter meegegeven aan het script.
Nou lukt het mij wel om in te loggen, alleen wanneer het wachtwoord foutief is, wil ik graag een "custom" melding tonen en het script stoppen.

Wanneer ik "set timeout -1" gebruik, wordt de tekst "su: incorrect password" opgevangen (in de except) en wordt mijn melding getoond.
Helaas wordt er, bij meesturen van het correcte wachtwoord, niet meer ingelogd, maar staat het script doodleuk te wachten :s

Heeft iemand een idee hoe ik dit op kan lossen?
Alvast bedankt!

Het script:
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
set timeout -1;

#controle op wachtwoord invoer.
if {[llength $argv] < 2} {
    #logging!
    send_user "Te weinig parameters.\n";
    exit 250;
}

set username "momi";
set password [lindex $argv 0];
set action [lindex $argv 1];


#Login met $username en $password
spawn su $username;
sleep .1;

expect {
        "Password:" {
            stty -echo;
            send "$password\r";
            exp_continue -continue_timer;
        } "incorrect" {
            send_user "Incorrect password!\n";
            exit 251;
        } eof {
            send_user "Connection to host failed.\n";
            exit 252;
        }
}
sleep .1;

send "whoami\r";
sleep .1;



send "exit 0\r";
interact;



Edit: ik heb al op Google enzo gezocht, maar ben geen oplossing tegengekomen voor dit probleem.


Edit2: bij foutief wachtwoord is dit nu de uitvoer:
[momi@ns1 backbone]$ ./expect.sh kees kees
spawn su momi
Password:
su: incorrect password
Incorrect password!
Bij correct wachtwoord:
[momi@ns1 backbone]$ ./expect.sh wachtwoord kees
spawn su momi
Password:
[momi@ns1 backbone]$

[ Voor 12% gewijzigd door aaajeetee op 09-01-2008 11:18 ]


  • moto-moi
  • Registratie: Juli 2001
  • Laatst online: 09-06-2011

moto-moi

Ja, ik haat jou ook :w

Waarom doe je dit met su en niet gewoon met sudo? Daar wordt je scripting ook wat makkelijker van denk ik :P

God, root, what is difference? | Talga Vassternich | IBM zuigt


  • aaajeetee
  • Registratie: Augustus 2002
  • Laatst online: 09:31
moto-moi schreef op woensdag 09 januari 2008 @ 11:26:
Waarom doe je dit met su en niet gewoon met sudo? Daar wordt je scripting ook wat makkelijker van denk ik :P
Omdat de hoofdreden van dit script is dat het via PHP aangeroepen wordt. En aangezien PHP dan user "apache" heeft, kan in élk phpscript dus dit script aangeroepen worden, wat dus niet mag.

mits gebruiker apache sudo mag uitvoeren

[ Voor 6% gewijzigd door aaajeetee op 09-01-2008 11:29 ]


  • GrooV
  • Registratie: September 2004
  • Laatst online: 30-01 16:47
Als je het wachtwoord via een parameter meegeeft kan iedereen die ps aux/top/w/who doet zien wat het wachtwoord is...

  • aaajeetee
  • Registratie: Augustus 2002
  • Laatst online: 09:31
GrooV schreef op woensdag 09 januari 2008 @ 13:55:
Als je het wachtwoord via een parameter meegeeft kan iedereen die ps aux/top/w/who doet zien wat het wachtwoord is...
Zal misschien wel aan mij liggen, maar dit is mijn ps aux, bij uitvoer van het script:
#de eerste regel is het script
momi 9361 0.0 0.0 5844 1496 pts/3 S 15:31 0:00 /usr/bin/expect .
root 9362 0.0 0.0 5128 1088 pts/2 S 15:31 0:00 su momi
Geen wachtwoord dus.

Overigens is het probleem (na 4uur) opgelost:
code:
1
2
set prompt "(%|#|\\$) $"; 
en bij de expect: -re $prompt

  • whoami
  • Registratie: December 2000
  • Laatst online: 30-01 23:30
dergelijke OS - specifieke scripts horen beter thuis in het bijpassende 'OS' forum. In dit geval dus, Non Windows Operating Systems

->NOS

https://fgheysels.github.io/


Verwijderd

Je kan sowieso beter iets met ssh en ssh-keys doen en misschien zoals eerder aangegeven door moto-moi gebruik maken van sudo/su.

  • phobosdeimos
  • Registratie: Augustus 2007
  • Laatst online: 11:45
Shellscriptjes ivm sudo/su en paswoorden rechtstreeks aanroepen vanuit php, hackers vinden dat heerlijk om te zien :)

  • Honolulu
  • Registratie: September 2007
  • Niet online
ajt schreef op woensdag 09 januari 2008 @ 11:28:
[...]


Omdat de hoofdreden van dit script is dat het via PHP aangeroepen wordt. En aangezien PHP dan user "apache" heeft, kan in élk phpscript dus dit script aangeroepen worden, wat dus niet mag.

mits gebruiker apache sudo mag uitvoeren
waarom laat je niet gewoon een file achter met daarin de gewenste gegevens, zoals nieuwe username, password(hash) en laat je die door een cron-job verder verwerken?

Ach, laat maar...


Verwijderd

Moeten de users echt in /etc/passwd staan. Kan je niet voor je toepassing virtuele users gebruiken? Dit soort dingen vanuit apache/php scripten is zeer onverstandig i.v.m. crackers.
Pagina: 1