Vorrei un modo per aggiornare la mia password su una casella remota Ubuntu 10.4
con fabric.Modifica password Unix da riga di comando su Python/Fabric
mi aspetto il mio fabfile.py
sarebbe simile a questa:
def update_password(old_pw, new_pw):
# Connects over ssh with a public key authentication
run("some_passwd_cmd --old %s --new %s" % (old_pw, new_pd))
Purtroppo l'unico comando che conosco che permette un cambio della password è passwd
, e su Ubuntu 10.4 non sembra essere qualsiasi modo per passare la nuova (o vecchia) password come argomento a passwd
.
Quale comando è possibile utilizzare per modificare la password di un utente su Ubuntu 10.4 tramite fabric
?
EDIT: Ho avuto uno sguardo al usermod -p
, e che può funzionare, ma non è raccomandato dalla pagina man.
MODIFICA: Per qualche motivo, usermod -p
non funziona su tessuto.
Così, ho provato una variazione (un po 'insicuro) sulla risposta di mikej che ha risolto il problema:
# connecting & running as root.
from fabric.api import *
from fabric.contrib import files
files.append("%s\n%s" % (passwd, passwd), '.pw.tmp')
# .pw.tmp:
# PASSWD
# PASSWD
run("passwd %s < .pw.tmp" % user)
run("rm .pw.tmp")
Non è una soluzione molto elegante, ma funziona.
Grazie per la lettura.
Brian
noti che sul Lucid, l'argomento '-p' usermod è "La password cifrata, come restituito da crypt (3)" utilizzando SHA-512 non il testo in chiaro L'avvertenza nella pagina usermod equivale a dire "si inserirà il contenuto hash (normalmente nascosto) di/etc/shadow nella tabella di processo per un breve periodo di tempo", che a seconda dei requisiti di sicurezza potrebbe non essere tutto ciò rivelatrice. – msw