在Centos 6.5(可能还有任何)linux 上,我可以创建一个组:
sudo groupadd mygroup
Run Code Online (Sandbox Code Playgroud)
并向其中添加多个用户:
sudo usermod -a -G mygroup userA
sudo usermod -a -G mygroup userB
sudo usermod -a -G mygroup userC
Run Code Online (Sandbox Code Playgroud)
在我的特定情况下,用户数量是20
. 我如何使用单线,如:
sudo usermod -a -G mygroup userA userB userC
Run Code Online (Sandbox Code Playgroud)
即使使用 for 循环也可以,但我不是 bash 专家,所以想知道。
Tom*_*art 15
如果gpasswd
可用(应该在除 Solaris 之外的大多数发行版上),您可以提供逗号分隔的用户列表,后跟组名:
gpasswd -M userA,userB,userC mygroup
Run Code Online (Sandbox Code Playgroud)
Mas*_*ool 10
for user in userA userB userC; do sudo usermod -a -G mygroup "$user"; done
Run Code Online (Sandbox Code Playgroud)
这是一个带有位置参数的基本脚本,将下面的代码保存在名为 的文件中fill_group.sh
,并使其可执行chmod +x fill_group.sh
。
然后将其添加到 PATH 目录 ( /usr/local/bin
) 或在其所在的同一目录中执行它./fill_group.sh <group_name> <user1> ... <userN>
。
#!/bin/sh
#
# Name: fill_group.sh
#
# Usage:
# fill_group.sh <group_name> <user1> <user2> ... <userN>
#
# Description:
# add users to specific group passed as first parameter.
# If the group doesn't exists add it to the system.
set -eu
# Exit if there is not at least 2 args (group,user1)
if [ $# -lt 2 ]; then exit 5; fi
group="${1}"; shift # extract group from arguments
if ! egrep --quiet "^${group}:" /etc/group; then
sudo groupadd "${group}"
fi
for user in "${@}"; do
sudo usermod -a -G "${group}" "${user}"
done
Run Code Online (Sandbox Code Playgroud)