그룹에서 사용자를 어떻게 제거합니까?


342

데비안의 그룹에서 사용자를 제거하려면 어떤 명령을 사용해야합니까?

사용자를 그룹에 추가 할 때 다음을 수행 할 수 있습니다.

usermod -a -G group user

그러나 그룹에서 사용자를 제거하는 비슷한 명령 (그룹 및 사용자를 인수로 허용)을 찾을 수 없습니다. 내가 얻을 수있는 가장 가까운 것은 다음과 같습니다.

usermod -G all,existing,groups,except,for,group user

usermod OPTION group userOPTION 과 같은 명령 usermod이 사용자를 그룹에서 제거 하도록하는 옵션 (또는 유사한 프로그램)이 있습니까?


1
여기에있는 Fedora 사용자의 경우 man usermod는 -G 옵션 주석에서 모든 현재 그룹을 유지하려는 목록이 그룹을 삭제하는 방법이라고 설명합니다. Fedora의 경우 -R 옵션이 없습니다. 그가 피하려고하는 Lekensteyn의 접근 방식을 사용해야합니다.
Stephen

답변:


403

당신은 사용할 수 있습니다 gpasswd:

# gpasswd -d user group

새로운 그룹 설정은 다음 로그인시 최소한 데비안에서 할당됩니다. 사용자가 로그인하면 명령의 효과가 즉시 나타나지 않습니다.


9
고마워요! gpasswd -a user group특히 오타가 발생하고 -a옵션이 삭제 되는 경우 사용자를 그룹에 추가하는 것이 더 좋아 보입니다 .
Lekensteyn

1
나를 위해 작동하지 않습니다. 두 가지 메시지가 나타납니다. a) 그룹에서 사용자를 제거합니다. b) gpasswd : user는 그룹의 구성원이 아닙니다. 나중에 "멤버 그룹"을 실행하면 아무런 변화가 없습니다.
geoidesic

1
@geoidesic 당신은 효과를 보려면 로그 아웃했다가 다시 로그인해야합니다
Wasif Hossain

1
다시 로그인하지 않고 변경 사항을 적용 할 수있는 방법이 있습니까?
Andy Fusniak

2
@geoidesic Centos 7에서 이러한 오류가 발생했습니다. 기본 그룹에서 사용자를 제거하려는 경우이 오류가 발생했습니다. 기본 그룹을 전환 usermod -g user user한 다음 제거하십시오.
PanPipes

175

데비안에서 adduser패키지는 deluser두 인자를 모두 인자로 전달하면 그룹에서 사용자를 제거 하는 프로그램을 포함합니다 :

deluser user group

당신의 분포가없는 경우 adduser, 당신은 편집 할 수 /etc/group/etc/gshadow수동으로.

vigr
vigr -s

10
내가 좋아하는 프로그램으로 몰랐다 vigrvipw. 맨 페이지가 너무 멀리있는 경우에 매우 유용합니다. :)
Lekensteyn

3
또는 /etc/grouprun grpconv을 수정 한 후 /etc/gshadow편집하지 않고 업데이트 합니다.
Cyrille

sudo deluser jenkins admin/ usr / sbin / deluser : 기본 그룹에서 사용자를 제거 할 수 없습니다.
Jonathan

@JonathanLeaders 모든 사용자는 하나 이상의 그룹에 속해야합니다. 사용 usermod또는 vipw사용자의 기본 그룹을 변경할 수 있습니다. 이 질문은 보충 그룹에 관한 것이 었습니다.
Gilles

좋은. adduser $user $group대신에 더 간단한 명령이 usermod -x -y -z -...있습니다.
ygoe

65
usermod -G "" username

username 에서 모든 보조 / 보조 그룹을 제거 하고 기본 그룹의 구성원으로 남겨 둡니다. 이것은 Solaris 5.9에서 작동했습니다.


5
CentOS 6.4에서 테스트되었습니다. 공장.
집합

1
우분투 12.04에서도 작동합니다.
집합

그리고 이것은에 보조 그룹을 강제하는 가장 좋은 방법이 될 것 같습니다 어떤 모든 목록에없는 그룹을 제외한 그룹의 목록입니다.
현인

CentOS 7에서 테스트하고 작업했습니다. 감사합니다!
Tricky

14

이것은 "구식"접근법입니다 ...

대부분의 * nix 시스템은 그룹 정보를 일반 텍스트 파일로 유지합니다 /etc/group.

  • 각 줄은 필드를 포함

    • 그룹 이름
    • 암호
    • GID
    • user_list

    문자로 구분됩니다 :.

  • user_list 필드는 쉼표로 구분 된 사용자 이름 목록입니다.

