我可以让用户自己创建帐户吗?

我可以让用户自己创建帐户吗?

我为 40 多名学生教授编程课程。我希望他们将项目上传到我租用的 Linux Web 服务器。所以我希望每个学生在服务器上创建一个用户帐户。我不想通过 手动创建每个用户adduser

是否可以让学生创建自己的帐户,而不授予他们 root 访问权限?

答案1

是的。您可以使用默认模块以外的其他 PAM 模块pam_unix.so以及默认的其他 NSS 模块files

如果您在某个机构,您的学生很可能已经在某个通用目录中拥有可通过 LDAP 访问的帐户。在这种情况下,pam_ldap作为nss_ldap您的朋友,您只需将系统链接到目录,其中定义的所有用户都可能是您的潜在帐户。 MS AD 等流行目录拥有专用的 PAM 和 NSS 提供程序以及支持软件,可以更轻松地配置和管理并提供组策略等附加功能。

如果没有,您可以使用 RDBMS 模块(例如pam_mysql和 )nss_mysql来针对数据库中的某些表提供系统身份验证和用户查找。数据库中的记录可以通过自助注册网络表单创建,就像您在 StackExchange 网站上注册时使用的表单一样,类似的表单可以提供密码重置/更改。


这里有一点警告。当我构建这样的解决方案时,我注意到在同一服务器上托管提供身份验证的 MariaDB 是有问题的。启动失败。也许我的问题可以通过使用更高级的 PAM 配置来解决,尽管如此,我能够将其托管在附近的集群上,所以这对我来说不是一个大问题。 YMMV。

答案2

如果您不想尝试链接已定义的登录数据库,则始终可以使用 bash 脚本编写用户创建脚本。创建一个包含所有用户名和临时密码的文本文件,然后使用 bash 脚本循环遍历它们就足够简单了。然后打印出该文本文件并剪纸,将临时密码分发给学生,然后让他们进去更改。

从您要添加的用户名列表开始:users.txt(文件的每一行都是您要添加的用户名)

user1
user2
user3

然后,你的 bash 脚本:addusers.sh

#!/bin/bash

# reads your user.txt file while removing carriage returns
users=$(cat users.txt | tr -d '\r') 

# loop over each line in your user.txt file and adds that line as a user
for user in $users; do
# creates the user
sudo useradd -m "$user"
# user has no password
sudo passwd -d "$user"
done

使用 sudo 权限帐户登录服务器时,运行chmod u+x addusers.sh以使脚本可执行,然后运行所述脚本./addusers.sh

奖励:在年底,您想要清理服务器,您也可以使用脚本来擦除所有这些用户(建议为要删除的用户使用不同的文件,以免意外删除仍在使用的用户)使用他们的帐户)

#!/bin/bash

users=$(cat delusers.txt | tr -d '\r')

for user in $users; do
sudo deluser --remove-home "$user"
done

注意:所有这些文件应保存在同一文件夹中

相关内容