사용자 식별자

유닉스 계열 운영체제의 커널은 사용자를 식별하기 위해 사용자 식별자(약자: UID, User ID)라 불리는 양의 정수를 사용한다. UID로 사용되는 정수의 범위는 시스템에 따라 다르다. 전통적으로 UID는 다음과 같은 제약을 갖는 15비트 정수(0부터 32767)로 정의되어 왔다.

 UID 0은 항상 슈퍼유저를 의미한다.
 관례적으로 nobody 사용자에게는 가장 큰 UID가 할당된다(15비트 정수 체계에서는 32767).
 일반적으로 1부터 100까지의 UID는 시스템 용도로 예약된다. 레드햇 엔터프라이즈 리눅스의 경우 101부터 499까지, 데비안 계열에서는 999까지를 시스템 계정용으로 예약할 것을 권장한다.

특정 UID에 해당하는 사용자는 /etc/passwd 파일에서 확인할 수 있다. 섀도 패스워드 파일과 네트워크 정보 서비스 또한 사용자를 UID로 참조한다. UID는 유닉스 파일 시스템과 프로세스 관리에도 사용된다. 일부 운영체제는 16비트 UID를 지원하여 최대 65,536개의 UID를 사용할 수 있으며, 현대적인 운영체제는 32비트 UID를 사용해 최대 232(4,294,967,296)개의 UID를 지원한다.

POSIX 호환 환경에서는 id 명령줄 프로그램을 통해 사용자의 UID, 사용자 이름, 주 그룹 및 그룹 식별자 등을 확인할 수 있다.

 유효 사용자 식별자 

프로세스가 생성한 파일의 소유자는 해당 프로세스의 유효 사용자 식별자(effective user ID, euid)로 결정된다. 커널과 마운트 옵션에 따라 유효 그룹 식별자(effective group ID, egid) 역시 파일 생성 시 영향을 미칠 수 있다. BSD 계열 유닉스에서는 새 파일의 소유 그룹이 해당 파일이 속한 디렉터리의 소유 그룹으로 정해진다. 반면 AT&T System V 유닉스에서는 일반적으로 파일을 생성한 프로세스의 유효 GID가 소유 그룹이 된다. 일부 파일 시스템은 마운트 시 이 두 방식 중 하나를 선택할 수 있도록 한다.

파일 접근 시 커널은 프로세스의 유효 UID와 GID를 기준으로 접근 허용 여부를 판단한다.

 저장된 사용자 식별자 

높은 권한의 UID로 실행 중인 프로그램이 일시적으로 낮은 권한으로 작업해야 하는 경우, 저장된 사용자 식별자(saved user ID, suid)가 사용된다. 프로세스가 유효 UID를 변경하면, 변경 이전의 유효 UID는 저장된 UID로 보관된다. 작업을 마친 뒤에는 이 저장된 UID를 다시 유효 UID로 복원함으로써 원래의 권한으로 돌아갈 수 있다. 유효 UID의 권한이 낮은 경우에는 실제 UID나 저장된 UID로만 유효 UID를 변경할 수 있으므로, 권한 복원을 위해 저장된 UID는 필수적이다.

 실제 사용자 식별자 

프로세스의 실제 소유자는 실제 사용자 식별자(real UID, ruid)와 실제 그룹 식별자(real GID, rgid)로 결정되며, 이는 프로세스 간 시그널 전송 권한에 영향을 준다. 슈퍼유저가 아닌 권한으로 실행 중인 프로세스가 다른 프로세스에 시그널을 보내기 위해서는, 송신 프로세스의 실제 또는 유효 UID가 수신 프로세스의 실제 또는 저장된 UID와 일치해야 한다.Kerrisk, Michael. The Linux Programming Interface. No Starch Press, 2010, p. 171. 자식 프로세스는 부모 프로세스의 자격 증명을 상속받기 때문에 상호 간 시그널 전송이 가능하다.

 파일 시스템 사용자 식별자 

리눅스에는 파일 시스템 접근 제어를 위해 파일 시스템 사용자 식별자(file system user ID, fsuid)가 존재한다. 별도로 변경하지 않는 한 fsuid는 euid와 동일하다. 또한 프로세스의 ruid, suid, euid 중 어느 것도 루트(root)가 아닌 경우 루트 UID를 가질 수 없다.

fsuid는 시그널 전송 권한에는 영향을 주지 않으면서 파일 시스템 접근 권한만을 조정하기 위해 도입되었다. 이는 NFS 서버와 같은 환경에서 활용된다. 리눅스 커널 2.0 이후에는 SUSv3 시그널 전송 규칙을 따르므로 fsuid의 필요성이 줄어들었으나, 하위 호환성을 위해 여전히 지원된다.

 같이 보기 
 setuid
 스티키 비트
 그룹 식별자
 프로세스 식별자
 아이노드
 파일 시스템 권한

 각주 

분류:유닉스
분류:운영체제 기술