이제 이름 thisuser 이 그룹에서 이름이 지정된 사용자를 제거한다고 가정합니다 thatgroup. 백업하여 /etc/group시작한 다음 su 권한 으로 환경 설정 편집기를 사용 하여 파일을 편집 하고 행 항목 에서 참조를 /etc/group 제거하십시오 ( 예 :thisuserthatgroup

원래 줄은 다음과 같습니다.

thatgroup:x:1274:someuser,thisuser,anotheruser

편집 후 다음과 같이 남겨 두어야합니다.

thatgroup:x:1274:someuser,anotheruser

다른 모든 답변과 마찬가지로 이는 사용자의 현재 세션에 영향을 미치지 않습니다 (예 : 사용자가 현재 로그인 한 경우). 다음에 사용자가 로그인하면 변경 사항이 적용됩니다.


1
vigr이미 /etc/group수동 편집에 대해 언급했습니다 . 매뉴얼 페이지에 사용자 이름은 콜론이 아닌 쉼표로 구분되어 있습니다. 재부팅은 필요하지 않습니다. 다시 로그인 (또는 사용 newgrp)하면됩니다.
Lekensteyn

데비안 이외의 사용자가 단서를 찾는 데 도움이 되려면 OP 질문의 범위에 따라 데비안에 충분할 수 있지만 * BSD OS에 이것을 사용하는 경우 일반 텍스트 파일을 수정해야합니다. 여기에 언급 된대로 pwd_mkdb -p /etc/master.passwd를 발행하여 해당 목록을 실제로 사용하십시오.
danno

3

SUSE 배포에서 아래 명령을 사용할 수 있습니다 (그리고 분명히 다른 것은 없습니다 ).

usermod -R 그룹  user_name

여기서 group사용자를 제거하려는 그룹과 그룹에서 제거 user_name할 사용자가 있습니다. 예를 들어

usermod -R root imnottheroot

1
어떤 패키지가 usermod 바이너리를 제공합니까? shadow-utils-4.1.4.3에서 -R 옵션을 제공하지 않기 때문에 버전을 확인하려고합니다.
myroslav

3
내 shadow 4.1.5.1-5 패키지 (Arch Linux)에는 -R옵션이 있지만 다른 의미입니다. 내가 생각하는 것은 리눅스가 아니다.
Lekensteyn

3
이것이 작동하는지 잘 모르겠습니다. 맨 페이지는 -R"-R, --root CHROOT_DIR CHROOT_DIR 디렉토리의 변경 사항을 적용하고 CHROOT_DIR 디렉토리의 구성 파일을 사용합니다."
MikeKusold

2
내가 찾을 수있는 유일한 종류 의이 오라클 맨 페이지 였지만 여전히 같은 내용이 아니므 로이 답변을 제거해야 할 수도 있습니다.
kyrias

sudo usermod -R admin jenkinsusermod에 : 무효의 chroot 경로 '관리자'
조나단

1

치다:

  • 사용자 이름: abc2
  • 그룹 이름: newgroup11

  • 작업 : abc2그룹에서 사용자 제거newgroup11

[root@home1 ~]# groups abc2
abc2 : abc2
[root@home1 ~]# usermod -G newgroup11 abc2
[root@home1 ~]# groups abc2
abc2 : abc2 newgroup11
[root@home1 ~]# usermod -G newgroup11 abc2
[root@home1 ~]# usermod -G abc2 abc2
[root@home1 ~]# groups abc2
abc2 : abc2

** 내가 틀렸다면 친절하게 수정하십시오. **


1
이 "작동"하지만 단일 보조 그룹이 있기 때문입니다. usermod -G newgroup11 abc2보조 그룹에 당신을 넣어 것입니다 newgroup11. 기본 그룹은이므로 abc2두 그룹으로 끝납니다. usermod -g abc2 abc2결과는 newgroup11보조 그룹에서 제거되고 있기 때문에 그것이 더 이상 언급되지 않습니다. 따라서 세 개 이상의 다른 그룹에 대해서는이 방법이 작동하지 않습니다. gpasswd더 나은 명령에 대한 다른 답변을 참조하십시오 .
Lekensteyn

1

-a 옵션없이 usermod 명령을 실행하여 그룹에서 사용자를 제거 할 수 있습니다. 예를 들어, "usermod -G group1 username"을 실행하면 사용자를 group1에 추가하고 다른 그룹에서 사용자를 제거합니다. 그룹 이름을 쉼표로 구분하여 나열하여 다양한 그룹으로 사용자를 유지할 수 있습니다.


1
이 정보는 이미 여러 번 제시되었습니다.
Scott

0

user = bob 및 group = deletethisgroup 인 remove 옵션이없는 배포판 (예 : Fedora)에서 usermod를 계속 사용하려면 명령은 다음과 같습니다.

usermod -G `cat /etc/group |  grep bob | grep -v deletethisgroup | cut -d ':' -f 1 | tr '\n' ',' | sed 's/,$//'` bob

파이프 (1)는 사용자가 속한 모든 그룹 항목을 가져오고 (2) 제거해야하는 항목을 꺼내고 (3) 첫 번째 열 (그룹 이름)을 반환하고 개행을 쉼표로 바꾸고 후행 쉼표를 제거합니다.

물론 사용자와 그룹을 매개 변수로 삭제하는 bash 스크립트에 모든 것을 넣을 수 있습니다. awk는 끝을 줄이는 데 사용될 수 있지만 grep, cut, tr 및 sed를 고수하고 싶었습니다.


이에 따라 man 페이지 , gpasswd -d bob deletethisgroup너무 사용할 수 있습니다. 사용하지 않는 이유는 무엇입니까?
Lekensteyn

모든 사람이 그룹 비밀번호를 설정하려는 것은 아닙니다. 방금 특정 배포판에 대한 질문에서 참조 한 명령을 사용하여 솔루션을 제공하고있었습니다. gpasswd -d가있는 Fedora / RHEL / Centos에서 제거 된 사용자는 비밀번호에 액세스 할 수있는 경우에도 그룹에 참여할 수 있습니다. 실제로 그룹 액세스를 허용하지 않고 증가시킵니다.
Stephen

이 유틸리티 gpasswd는와 밀접하게 관련되어 /etc/passwd있지만 대신 그룹을 관리 하기 때문에 이름이 지정된 것으로 이해했습니다 . passwd비밀번호 만 제어 하는 일반 명령 과 달리 gpasswd그룹의 구성원을 관리하는 데에도 사용할 수 있습니다. 루트 또는 그룹 관리자 인 경우 그룹 비밀번호가 필요하지 않습니다.
Lekensteyn

gpasswd 매뉴얼을 읽었습니까? Fedora / RHEL / CentOS의 경우, 설명서를 읽으면 "/ etc / group 및 / etc / gshadow 관리에 사용됩니다"라는 명령이 표시됩니다. 실제로 / etc / passwd에는 영향을 미치지 않습니다. 매뉴얼에 "그룹 암호는 둘 이상의 사람이 암호를 알고 있기 때문에 고유 한 보안 문제"라고 명시되어 있습니다. 실제로 그룹의 멤버십을 관리하지 않고 비밀번호를 사용하여 모든 사용자에게 그룹을 엽니 다. 이미 그룹의 회원 인 경우 그룹 비밀번호가 필요하지 않습니다.
Stephen

밀접하게 관련된 명명 및 목적의 의미에서, 나는 / etc / passwd 파일이 실제로 gpasswd에 의해 관리된다는 것을 암시하지 않았습니다. 첫 번째 주석의 "man page"는 Fedora 13의 gpasswd 매뉴얼 페이지를 가리 킵니다. 사용 gpasswd $group하면 언급 한 보안 문제를 일으키는 그룹 암호를 설정할 수 있습니다. 그러나 첫 번째 코멘트 및 허용 된 답변에 설명 된대로 비밀번호를 가지고 사용자를 삭제하는 데 사용할 수도 없습니다gpasswd -d $user $group . 이 명령은 그룹 암호를 묻거나 수정하거나 요구하지 않습니다.
Lekensteyn

0

username = studentgroupname = research 라고 가정 하고 그룹student 에서 사용자 를 제거 research하려면 다음을 수행해야합니다.

gpasswd -d student research

6 년 전에 있었던 일을 반복해야하는 이유는 무엇입니까? 허용 된 답변으로 표시되었습니다.
Betlista

-1
pw groupmod "groupname|gid" -d "username|uid"

어떤 이유로 든 CSH를 사용하는 경우 솔루션.


-1

gpasswd 그룹에서 사용자를 제거하는 것이이 IMO에 가장 적합한 유틸리티입니다.

명령 예 :

sudo gpasswd -d group user

* 도움말 정보 *

Usage: gpasswd [option] GROUP

Options:
  -a, --add USER                add USER to GROUP
  -d, --delete USER             remove USER from GROUP
  -h, --help                    display this help message and exit
  -Q, --root CHROOT_DIR         directory to chroot into
  -r, --delete-password         remove the GROUP's password
  -R, --restrict                restrict access to GROUP to its members
  -M, --members USER,...        set the list of members of GROUP
  -A, --administrators ADMIN,...
                                set the list of administrators for GROUP
Except for the -A and -M options, the options cannot be combined.

1
그룹 및 사용자 인수가 교체됩니다. 또한 이것은 받아 들여진 대답이 제안한 것입니다.이 게시물은 실제로 도움이되지 않습니까?
Lekensteyn
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.