특정 그룹의 그룹ID를 변경하고 싶어요. 파일이나 디렉터리의 gid를 변경하는 방법에는 여러 가지가 있습니다. 그러나 그것은 내가 원하는 것이 아닙니다. 이를 수행할 수 있는 방법이 있습니까?
답변1
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
가장 간단한 방법은groupmod -g <NEW_GID> <groupname>
또 다른 방법은 직접 편집하는 것입니다 /etc/group
. 각 열의 세 번째 필드는 gid입니다.
변경되는 그룹이 사용자의 기본 그룹인 경우 /etc/passwd
조정도 수행해야 합니다 usermod -g <NEW_GID> <username>
.
답변3
/path -group foo -print0 | xargs -0 chgrp 열 찾기