NetBSDで1行のコマンドでrootパスワードを変更するにはどうすればよいですか? FreeBSDでは、これは次のようなものです
echo "password" | pw mod user root -h 0 ;
NetBSDは、デフォルトのインストールでpw
コマンドをサポートしていません。あなたはできる:
pw
コマンドをコンパイルし、システムにインストールしますスクリプトによっては、おそらく-H
の代わりに-h
を使用する(そして適切に暗号化されたパスワードを提供する)必要があることに注意してください。
暗号化されていないパスワードをシステムに渡すことは(特にecho "password"
のようなことをしている場合)、ログインしているユーザー(またはサービス)にパスワードが公開される可能性があるため、悪い考えです。
usermod
を-p
スイッチとともに使用します。基本システムに含まれているので、pw
をビルドする必要はありません。
同様のユースケースに遭遇しました。すべてのパスワードポリシーをバイパスして、ひどいパスワードでデモユーザーを自動的に作成します。これ以上苦労することなく、メーリングリストの提案に基づいた厄介だがうまくいくハックがあります:
# 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
も(未テスト)。Sudo
を追加しない場合はrootとして実行していると想定します(security/Sudo
インストール済み)またはsu - root -c
前 /usr/bin/env
。sed
/mv
ハッキングは、EDITOR
の制限+ NetBSDのsed
+他の依存関係の要件/不要な一時的/環境汚染によるものです。