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.