因此,我正在寻找一种快速简便的方法来自动添加用户,同时将您正在创建的用户添加到组中。我尝试过许多在 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.
我不知道还有什么事情可以变得更加简化和自动化。