본문 바로가기
리눅스

Group identifier

by 다움위키 2023. 12. 8.

유닉스-계열 시스템에서, 여러 사용자는 그룹으로 묶일 수 있습니다. POSIX와 전통적인 유닉스 파일 시스템 허가권사용자, 그룹다른 사람들의 세 가지 클래스로 구성됩니다. 그룹의 사용은 디스크, 프린터, 및 기타 주변 장치에 대한 접근과 같은 추가 능력을 조직적인 방식으로 위임되도록 허용합니다. 이 방법은, 다른 것들 사이에서, 수퍼유저에게 Microsoft Windows NT와 그 파생 제품의 관리자 그룹과 유사한 일부 관리 임무를 일반 사용자에게 위임하는 것을 활성화합니다.

종종 GID로 약칭되는 group identifier는 특정 그룹을 나타내기 위해 사용되는 숫자 값입니다. GID에 대해 값의 범위는 시스템마다 다릅니다; 최소한, GID는 0에서 32,767 사이일 수 있으며, 한 가지 제한 사항이 있습니다: 수퍼유저의 로그인 그룹은 GID 0을 가져야 합니다. 이 숫자 값은 /etc/passwd 및 /etc/group 파일 또는 그것들과 동등한 것의 그룹을 참조하기 위해 사용됩니다. 그림자 암호 파일 및 네트워크 정보 서비스는 역시 숫자 GID를 참조합니다. 그룹 식별자는 유닉스 파일 시스템프로세스의 필수 구성 요소입니다.

Supplementary groups

유닉스 시스템에서, 모든 각 사용자는 적어도 하나의 그룹, 주요 그룹(primary group)의 구성원이어야 하며, 주요 그룹은 passwd 데이터베이스에 있는 사용자 항목의 숫자 GID로 식별되며, getent passwd 명령으로 볼 수 있습니다 (보통 /etc/passwd 또는 LDAP에 저장됩니다). 이 그룹은 주요 그룹 ID로 참조됩니다. 사용자는 그룹 데이터베이스의 관련 항목에서 추가 그룹의 구성원으로 나열될 수 있으며, 이것은 getent group으로 볼 수 있습니다 (보통 /etc/group 또는 LDAP에 저장됩니다); 이들 그룹의 ID는 보조 그룹 ID라고 참조됩니다.

Effective vs. real

유닉스 프로세스는 유효 (EUID, EGID), 실제 (UID, GID) 및 저장된 (SUID, SGID) ID를 가집니다. 통상적으로 이것들은 동일하지만, setuidsetgid 프로세스에서 그것들은 다릅니다.

Conventions

Type

원래, 부호화된 16-비트 정수가 사용되었습니다. 그 부호가 필요하지 않았기 때문에 – 음수는 유효한 그룹 ID를 만들지 않음 – 부호없는부호 없는 정수가 이제 대신 사용되며, 0에서 65,535 사이의 그룹 ID를 허용합니다. 현대 운영 시스템은 보통 0에서 4,294,967,295 사이의 그룹 ID를 허용하는 부호 없는 32비트 정수를 사용합니다.

Reserved ranges

많은 리눅스 시스템은 정적으로 할당된 그룹에 대해 0에서 99 사이의 GID 번호 범위를 예약하고, 설치 후 스크립트에서 시스템에 의해 동적으로 할당된 그룹에 대해 100–499 또는 100–999를 예약합니다. 이들 범위는 종종 useradd, groupadd와 유사한 도구에 대해 /etc/login.defs에 지정됩니다.

FreeBSD에서, 패키지에 대한 GID를 필요로 하는 포터는 50에서 999 사이에서 자유롭게 하나를 선택하고 그런-다음 이 정적 할당을 ports/GID에 등록할 수 있습니다.

Special values

  • 0: 수퍼유저는 통상적으로 영 (0)의 GID를 가집니다.
  • −1: 값 (gid_t) -1은 생략된 인수를 인식하기 위해 POSIX에 의해 예약됩니다.
  • 65,534: 32-비트 GID가 16-비트 시스템 호출의 반환 값에 적합하지 않을 때, 리눅스 커널의 기본값은 216−2 = 65,534 (많은 리눅스 배포판에서 그룹 이름 "nogroup"에 매핑됨)입니다. 그 값은 역시 만약 들어오는 NFSv4 패킷의 그룹 이름이 시스템에서 알려진 그룹과 일치하지 않으면 idmapd에 의해 반환됩니다.

Personal groups

많은 시스템 관리자는 사용자의 로그인 이름과 같은 이름을 가지고, 종종 사용자의 UID와 같은 숫자 GID를 가지는 개인 주요 그룹도 각 사용자에게 할당합니다. 그러한 개인 그룹은 다른 구성원을 가지지 않고 사용자에게 습관적으로 umask 0002로 작업하는 것을 허용함으로써 공유 디렉토리의 다른 사용자와 더 쉽게 공동 작업하도록 만듭니다. 이렇게 하면, 새로 생성된 파일은 기본적으로 그룹 구성원에 대해 활성화된 쓰기 허가권을 가질 수 있는데, 왜냐하면 이것은 통상적으로 개인 그룹의 구성원, 즉 오직 파일 소유자에 대해 허용되는 쓰기 접근을 활성화합니다. 어쨌든, 만약 파일이 또 다른 그룹에 속하고 setgid 비트 설정을 가지는 공유 디렉토리에서 생성되면, 생성된 파일은 마찬가지로 자동으로 해당 디렉토리 그룹의 구성원도 쓰기-가능하게 될 것입니다.

많은 리눅스 시스템에서, /etc/login.defs에서 USERGROUPS_ENAB 변수는 useradd 또는 userdel과 같은 명령이 결합된 개인 그룹을 자동으로 추가 또는 삭제할지 여부를 제어합니다.