Назад | Перейти на главную страницу

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

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

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

NetBSD не поддерживает pw по умолчанию install. Ты можешь:

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

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

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

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

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