2

Может ли кто-нибудь написать или помочь мне написать сценарий bash, который сделает следующее:

Новый пользователь подключается к моему серверу FreeBSD и выполняет вход через SSH с определенными учетными данными, такими как «регистрация пользователя, проходная регистрация» или что-то подобное. Его приветствует баннер с указанием ему, что делать дальше, и запускается скрипт, запрашивающий у пользователя его студенческий идентификатор. Затем создается новый пользователь со случайным паролем, и предоставленный идентификатор и электронное письмо отправляются на studentID@university.domain, содержащий пароль (в качестве метода проверки студента). После этой процедуры у ученика появляется новая, ограниченная учетная запись на моем сервере с предоставленным идентификатором и случайным изменяемым паролем.

Идея заключается в создании сценария, который часто используется при регистрации MUD или создании учетных записей оболочки.

Я полагаю, что сценарий необходимо будет выполнить при входе в систему, сохранить данные в полях и затем передать их команде sudo'ed adduser. Я имею только базовое понимание сценариев Unix и буду признателен за любую помощь.

РЕДАКТИРОВАТЬ:

Итак, я попробовал кое-что самостоятельно:

#! /usr/local/bin/bash

clear
echo "--------------------------------------------------"
echo "                                                  "
echo "      Welcome to FreeBSD community server!        "
echo "                                                  "
echo "--------------------------------------------------"
echo
echo To create a new account enter your album number:
read ALBUM


if [ -d "/home/$ALBUM"  ]; then
        echo ""
        echo "User already exists!"
        echo ""
read
exit

else
        PASSWORD=`cat /dev/urandom |tr -cd A-Za-z0-9 | head -c 8`
        echo "Your FreeBSD server password is:

        $PASSWORD

        If you did not request one, ignore this message." | mail -s "Auth Credentials" $ALBUM@gmail.com

        echo ""
        echo "Thank you, a new user has been created and a mail containing your password"
        echo "was sent to $ALBUM@student.pwr.wroc.pl"
        echo ""

        sudo pw useradd $ALBUM -d /home/$ALBUM -s /usr/local/bin/bash -m
        echo $PASSWORD | sudo pw mod user $ALBUM -h 0


read
exit
fi

Хорошо, вот что я придумала. Какие-либо предложения? Пользователь, которым запускается сценарий, - содомир с nopasswd для использования инструмента pw. Также скрипт имеет авторан с исходным кодом.

3 ответа3

1

Вы можете попробовать написать простой скрипт, которым вы замените стандартную оболочку для регистрации пользователя (в /etc /passwd). Этот сценарий вызовет некоторый простой сценарий регистрации через sudo (добавление нового пользователя потребует привилегированного пользователя). Рассмотрим вопросы безопасности этого подхода - это просто идея, я не пробовал этого.

0

Вы должны быть очень осторожны с проверкой ввода от пользователя и с тем, для чего вы используете этот ввод, чтобы избежать проникновения злоумышленника в вашу систему. Например, что если пользователю удастся внедрить в свое имя пользователя символы ":", переводы строки или обратные ссылки?

Также, возможно, вам стоит подумать о запуске вашего newuser-скрипта без прав root. Таким образом, он не может изменить /etc/passwd , но должен будет отправить вам регистрационную информацию по электронной почте (или что-то подобное).

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

0

Для записи я пошел с:

    #! /usr/local/bin/bash

clear
echo "--------------------------------------------------"
echo "                                                  "
echo "      Welcome to FreeBSD community server!        "
echo "                                                  "
echo "--------------------------------------------------"
echo
echo To create a new account enter your album number:
read ALBUM


if [ -d "/home/$ALBUM"  ]; then
        echo ""
        echo "User already exists!"
        echo ""
read
exit

else
        PASSWORD=`cat /dev/urandom |tr -cd A-Za-z0-9 | head -c 8`
        echo "Your FreeBSD server password is:

        $PASSWORD

        If you did not request one, ignore this message." | mail -s "Auth Credentials" $ALBUM@gmail.com

        echo ""
        echo "Thank you, a new user has been created and a mail containing your password"
        echo "was sent to $ALBUM@student.pwr.wroc.pl"
        echo ""

        sudo pw useradd $ALBUM -d /home/$ALBUM -s /usr/local/bin/bash -m
        echo $PASSWORD | sudo pw mod user $ALBUM -h 0


read
exit
fi

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .