如何在NetBSD上使用一行命令来更改root密码? 在FreeBSD上,就是这样的
echo "password" | pw mod user root -h 0 ;
NetBSD在缺省安装中不支持pw命令。 您可以:
pw命令并将其安装在你的系统上 请注意,根据您的脚本,您应该使用-H (并提供适当encryption的密码)而不是-h 。
在系统周围传递未encryption的密码(特别是如果你在做类似echo "password"事情)是一个坏主意,因为它可能导致你的密码暴露给任何login的用户(或服务)。
使用usermod与-p开关。 它包含在基础系统中,不需要构buildpw 。
我们遇到了一个类似的用例:使用糟糕的passswords自动创build演示用户,绕过所有的密码策略。 不用再后悔了,这里是一个讨厌的工程黑客根据邮件列表的build议:
# 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 ) }
( 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 )
sh和bash (安装了shells/bash ),可能也是zsh (未经testing)。 /usr/bin/env之前添加sudo (安装了security/sudo )或su - root -c 。 sed / mv hack是由于EDITOR限制+ NetBSD的sed +没有其他依赖/不必要的临时/环境污染的要求。