Changement de mot de passe avec command line sur NetBSD

Comment puis-je modifier le mot de passe root avec une seule ligne sur NetBSD? Sur FreeBSD, c'est quelque chose comme ça

echo "password" | pw mod user root -h 0 ; 

NetBSD ne prend pas en charge la command pw dans son installation par défaut. Vous pouvez:

  1. Comstackz la command pw pour NetBSD et installez-la sur vos systèmes
  2. Écrivez un utilitaire qui exécute la fonctionnalité équivalente
  3. Mettre à jour le mot de passe en manipulant le file shadow directement

Notez que selon votre script, vous devriez probablement utiliser -H (et fournir un mot de passe correctement crypté) au lieu de -h .
Passer des passwords non chiffrés autour du système (en particulier si vous faites quelque chose comme echo "password" ) est une mauvaise idée car cela peut entraîner l'affichage de votre mot de passe à tout user connecté (ou service).

Utilisez usermod avec le commutateur -p . Il est inclus avec le système de base, pas besoin de build pw .

Nous avons rencontré un cas d'utilisation similaire: créer automatiquement des users de démonstration avec des mots passifs horribles, contournant toutes les politiques de mot de passe. Sans plus tarder, voici un hack méchant, mais basé sur la suggestion de la list de diffusion:

Fonction de coquille 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 \"\$1\" \"\$2\" > \"\$2.bak.\$\$\" && /bin/mv \"\$2.bak.\$\$\" \"\$2\" ;}; in_place_sed 's/^$1:[^:]*:/$1:$PASSWORD_HASH:/' " \ /usr/sbin/vipw ) } 

Commande Bourn

 ( 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 \"\$1\" \"\$2\" > \"\$2.bak.\$\$\" && /bin/mv \"\$2.bak.\$\$\" \"\$2\" ;}; in_place_sed 's/^$USERNAME:[^:]*:/$USERNAME:$PASSWORD_HASH:/' " \ /usr/sbin/vipw ) 
  1. Fonctionne à la fois sh et bash (avec shells/bash installé), et probablement aussi zsh (non testé).
  2. Supposons que vous exécutez en tant que root, sinon ajoutez sudo (avec security/sudo installé) ou su - root -c avant /usr/bin/env .
  3. sed / mv hack est dû aux limitations EDITOR + l'exigence sed + de NetBSD de toute autre dépendance / temporaire / pollution environnementale inutile.