Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

Python grp 모듈로 유닉스 그룹 데이터베이스 접근하기

유닉스(UNIX) 그룹 데이터베이스에 접근하려면 파이썬의 grp 모듈을 사용해야 합니다. 이 모듈은 그룹 데이터베이스의 각 항목(entry)을 튜플과 유사한 객체 형태로 반환합니다.

grp 모듈을 사용하려면 먼저 다음과 같이 임포트해야 합니다.

import grp

grp 데이터베이스 항목의 주요 속성

인덱스속성 및 설명
0gr_name
그룹의 이름
1gr_passwd
그룹의 암호화된 비밀번호 (일반적으로 비어 있음)
2gr_gid
그룹 ID (숫자형)
3gr_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()은 시스템의 모든 그룹과 멤버 목록을 한 번에 출력합니다.