web-dev-qa-db-ja.com

NetBSDのコマンドラインでのパスワード変更

NetBSDで1行のコマンドでrootパスワードを変更するにはどうすればよいですか? FreeBSDでは、これは次のようなものです

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

NetBSDは、デフォルトのインストールでpwコマンドをサポートしていません。あなたはできる:

  1. NetBSD用のpwコマンドをコンパイルし、システムにインストールします
  2. 同等の機能を実行するユーティリティを作成する
  3. シャドウファイルを直接操作してパスワードを更新する

スクリプトによっては、おそらく-Hの代わりに-hを使用する(そして適切に暗号化されたパスワードを提供する)必要があることに注意してください。
暗号化されていないパスワードをシステムに渡すことは(特にecho "password"のようなことをしている場合)、ログインしているユーザー(またはサービス)にパスワードが公開される可能性があるため、悪い考えです。

4
voretaq7

usermod-pスイッチとともに使用します。基本システムに含まれているので、pwをビルドする必要はありません。

1
sendmoreinfo

同様のユースケースに遭遇しました。すべてのパスワードポリシーをバイパスして、ひどいパスワードでデモユーザーを自動的に作成します。これ以上苦労することなく、メーリングリストの提案に基づいた厄介だがうまくいくハックがあります:

Bourn Shell 関数

# 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
  )
}

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 \"\$1\" \"\$2\" > \"\$2.bak.\$\$\" && /bin/mv \"\$2.bak.\$\$\" \"\$2\"  ;}; in_place_sed 's/^$USERNAME:[^:]*:/$USERNAME:$PASSWORD_HASH:/' " \
    /usr/sbin/vipw )
  1. shbashの両方で機能します(shells/bashインストール済み)、おそらくzshも(未テスト)。
  2. Sudoを追加しない場合はrootとして実行していると想定します(security/Sudoインストール済み)またはsu - root -c/usr/bin/env
  3. sed/mvハッキングは、EDITORの制限+ NetBSDのsed +他の依存関係の要件/不要な一時的/環境汚染によるものです。
0
user31170