한 줄로 여러 사용자를 UNIX 그룹에 추가

한 줄로 여러 사용자를 UNIX 그룹에 추가

존재하다센토스 6.5(아마도) Linux에서는 다음을 사용하여 그룹을 만들 수 있습니다.

sudo groupadd mygroup

여러 사용자를 추가합니다.

sudo usermod -a -G mygroup userA
sudo usermod -a -G mygroup userB
sudo usermod -a -G mygroup userC

내 구체적인 경우의 사용자 수는 입니다 20. 다음과 같이 한 줄을 어떻게 사용할 수 있습니까?

sudo usermod -a -G mygroup userA userB userC

for 루프를 사용해도 작동하지만 저는 bash 전문가가 아니므로 알고 싶습니다.

답변1

가능한 경우 gpasswd(Solaris를 제외한 대부분의 배포판에 있어야 함) 쉼표로 구분된 사용자 목록과 그룹 이름을 제공할 수 있습니다.

gpasswd -M userA,userB,userC mygroup

답변2

for user in userA userB userC; do sudo usermod -a -G mygroup "$user"; done

답변3

이는 위치 매개변수가 포함된 기본 스크립트입니다. 아래 코드를 이라는 파일에 저장하고 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

답변4

Tombart와 Masterfool의 답변에 관하여. 이전 버전의 distos(SLES 11 SP1)의 경우 섀도우 도구가 약간 다릅니다. 이 설명서에는 버전 번호가 제공되지 않지만 날짜는 2009-2010입니다.

gpasswd의 -M 옵션은 존재하지 않습니다(그러나 다른 작업에는 gpasswd가 필요합니다). 따라서 Masterfool의 루프 옵션을 선택해야 합니다. 그러나 여기서 -a는 존재하지 않습니다. 대신 -A는 -a & -G와 동일하게 동작합니다.

시스템 로드에 대한 액세스를 푸시하기 위해 이 작업을 수행하고 있습니다. 지금까지의 완전한 "그룹 생성 및 채우기"는 다음과 같습니다.

/usr/sbin/groupadd -g GID### mygroup
gpasswd -r mygroup
for user in userA userB userC; do sudo usermod -A mygroup "$user"; done

따라서 설정된 GID로 그룹을 만들고, 비밀번호를 취소하고, 새 그룹을 활성화하고, 일부 사용자를 추가하세요.

관련 정보