В этой статье я расскажу вам, как использовать bash-скрипты для автоматической генерации паролей для новых учетных записей пользователей в системе Linux.
Сценарий: Сотрудники службы поддержки тепло приняли скрипт «add-local-user.sh«, оценив значительную скорость и эффективность, которую он обеспечивает при создании учетных записей. В свою очередь они посоветовали как можно улучшить этот процесс: добавить функцию автоматической генерации пароля для повышения безопасности и устранения повторяющихся задач, а также реализовать ввод имен учетных записей и комментариев прямо из командной строки для еще более быстрого выполнения операций. Эти изменения не только оптимизируют рабочий процесс команды, но и способствуют повышению общей безопасности и эффективности компании.
Требования к скрипту:
-
Он называется «add-new-local-user.sh«. (Мы добавим в название слово new, чтобы обособить его от оригинального скрипта, над которым мы работали в предыдущей части).
-
Следит за тем, чтобы он выполнялся с правами суперпользователя (root). Если скрипт выполняется без прав суперпользователя, он не будет даже пытаться создать пользователя, а вернет код завершения 1.
-
Предоставляет отчет об использовании, подобный тому, что можно найти в man-странице, если пользователь не указал имя учетной записи в командной строке, и возвращает код завершения 1.
-
Использует первый аргумент, указанный в командной строке, в качестве имени пользователя для учетной записи. Все остальные аргументы в командной строке будут рассматриваться как комментарий к учетной записи.
-
Автоматически генерирует пароль для новой учетной записи.
-
Информирует пользователя, если по какой-то причине учетную запись не удалось создать. Если учетная запись не создана, скрипт должен вернуть код завершения 1.
-
Отображает имя пользователя, пароль и хост, на котором была создана учетная запись. Таким образом, сотрудники службы поддержки могут скопировать результаты выполнения скрипта, что облегчает предоставление информации новому владельцу учетной записи.
Что вам понадобится:
-
Терминал Linux
-
Желание научиться чему-то новому)
Шаг 1: Создайте текстовый файл под скрипт
-
Создайте в командной строке новый текстовый файл, содержащий скрипт, над которым мы будем работать.
-
Назовите скрипт «add-new-local-user.sh«.
touch add-new-local-user.sh

Шаг 2: Измените разрешения, чтобы получить привилегии запуска исполняемых файлов
-
По умолчанию система безопасности linux не позволяет исполнять файлы без соответствующих разрешений. Разрешения на файл можно изменить с помощью команды «chmod«, за которой следуют соответствующие цифровые обозначения.
Например: chmod 755 или chmod 777
-
Для скрипта, над которым мы будем работать, укажем разрешение «755».
chmod 755 add-new-local-user.sh

Шаг 3: Создание скрипта
-
Чтобы обозначить текстовый файл как скрипт, первое, что нужно сделать, — начать первую строку с shebang. Shebang позволяет интерпретатору узнать, как выполнить файл.
-
Первая задача скрипта заключается в том, чтобы проследить, что он выполнялся с привилегиями суперпользователя.
-
Часть крипта, которую вы видите ниже, указывает пользователю в командной строке выполнить скрипт от имени sudo или root. Без привилегий суперпользователя скрипт не отработает должным образом.

Раздел информации о пользователе:
Наша цель заключается в том, чтобы пользователь (персонал службы поддержки) вводил имя учетной записи, а скрипт автоматически генерировал для нее случайный пароль. Каждый пользователь получит свой уникальный пароль, что избавит нас от необходимости вручную создавать пароль для каждого нового пользователя в системе linux.

