在一个 shell 脚本中自动添加用户并添加到组

在一个 shell 脚本中自动添加用户并添加到组

这是我已经计划好的问题,程序将如何在流程图中工作

因此,我正在寻找一种快速简便的方法来自动添加用户,同时将您正在创建的用户添加到组中。我尝试过许多在 shell 脚本中编写的方法,但都没有奏效,需要帮助。或者有人已经有这个代码了吗?

我第一次用这个

#!/bin/bash
# Script to add a user to Linux system
if [ $(id -u) -eq 0 ]; then
    read -p "Enter username : " username
    read -s -p "Enter password : " password
    egrep "^$username" /etc/passwd >/dev/null
    if [ $? -eq 0 ]; then
        echo "$username exists!"
        exit 1
    else
        pass=$(perl -e 'print crypt($ARGV[0], "password")' $password)
        useradd -m -p $pass $username
         [ $? -eq 0 ] && echo "User has been added to system!" || echo "    Failed to add a user!"
fi
else
    echo "Only root may add a user to the system"
    exit 2
fi

谢谢

答案1

我知道这个答案并没有真正解决你的家庭作业任务(这是有意的,因为你应该自己思考一下),但在我看来,没有必要进一步自动化用户创建过程。

只需用 代替adduser即可useradd

示例(创建用户example,显示名称Mr. Example):

$ sudo adduser --gecos "Mr. Example" example 
Adding user `example' ...
Adding new group `example' (1002) ...
Adding new user `example' (1002) with group `example' ...
Creating home directory `/home/example' ...
Copying files from `/etc/skel' ...
Enter new UNIX password: 
Retype new UNIX password: 
passwd: password updated successfully

或者,如果您不想看到状态消息,请将 STDOUT 重定向到/dev/null,因为重要的密码提示是通过 STDERR 打印的:

$ sudo adduser --gecos "Mr. Example" example > /dev/null
Enter new UNIX password: 
Retype new UNIX password: 
passwd: password updated successfully

除了上面的命令之外,您实际上没有更多可以自动化或简化的操作。它会自动为新用户创建合适的主要组以及主目录。

要将现有用户添加到另一个(已经存在的!)组,只需使用adduser

$ sudo adduser example cdrom
Adding user `example' to group `cdrom' ...
Adding user example to group cdrom
Done.

我不知道还有什么事情可以变得更加简化和自动化。

相关内容