如何使用 bash 脚本定义用户组?

如何使用 bash 脚本定义用户组?

我很难在脚本中将用户添加到组中。

例如,我有一个脚本要求用户回答几个问题,如果答案正确,则应将该用户添加到某个组。

因此,我可能需要一种方法来以某种方式识别哪个用户正在回答问题(有多个用户),并根据他的答案将他/她添加到一个组中。

有人可以帮忙吗?

答案1

我还创建了一个简单的脚本。
下面的脚本在系统上创建一个新用户。
如果您能将其用作参考,我将非常高兴。
预先将组名设置为 VALIDGROUPS 变量,并
在执行时选择它。

 1  #!/bin/bash
 2
 3  VALIDGROUPS="GROUP1, GROUP2, GROUP3"
 4
 5  printf "Add your account on this system\n\n"
 6  printf "Enter your name here, No space allowed for your user name : "
 7  read USERNAME
 8
 9  printf "Valid user groups are $VALIDGROUPS Choose select one: "
10  read USERGROUP
11
12  grep $USERGROUP /etc/group 2>&1>/dev/null
13  if [ $? != 0 ]
14  then
15      printf "Group Name you entered $USERGROUP is not valid\n"
16      printf "Creating Abort!\n"
17      exit 1
18  else
19      useradd -g $USERGROUP -d /home/$USERNAME -s /bin/bash -m $USERNAME
20      passwd $USERNAME
21  fi
22
23  id $USERNAME
24
25  printf "done!\n"
26
27  exit 0

答案2

您可以在脚本中添加一行来找出谁正在执行该脚本

user=$(whoami)
echo $user

如果脚本需要使用 sudo 运行,whoami则始终将 root 作为用户,因此您需要使用$SUDO_USER变量

user=$SUDO_USER
echo $user

如果用户使用,su -然后执行脚本,那么上面的解决方案将不起作用,使用who am i

user=$(who am i | awk '{print $1}')
echo $user

相关内容