Смена пароля с помощью командной строки в NetBSD
Как я могу изменить пароль root с помощью однострочной команды в NetBSD? На FreeBSD это примерно так
echo "password" | pw mod user root -h 0 ;
3 ответа
NetBSD не поддерживает pw
Команда в его установке по умолчанию. Вы можете:
- Скомпилируйте
pw
введите команду для NetBSD и установите ее в своих системах - Напишите утилиту, которая выполняет эквивалентную функциональность
- Обновите пароль, манипулируя теневым файлом напрямую
Обратите внимание, что в зависимости от вашего сценария вы, вероятно, должны использовать -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 )
- Работает на обоих
sh
а такжеbash
(сshells/bash
установлен) и, вероятно,zsh
тоже (не проверено). - Предположим, работает как root, если не добавить
sudo
(сsecurity/sudo
установлен) илиsu - root -c
до/usr/bin/env
, sed
/mv
взлом из-заEDITOR
ограничения + NetBSDsed
+ требование отсутствия других зависимостей / ненужных временных затрат / загрязнения окружающей среды.