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


13

를 CentOS 6.5 (아마도 모든) 리눅스, 나는 그룹을 만들 수 있습니다 :

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 전문가가 아니므로 궁금합니다.

bash  group 

답변:


12

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

gpasswd -M userA,userB,userC mygroup

1
이것이 답이되어야합니다.
ivanleoncz

4
이 솔루션은 기존 그룹 구성원 목록을 덮어 씁니다. 이것은 사용자를 "추가"하는 것과는 다릅니다 usermod -aG mygroup.
Michael


2

이것은 위치 매개 변수가있는 기초 스크립트이며 아래 코드를 파일에 저장하고로 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

2
그룹을 확인하는 또 다른 방법은 :if ! getent group "$group" >/dev/null
글렌 잭맨

@glennjackman : 감사합니다. getent지금까지 명령을 놓쳤습니다 (시스템에는 검사 된 모든 데이터베이스에 대한 자동 완성 기능도 있습니다 ).
Giuseppe Ricupero

너무 복잡해서 명령 줄에서 실행하고 싶습니다.

@HordonFreeman : 저장 될 때 스크립트가 oneliner로 실행됩니다 : fill_group.sh <group> <user1> ... <userN>. 당신은 정말 oneliner을 원하는 경우 for user in "userA userB userC"; do sudo usermod -a -G "groupName" "${user}"; done또는 당신은라는 파일에 라인 당 사용자 목록 일 경우 users.list:group=mygroup && while read user; do sudo usermod -a -G "${group}" "${user}"; done < users.list
주세페 Ricupero

1

Fedora, Red Hat, CentOS 및 기타 다운 스트림 배포판에서이 newusers유틸리티를 사용하면 Bash 스크립트를 작성하지 않고도 시스템에 새로운 사용자를 매우 쉽게 추가 할 수 있습니다.

데비안과 우분투에서도 사용할 수 있습니다.


0

Tombart와 Masterfool의 답변에 관해서. 오래된 디스토 (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로 그룹을 생성하고, 새 그룹을 암호 해제 / 활성화하고, 일부 사용자를 추가하십시오.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.