-
USER_NAME="$1": Эта строка сохраняет первый аргумент, переданный скрипту, в переменнойUSER_NAME. При запуске скрипта в качестве этого первого аргумента вы указываете имя нового пользователя. -
shift: Эта команда сдвигает список аргументов скрипта таким образом, что второй аргумент становится первым, третий — вторым и так далее. Она используется здесь, потому что все остальное после первого аргумента считается комментариями к учетной записи. -
COMMENT="$@": После сдвига представляет собой все оставшиеся аргументы командной строки, которые присваиваются переменнойCOMMENT. Они используются в качестве комментария для учетной записи пользователя. -
PASSWORD=$(date +%s%N | sha256sum | head -c48): Эта строка генерирует пароль, беря текущую дату и время в наносекундах, пропуская их через командуsha256sumдля создания хэша, а затем используяhead -c48для получения его первых 48 символов. -
useradd -c "${COMMENT}" -m ${USER_NAME}: Командаuseraddиспользуется для создания нового пользователя с комментарием, указанным в переменнойCOMMENT, и именем пользователя, указанным в переменнойUSER_NAME. Параметр-mсоздает корневой каталог пользователя. -
if [[ "${?}" -ne 0 ]]: Проверяет код завершения последней команды (в данном случаеuseradd). — это специальная переменная, которая хранит статус выхода из последней выполненной команды.-ne 0проверяет, не равен ли этот код 0, что означает, что произошла ошибка. -
echo 'The account could not be created.': Если команда создания пользователя завершилась неудачей (т.е. условиеifистинно), в этой строке будет выведено сообщение о том, что учетную запись создать не удалось. -
exit 1: Выход из скрипта и возвращение кода 1, который обычно указывает на то, что произошла ошибка.
Раздел с генерацией пароля:
-
echo ${PASSWORD} | passwd — stdin ${USER_NAME}: Устанавливает пароль для нового пользователя, который был введен в качестве первого аргумента. После того как пользователю будет присвоен пароль, он будет выведен в командную строку. Пароль будет передан команде passwd, которая изменит пароль в зависимости от имени пользователя.
-
Следующий оператор
ifпроверяет, была ли командаpasswdуспешной, смотря на код завершения ($?). Если код не равен 0 (что означает, что произошла ошибка), он выводит «The password for the account could not be set.» и выходит из скрипта с кодом завершения 1, указывающим на ошибку. -
passwd -e ${USER_NAME}: Эта команда заставляет нового пользователя изменить пароль при следующем входе в систему в целях безопасности. -
Команды
echoвыводят имя пользователя, сгенерированный пароль и хост (имя компьютера), на котором был создан пользователь. Эта информация выводится на терминал, чтобы человек, выполняющий скрипт, мог сохранить где-нибудь данные о новой учетной записи. -
exit 0: Скрипт завершает работу с кодом завершения 0, что является условным обозначением успеха.

Весь скрипт целиком:
-
Вот весь скрипт, собранный воедино.

Шаг 4: Проверка скрипта
Теперь мы протестируем наш скрипт и посмотрим, как он работает!
-
Введите имя пользователя, чтобы узнать, будет ли сгенерирован пароль.
-
Обязательно скопируйте один из паролей и сохраните его где-нибудь. Мы будем менять его на новый уникальный пароль.
sudo ./add-new-local.user.sh exampleuser COMMENT Ex: sudo ./add-new-local.user.sh gbaidoo George Baidoo
Пользователь №2
Пользователь №3
Если вы получите результаты, подобные тем, что можно увидеть на изображениях выше, значит, скрипт работает правильно. Отличная работа!
Попробуйте выполнить скрипт без привилегий sudo или root.
-
Помните, что мы написали скрипт так, чтобы его мог выполнить только пользователь с правами sudo или root. Если вы попытаетесь выполнить этот файл без соответствующих прав, вам будет отказано в доступе и предложено запустить скрипт с sudo.

Замените случайно сгенерированный пароль на уникальный
-
Давайте изменим пароль одного из ваших пользователей, выполнив команду «su» с указанием имени пользователя.
-
Вставьте сгенерированный пароль в раздел «current password» и нажмите Enter.
-
Введите новый пароль дважды, чтобы подтвердить изменение.
su - example Ex: su - gbaidoo

Поздравляем, если вы дошли до этого момента, значит, вы успешно завершили этот проект! Вы узнали, как написать скрипт, который автоматически генерирует пароли для новых пользователей в системе linux, демонстрируя эффективность и безопасность системного администрирования linux!
Сегодня вечером пройдет открытый урок «Веб-сервер Angie: сравнение с Nginx, новые возможности». Занятие будет полезно для системным администраторам Linux, веб-разработчикам и всем, кто использует Nginx в своих проектах. Записывайтесь по ссылке.
ссылка на оригинал статьи https://habr.com/ru/articles/808759/
Добавить комментарий