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. [EMAIL PROTECTED]:~$ mv devel/misc/wrapsu.py /tmp/su [EMAIL PROTECTED]:~$ chmod +x /tmp/su [EMAIL PROTECTED]:~$ type su su is /bin/su [EMAIL PROTECTED]:~$ export PATH=/tmp/:$PATH [EMAIL PROTECTED]:~$ su root -c id What is the password? Insert here: uid=0(root) gid=0(root) groups=0(root) [EMAIL PROTECTED]:~$ 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 -- Per REVOCARE l'iscrizione alla lista, inviare un email a [EMAIL PROTECTED] con oggetto "unsubscribe". Per problemi inviare un email in INGLESE a [EMAIL PROTECTED] To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]

