Encontramos um caso de uso semelhante: criando automaticamente usuários de demonstração com senhas horríveis, evitando todas as políticas de senha. Sem mais delongas, aqui está um truque desagradável, mas funciona baseado na sugestão da lista de discussão:
Função shell do Bourn
# example: set_password_insecure sybil magic
# $1: username
# $2: password
set_password_insecure() {
if [ -z "$1" ]; then
echo 'Missing username' >&2
return 1
fi
( PASSWORD_HASH="$(/usr/bin/pwhash "$2" | /usr/bin/sed 's@[\$/]@\&@g')"
/usr/bin/env EDITOR="in_place_sed() { /usr/bin/sed \"\\" \"\\" > \"\.bak.\$\$\" && /bin/mv \"\.bak.\$\$\" \"\\" ;}; in_place_sed 's/^$1:[^:]*:/$1:$PASSWORD_HASH:/' " \
/usr/sbin/vipw
)
}
Comando Bourn shell
( USERNAME='mallory' PASSWORD='sex'; \
PASSWORD_HASH="$(/usr/bin/pwhash "$PASSWORD" | /usr/bin/sed 's@[\$/]@\&@g')"
/usr/bin/env EDITOR="in_place_sed() { /usr/bin/sed \"\\" \"\\" > \"\.bak.\$\$\" && /bin/mv \"\.bak.\$\$\" \"\\" ;}; in_place_sed 's/^$USERNAME:[^:]*:/$USERNAME:$PASSWORD_HASH:/' " \
/usr/sbin/vipw )
- Funciona em
sh e bash (com shells/bash instalado) e, provavelmente, zsh também (não testado).
- Assumindo a execução como raiz, se não adicionar
sudo (com security/sudo instalado) ou su - root -c antes de /usr/bin/env .
-
sed / mv hack é devido a EDITOR limitações + sed + do NetBSD não requer outras dependências / desnecessárias temporárias / poluição ambiental.