특정 그룹의 GID 변경


34

특정 그룹의 그룹 ID를 변경하고 싶습니다. 파일 또는 디렉토리의 gid를 변경하기위한 솔루션이있을 수 있습니다. 그러나 그것은 내가 원하는 것이 아닙니다. 그렇게 할 수있는 방법이 있습니까?

답변:


42

GID는 그룹의 기본 식별자입니다. 시스템과 관련하여 다른 GID는 다른 그룹입니다. GID를 변경하려면 해당 GID가 사용되는 모든 장소를 수정해야합니다.

GID를 중요하게 취급하지 말고 대신 그룹 이름을 사용해야합니다. 단일 명령 (Linux :)으로 그룹 이름을 변경할 수 있습니다 groupmod -n NEW_GROUP_NAME OLD_GROUP_NAME.

그러나 GID를 실제로 변경하려면 다음과 같이하십시오.

  • 먼저, 그룹의 사용자를 로그 아웃하고 해당 그룹이 유효, 실제 또는 저장된 그룹으로있는 프로세스를 종료해야합니다.
  • 그룹 데이터베이스에서 항목을 변경하십시오. Linux에서을 실행하십시오 groupmod -g NEWGID GROUPNAME. 다른 시스템에서는 해당 시스템의 관리 도구를 사용하거나 vigr가능한 경우 편집 /etc/group하십시오.
  • 시스템에서 이전 그룹에 속하는 모든 파일의 그룹을 변경하십시오.

    find / -gid OLDGID ! -type l -exec chgrp NEWGID {} \;
    
  • chgrp는 suid 및 sgid 플래그를 지우고 복원합니다.

  • 이전 GID를 사용하는 아카이브가 있으면 다시 빌드하십시오.
  • 이전 GID를 참조하는 구성 파일 또는 스크립트가 있으면 업데이트하십시오.
  • 새 GID를 사용해야하는 모든 프로세스를 다시 시작하십시오.

2
chgrp -h ...대신 사용 을 제안하십시오 chgrp .... 이 없으면 관련 symlink -h대상 이 그룹을 변경합니다.
Mark Plotnick

3
groupmod나를위한 주요 논쟁의 이름으로 groupmod -g NEWGID GROUPNAME
Matt

29

가장 쉬운 방법은 groupmod -g <NEW_GID> <groupname>

다른 방법은 /etc/group직접 편집 하는 것입니다. 각 열의 세 번째 필드는 gid입니다.

변경된 그룹이 사용자의 기본 그룹 인 경우 /etc/passwd다음도 조정해야합니다 usermod -g <NEW_GID> <username>..


이것도 파일 수에 영향을 미칩니 까? 파일의 수와 그룹의 수는 동시에 바뀔까요?
mibzer

1
아니요. 그룹의 ID 만 변경됩니다. 파일 / 디렉토리는 (이름이없는) gid를 유지하므로 별도로 변경해야합니다.
jofel

알았어 고마워 따라서 파일 (들) gid를 새로운 gid로 변경하려면 다른 명령을 실행해야합니다. 맞습니까? froup 파일의 gid와 관련 파일의 gid를 동시에 변경하는 방법이 있다면 더 좋습니다.
mibzer

내 대답에 다른 명령을 추가했습니다. / etc / group에없는 임시 gid를 사용하면 문제가되지 않습니다. 그룹의 모든 사용자는 새 gid를 갖도록 다시 로그인해야합니다.
jofel

0

찾기 / 경로 -group foo -print0 | xargs -0 chgrp 바


내가 말했듯이 파일의 순서를 바꿀 것입니다. 그러나 그것은 내가 의미하는 것이 아닙니다. 파일이 아닌 그룹의 gid를 변경하고 싶습니다.
mibzer

좋아, 나는 혼란 스러웠다, 그리고 'vi / etc / group':)
jirib
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.