Смена пароля с помощью командной строки в NetBSD

Как я могу изменить пароль root с помощью однострочной команды в NetBSD? На FreeBSD это примерно так

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

3 ответа

NetBSD не поддерживает pw Команда в его установке по умолчанию. Вы можете:

  1. Скомпилируйте pw введите команду для NetBSD и установите ее в своих системах
  2. Напишите утилиту, которая выполняет эквивалентную функциональность
  3. Обновите пароль, манипулируя теневым файлом напрямую

Обратите внимание, что в зависимости от вашего сценария вы, вероятно, должны использовать -H (и предоставляя соответственно зашифрованный пароль) вместо -h,
Передача незашифрованных паролей по системе (особенно если вы делаете что-то вроде echo "password") является плохой идеей, поскольку она может привести к раскрытию вашего пароля любому зарегистрированному пользователю (или службе).

Использование usermod с -p переключатель. Это входит в базовую систему, нет необходимости строить pw,

Мы столкнулись с похожим сценарием использования: автоматическое создание демо-пользователей с ужасными паролями, минуя все политики паролей. Без лишних слов, вот противный, но работающий хак, основанный на предложении списка рассылки:

Функция оболочки 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
  )
}

Команда 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. Работает на обоих sh а также bashshells/bash установлен) и, вероятно, zsh тоже (не проверено).
  2. Предположим, работает как root, если не добавить sudosecurity/sudo установлен) или su - root -c до /usr/bin/env,
  3. sed/mv взлом из-за EDITOR ограничения + NetBSD sed + требование отсутствия других зависимостей / ненужных временных затрат / загрязнения окружающей среды.
Другие вопросы по тегам