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

Принудительное изменение пароля в OpenBSD

В OpenBSD 5.6 мне нужно предоставить ряд учетных записей пользователей паролями по умолчанию. Я бы хотел, чтобы пользователи при первом входе в систему по SSH были вынуждены изменить свои пароли по умолчанию.

В CentOS и Debian я могу сделать это, используя chage -d 0 $username.

Из руководства по login.conf видно, что я смогу сделать то же самое в OpenBSD с помощью чего-то вроде:

Установка этого способа требует соответствующего изменения в userinfo $username, но вход в систему как $ username через SSH на самом деле не приводит к изменению пароля - он довольно успешно открывает оболочку, не обращая внимания на то, что пароль был помечен выше как неактивный.

Некоторые сообщения за 2000 год обсуждаются написание оболочки входа в оболочку для принудительной смены пароля. Тем не менее, учитывая очевидные строительные леса в usermod и chpass, кажется, что это встроено, но не так широко документировано, как эквиваленты Linux.

Может ли профессионал BSD пролить свет на традиционный подход к этому вопросу?

В соответствии с login.conf (5), льготный период по умолчанию для просроченного (также известного как «мертвый») пароля равен 0. Если это значение не установлено в /etc/login.conf, пользователь не может войти в систему, чтобы изменить свой пароль, если текущая системная дата больше, чем шестое поле ввода пароля пользователя в /etc/master.passwd - Ссылаться на passwd (5).

Чтобы решить эту проблему, вам нужно будет указать дату, отформатированную в количестве секунд, начиная с эпохи, которая попадает в выбранный вами льготный период, например 2 недели, которые вы также настроите в /etc/login.conf. Чтобы вручную выбрать время истечения срока действия пароля вчера, мы можем использовать:

# date -d yesterday +%s
1463597700

А затем вставьте это значение в поле # 6 в /etc/master.passwd используя vipw. Соответствующая строка будет выглядеть примерно так:

user:$2b$08$01234567890abcdef:1000:1000::1463597700:0:user:/home/user:/bin/ksh

Запуск usermod, как вы указали (usermod -f "May 17 2016" user) будет делать то же самое, но в обоих случаях /etc/login.conf также необходимо изменить, добавив к default:\ или соответствующий раздел для вашего класса пользователей:

    :password-dead=2w:\
    :password-warn=2w:

В первой строке предоставляется двухнедельный льготный период для смены пароля пользователем; вторая строка выдаст предупреждения о том, что срок действия пароля пользователя истечет. Если истек срок, ваши пользователи увидят что-то вроде следующего:

WARNING: Your password has expired.
You must change your password now and login again!
Changing local password for user.
Old password:
New password:
Retype new password:
Connection to openbsd-server closed.

Вы также можете настроить :passwordtime=7776000: в /etc/login.conf для принудительной смены пароля каждые 90 дней. Обратите внимание: если вам требуется дополнительная проверка сложности пароля пользователя, например запрет повторного использования пароля, вам следует установить и настроить passwordqc из пакетов или другой программы проверки паролей.