Существует ли утилита для Linux, позволяющая пользователям запрашивать новые пароли?

Вопрос или проблема

По различным причинам, в основном из-за того, что не нужно запоминать пароль, я забываю пароли от аккаунтов, и мне нужно выполнить команду, которая требует пароль, например, использовать sudo, когда я не использовал его долгое время.

Это обычно связано с тем, что я большую часть времени входил с помощью SSH-ключей и нуждаюсь в команде, которая требует пароль, такой как смена оболочки, выполнение sudo или какой-либо другой команды, которая запрашивает существующий пароль.

Что касается безопасности, то возможность войти в оболочку подразумевает, что пользователь авторизован для выполнения команды.

В этом случае я хочу, чтобы команда сгенерировала новый пароль и вывела его на экран, используя какую-либо утилиту, подобную pwgen.

Вы можете создать программу, такую как эта:

#!/bin/sh

if [ -n "$SUDO_USER" ]
then
  exec /bin/passwd $SUDO_USER
else
  echo Должно быть выполнено с sudo
fi

Назовем это /usr/local/bin/reset-password (например).

Теперь вы можете установить правило sudo:

ALL ALL=(root) NOPASSWD: /usr/local/bin/reset-password

Тогда пользователь может выполнить sudo /usr/local/bin/reset-password, и ему будет разрешено сменить пароль без необходимости сначала вводить его.

Это должно быть безопасно, потому что sudo сам устанавливает переменную SUDO_USER, и если вы не выполняете это под sudo, значит, у вас нет разрешения на изменение паролей других пользователей, кроме собственного.

Если у пользователя уже есть правило, такое как %wheel ALL=(ALL) ALL, то это может потребовать ввода пароля, в этом случае это правило можно переписать как %wheel ALL=(ALL) ALL,!/usr/local/bin/reset-password, чтобы оно не совпадало, и вход без пароля будет работать.

Вы также можете легко добавить в этот скрипт компонент “генератор паролей” и передать его команде passwd.

Ответ или решение

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

Решение для сброса пароля в Linux

Для решения данной задачи вы можете создать простой скрипт на Bash, который сможет менять пароль пользователя без необходимости ввода текущего пароля. Рассмотрим более подробно, как можно реализовать подобный функционал.

1. Создание скрипта

Вы можете использовать следующий код для создания утилиты, которая будет менять пароль:

#!/bin/sh

if [ -n "$SUDO_USER" ]
then
  exec /bin/passwd $SUDO_USER
else
  echo "Данный скрипт должен быть запущен с правами sudo"
fi

Сохраните этот скрипт в файл, например, /usr/local/bin/reset-password и задайте права на выполнение:

sudo chmod +x /usr/local/bin/reset-password

2. Настройка правил sudo

Чтобы пользователи могли выполнять этот скрипт без запроса пароля, необходимо внести изменения в файл конфигурации sudo. Для этого выполните команду:

sudo visudo

Добавьте следующую строку:

ALL ALL=(root) NOPASSWD: /usr/local/bin/reset-password

Это позволит пользователям запускать sudo /usr/local/bin/reset-password без запроса пароля.

3. Обеспечение безопасности

Важно учитывать, что пользователь, имеющий возможность изменить свой пароль, уже имеет определенные права. Однако важно также следить за конфигурацией sudo, чтобы другие правила не конфликтовали с новой настройкой. Например, если у вас есть правило для группы %wheel, которое требует ввода пароля, вы можете изменить это правило следующим образом:

%wheel ALL=(ALL) ALL,!/usr/local/bin/reset-password

Это обеспечит, что для выполнения этого скрипта пароль не потребуется.

4. Генерация нового пароля

Если вам необходимо добавить генерацию пароля в ваш скрипт, вы можете использовать утилиту pwgen или openssl. Модифицируйте ваш скрипт следующим образом:

#!/bin/sh

if [ -n "$SUDO_USER" ]
then
  NEW_PASSWORD=$(pwgen -s 12 1)
  echo "Новый пароль для пользователя $SUDO_USER: $NEW_PASSWORD"
  echo "$NEW_PASSWORD" | passwd --stdin $SUDO_USER
else
  echo "Данный скрипт должен быть запущен с правами sudo"
fi

В приведенном примере с помощью pwgen генерируется новый пароль длиной 12 символов. Пароль затем передается в команду passwd.

Заключение

Созданный вами скрипт позволяет пользователям в Linux запрашивать и устанавливать новые пароли без необходимости помнить текущие пароли, что делает процесс более удобным и безопасным. Надлежащая настройка правил sudo и использование генератора паролей помогут вам достичь необходимого уровня безопасности и удобства. Убедитесь, что все изменения корректны и протестируйте функциональность перед развертыванием на продуктивной системе.

Оцените материал
Добавить комментарий

Капча загружается...