Re: Personalizzare "su"
On Tuesday 25 November 2008 21:08:19 Davide Prina wrote:
> ottima idea, ma servirebbe:
>
> 1) poter invocare su passandogli la password
Questa è la parte che potrebbe sembrare la più complessa, poiché 'su' per ovvi
motivi di sicurezza non accetta input se non da una tty:
$ echo "SECRET" | su
su: must be run from a terminal
Per aggirare il problema quindi si possono potrebbero utilizzare le pty,
tuttavia per sbrigarmi ho preferito utilizzare expect, in particolare il
binding per python (pexpect: su debian è pacchettizzato come python-pexpect).
Il risultato è qui:
http://mornie.org/code/browser/misc/wrapsu.py
> 2) non far stampare a su i suoi messaggi (es: Password:)
Questo è semplice :)
Anche senza expect, nel momento in cui si fa lo spawn un processo si ha il
compito di gestirne stdin, stdout e stderr.
> 3) far si che scrivendo "su" (se si vuole usare "su" per eseguirlo) non
> venga eseguito /bin/su o tale comando venga sostituito con il wrapper
> ... ma questo implicherebbe una reinstallazione del wrapper ad ogni
> aggiornamento del pacchetto login
Questo punto lo risolverei semplicemente modificando PATH.
eriol@mornie:~$ mv devel/misc/wrapsu.py /tmp/su
eriol@mornie:~$ chmod +x /tmp/su
eriol@mornie:~$ type su
su is /bin/su
eriol@mornie:~$ export PATH=/tmp/:$PATH
eriol@mornie:~$ su root -c id
What is the password? Insert here:
uid=0(root) gid=0(root) groups=0(root)
eriol@mornie:~$ type su
su is hashed (/tmp/su)
> Non tutte cose così semplici o per lo meno più complesse di ricompilarsi
> il sorgente ... o forse mi sbaglio?
Uhm... non so se siano più complesse (adesso in ogni caso Luca può basarsi su
quello script ;).
Ad essere onesto, sarà pigrizia, ma provenendo da slackware dove qualunque
cosa mi servisse dovevo pacchettizzarla tendo a ridurre al massimo tutto ciò:
conta che ho solo 2 pacchetti fatti da me in questo momento :D
Anche per questo, per me, il wrapper rappresentava la soluzione più naturale
:)
HTH,
--
Eriol - *p = NULL; - EIBTI
GPG Key ID 0B7C8A19
http://mornie.org
Reply to: