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


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
내가 좋아하는 프로그램으로 몰랐다 vigr및 vipw. 맨 페이지가 너무 멀리있는 경우에 매우 유용합니다. :)
— 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 = student 및 groupname = 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.