유닉스(UNIX) 그룹 데이터베이스에 접근하려면 파이썬의 grp 모듈을 사용해야 합니다. 이 모듈은 그룹 데이터베이스의 각 항목(entry)을 튜플과 유사한 객체 형태로 반환합니다.
grp 모듈을 사용하려면 먼저 다음과 같이 임포트해야 합니다.
import grp
grp 데이터베이스 항목의 주요 속성
| 인덱스 | 속성 및 설명 |
|---|---|
| 0 | gr_name 그룹의 이름 |
| 1 | gr_passwd 그룹의 암호화된 비밀번호 (일반적으로 비어 있음) |
| 2 | gr_gid 그룹 ID (숫자형) |
| 3 | gr_mem 그룹에 속한 사용자 목록 |
그룹 객체에서 gid는 정수형이며, 그룹 이름과 비밀번호는 문자열입니다. 멤버 목록(gr_mem)은 문자열로 이루어진 리스트입니다.
grp 모듈의 주요 메서드
grp.getgrgid(gid)
주어진 그룹 ID(gid)에 해당하는 그룹 데이터베이스 항목을 반환합니다. 만약 해당 gid와 일치하는 그룹이 존재하지 않으면 KeyError 예외가 발생합니다.
grp.getgrnam(name)
주어진 그룹 이름(name)에 해당하는 그룹 데이터베이스 항목을 반환합니다. 해당 이름의 그룹이 존재하지 않으면 KeyError 예외가 발생합니다.
grp.getgrall()
시스템에 등록된 모든 그룹 데이터베이스 항목을 반환합니다.
예제 코드
import grp
# 그룹 ID로 그룹 정보 조회
print("ID: 4: " + str(grp.getgrgid(4)) + '\n')
# 그룹 이름으로 그룹 정보 조회
print("cdrom group: " + str(grp.getgrnam('cdrom')) + '\n')
# 전체 그룹 목록 순회
for entry in grp.getgrall():
print("Group Name: " + entry[0] + "\t\tMembers: " + str(entry.gr_mem))실행 결과
$ sudo python3 example.py ID: 4: grp.struct_group(gr_name='adm', gr_passwd='x', gr_gid=4, gr_mem=['syslog', 'unix_user']) cdrom group: grp.struct_group(gr_name='cdrom', gr_passwd='x', gr_gid=24, gr_mem=['unix_user']) Group Name: root Members: [] Group Name: daemon Members: [] Group Name: bin Members: [] Group Name: sys Members: [] Group Name: adm Members: ['syslog', 'unix_user'] Group Name: tty Members: [] Group Name: disk Members: [] Group Name: lp Members: [] Group Name: mail Members: [] Group Name: news Members: [] Group Name: uucp Members: [] Group Name: man Members: [] Group Name: proxy Members: [] Group Name: kmem Members: [] Group Name: dialout Members: [] Group Name: fax Members: [] Group Name: voice Members: [] Group Name: cdrom Members: ['unix_user'] Group Name: floppy Members: [] Group Name: tape Members: [] Group Name: sudo Members: ['unix_user'] Group Name: audio Members: ['pulse'] Group Name: dip Members: ['unix_user'] Group Name: www-data Members: [] Group Name: backup Members: [] ……… ……… ………
위 실행 결과에서 볼 수 있듯이, getgrgid()와 getgrnam()은 특정 그룹의 상세 정보를 반환하고, getgrall()은 시스템의 모든 그룹과 멤버 목록을 한 번에 출력합니다.