Bytt passord ved første pålogging

Jeg har en Linux server med ssh kontoer som jeg deler ut til folk. Hver gang sier jeg at de må endre passordet, men skjer dette? Vel, dere vet svaret... Nei! Derfor tok jeg fatt på å lage en slik funksjonalitet selv.

Dette kan selvfølgelig gjøres på langt mer avanserte metoder, men jeg vil ha det enkelt da jeg ikke trenger noe mer. Denne metoden fungerer om du bruker helt vanlig shadow fil, så den krever ikke LDAP server eller noe slikt.

Tankegangen er at login scriptet som kjøres når brukeren logger seg inn starter en passwd som ikke kan avbrytes og som ikke gir seg før den avslutter med 0, altså at passordet har blitt endret uten feil.

Jeg har to programmer for dette, først det som kjører passwd:

/usr/local/bin/fpasswd

#!/bin/bash
trap '' INT
return=1

while (( return != 0 ))
do
passwd
return=$?
done

exit 0

Legg merke til linje 2 her. Trap '' INT stopper eventuelle controll sekvenser, slik som CTRL+c.

Om du legger dette i .login scriptet måtte du gjøre dette ved hver pålogging. Derfor lagde jeg enda et hjelpeprogram:

/usr/local/bin/firstlogin

#!/bin/sh
/usr/local/bin/fpasswd
grep -v ^"/usr/local/bin/firstlogin"$ ~/.login > ~/.login.tmp
mv ~/.login.tmp ~/.login

Ti slutt må du kjøre chmod +x på begge to.

For å få hele dette i gang må du kun legge til en linje .login fila i /etc/skel

echo "/usr/local/bin/firstlogin" >> /etc/skel/.login

Jeg bruker tcsh, og der heter loginscriptet .login. I andre shell heter heter det f.eks. .profile.

Du kan komme deg rundt .login ved å ikke logge inn via et shell. F.eks. ved å bruke sftp. Det å legge det i tcshrc eller bashrc fila er ikke smart. Det vil forsåvidt stoppe folk som ikke logger inn via et shell, men det vil lage mange prosesser som må drepes av root med kill -9.

Valg for kommentarvisning

Velg din foretrukket måte å vise kommentarer på og klikk på "Lagre innstillinger" for å aktivere endringene.

potetkok

Om man ikke oppretter så fryktelig mange brukere kan man også gjøre det på gamle måten ved å bruke:

# passwd -e brukernavn

Dette setter passordet som utgått, og tvinger passordskifte.

simen

Ikke alle distroer har denne opsjonen. Debian har den ikke f. eks.

Dette "tvinger" ved å stenge ute vedkommende om han ikke er rask nok til å bytte, også må admin åpne opp og sette nytt passord og si til han "husk å bytte passord". Altså er jeg like langt :)

Mac OS X, Mac OS, A/UX, GoboLinux, Kubuntu, Debian, pfSense, pkgsrc, Java, Perl, PHP, JavaScript, AppleScript, etc...

potetkok

Var det ikke å tvinge brukere til å skifte passord som var målet.

Om du oppretter konto med et midlertidig passord, og deretter setter dette passordet som expired før brukeren får vite brukernavnet og passordet sitt, så vil brukeren bli tvunget til å bytte passord ved første pålogging. Har ingenting å si hvor rask brukeren her, brukeren blir stående i døra så lenge han ikke vil skifte passord.

Men om ikke distroen man bruker støtter det, så må man nok ty til noe annet. F.eks.

# chage -d 0 brukernavn

simen

Heller tvinge dem ved å gjøre kontoen ubruklig enn å slippe eventuelt mas etterpå :)

Mac OS X, Mac OS, A/UX, GoboLinux, Kubuntu, Debian, pfSense, pkgsrc, Java, Perl, PHP, JavaScript, AppleScript, etc...

shade

chage kan benyttes. Men hvorvidt du tvinger ett passordbytte på nye brukere eller ei kan du jo sette i adduserscriptet du bruker.

chage -d 0 <- fremtvinger passordbytte ved å sette passordet til expired.

"God wouldn't be up this late. "

simen

Jeg har aldri sett noe slikt i verken adduser eller usermod. Har Google verden rundt etter noe slikt, og ennå ikke funnet noe. Da må man ha ldap og masse pam etc... og usikker på om det funker fra et vanlig shell. Prøvde på Mac OS X Servern på jobb... Der kan du tvinge passordbytte. Men dette funker ikke via shell dessverre.

chage "tvinger" ikke på samme måten. Jeg var interessert i at brukeren måtte endre passordet på første logg inn uten å stenge han ute slik at jeg måtte gi han enda en dag på å endre passord... Og enda en dag... Og enda en før han kanskje får rota seg til det.

Mac OS X, Mac OS, A/UX, GoboLinux, Kubuntu, Debian, pfSense, pkgsrc, Java, Perl, PHP, JavaScript, AppleScript, etc...

ceetux

Mogleg eg ikkje heilt skjønar kvifor du gjer som du gjer her... Men hadde det ikkje vore enklare for deg å oppnå det du vil ved å bruka eit standard passord som er så hinsides langt og kronglete at brukarane vil bønfalle deg om å få lov å skifte til eit eige passord?

n30Ud#kl2ølj+as32%09AsdkfjFåæwdfs

  • Skriv ut artikkel
  • Abonner med RSS

Siste kommentarer