SSH 注册脚本

SSH 注册脚本

有人可以编写或者帮助我编写一个可以执行以下操作的 bash 脚本吗:

新用户连接到我的 FreeBSD 服务器,并使用某些凭据(如“用户注册、通行证注册”或类似凭据)通过 SSH 登录。系统会显示一条欢迎横幅,指示他下一步该做什么,然后启动一个脚本,询问用户的学生 ID。接下来,系统会创建一个新用户,使用随机密码和提供的 ID,并向其发送一封邮件[电子邮件保护]包含密码(作为学生验证方法)。完成此过程后,学生将在我的服务器上拥有一个新的受限帐户,其中包含提供的 ID 和随机且可更改的密码。

这个想法是制作一个经常用于 MUD 注册或 shell 帐户创建的脚本。

我猜想该脚本需要在登录时执行,将给定的凭据存储在字段中,然后将其传递给 sudo 的 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" [email protected]

        echo ""
        echo "Thank you, a new user has been created and a mail containing your password"
        echo "was sent to [email protected]"
        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

好的,这就是我想到的。有什么建议吗?运行脚本的用户是 sodoer,没有使用 pw 工具的密码。此外,脚本是使用“source”自动运行的。

答案1

您可以尝试编写简单的脚本,用它替换注册用户的标准 shell(在 /etc/passwd 中)。此脚本将通过 sudo 调用一些简单的注册脚本(添加新用户需要特权用户)。考虑这种方法的安全问题 - 这只是想法,我还没有尝试过。

答案2

您必须非常小心地检查用户的输入以及输入的用途,以避免任何恶意用户侵入您的系统。例如,如果用户设法在用户名中嵌入“:”、换行符或反引号怎么办?

另外,也许您应该考虑在没有 root 权限的情况下运行您的 newuser-script。因此它无法修改/etc/passwd,但需要通过电子邮件将注册信息发送给您(或类似信息)。

还可以考虑在监狱或虚拟机环境中运行注册sshd过程,以尽量减少入侵的后果。这些只是建议。

答案3

为了记录在案,我选择了:

    #! /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" [email protected]

        echo ""
        echo "Thank you, a new user has been created and a mail containing your password"
        echo "was sent to [email protected]"
        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

相关内容