Linux app password keresere

Fórumok

Olyan applikacio kellene, amely terminal belepes utan elindul es jelszot ker ahhoz, hogy kilepjen onmagabol.

Ezzel akarnam auto-login utan lezarni a terminalt. (auto-login kotelezo kulonbozo okok miatt) (a jelszo tarolosa valahol file szinten tortenjen meg)

 

Van ilyen valahol?

(lehetoleg ne lehessen belole se CTRL-C-vel se semmivel kilepni!)

Hozzászólások

Szerkesztve: 2021. 03. 20., szo – 19:50

...az sem lenne rossz, ha valai ilyet ossze tudna dobni gyorsan.. :D

Kb. két éve dobtam össze egy ilyet: az volt a cél, hogy ha otthagyom a gépet, ne kelljen mindenből kilépni, hanem konzol módban lezárom, és utána jelszó nélkül nem lehet semmit kezdeni vele.

Csak a bejelentkezett júzer vagy a root tudja feloldani, a jelszókérést pedig PAM-en keresztül intézi (konfig file: /etc/pam.d/vtlock). A pam_userok.so modul csak azért kell, hogy ha más felhasználóval és jó jelszóval próbálkozol, a PAM stack akkor is hibával térjen vissza (és várakoztasson egy pár másodpercig).

Igyekeztem mindent letiltani, ami eszembe jutott: konzolváltás (VT_LOCKSWITCH ioctl), SIGINT, SIGTERM, SIGQUIT, SIGTSTP, SIGUSR1, SIGUSR2 letiltva, Magic SysRq kikapcsolva).

Itt találod a forrást és az ncurses5 binárisokat, itt pedig az ncurses6 binárisokat. A forráson kívül nincs más doksi (magamnak írtam), ha valami nem megy, szólj.

Tudom, hogy van több hasonló program, de számomra mindegyikből hiányzott valami :-)

Belépés után induljon el a képernyőzár!

Konzol módban is van ilyen: vlock. Ha amatőr userektől kell védeni, akkor egy Ctrl+S is elég, akkor látszólag lefagy a konzol, de Ctrl+Q-ra feléled, már ha a shell-rc-ben ez a default működés nincs letiltva.

Windows 95/98: 32 bit extension and a graphical shell for a 16 bit patch to an 8 bit operating system originally coded for a 4 bit microprocessor, written by a 2 bit company that can't stand 1 bit of competition.”

Szerkesztve: 2021. 03. 20., szo – 21:20

Valami ilyenre gondolsz?
 

#!/bin/bash
trap t 2 15 18 20 24

function t()
{
  clear
}

while :
do
  echo -n "password: "

  unset password;
  stty -echo
  while IFS= read -r -s -n1 pass; do
    if [[ -z $pass ]]; then
       echo
       break
    else
       echo -n '*'
       password+=$pass
    fi
  done
  if [ "x$password" = "xXX" ]
  then
    stty echo
    exit
  fi
  clear
done

A jelszó helyett csillagokat kiíró rész valahonnan "lett" :) Tudom, hogy a read -s az nem echo-zik, viszont nekem valamiért néha csak kiböffentette a bevitt karaktert, úgyhogy azért az stty -echo előtte, illetve az stty echo a kilépés előtt.

Ez egész pofás lenne, ha nem lehetne könnyedén kijátszani másik tty-ra váltással. Persze a többi tty-t le lehet tiltani, de akkor zárolás nélkül se fognak működni. A másik megoldás az lehet, hogy a létező összes tty-on elindítani, de ahhoz meg az összesen be kell jelentkezni. Szóval ez a része problémás, amúgy tetszik az egyszerűsége.

Windows 95/98: 32 bit extension and a graphical shell for a 16 bit patch to an 8 bit operating system originally coded for a 4 bit microprocessor, written by a 2 bit company that can't stand 1 bit of competition.”

Ja, igen, ezt el is felejtettem mondani, hogy a kódban félregépelés van, így elsőre nálam se fogadta el a beledrótozott xXX jelszót, de még az xxXX-et vagy XX-et se. Csak reboottal tudtam kilőni.

Windows 95/98: 32 bit extension and a graphical shell for a 16 bit patch to an 8 bit operating system originally coded for a 4 bit microprocessor, written by a 2 bit company that can't stand 1 bit of competition.”

Működő scriptet másoltam be, úgyhogy az ott szándékosan van úgy - duplán biztosítva azt, hogy üres jelszónál se villanjon be hibaüzenet. (hagyd el az x-et meg a $password körüli idézőjeleket...).

A jelszó egyébként XX az eredeti script szerint :-) Az egészet kb. 10 perc volt összerakni - ebből a kezelendő szignálok listáját (mivel lehet elkapni a ctrl+z-t) tartott legtovább összeszedni...