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

파이썬 pwd 모듈로 Unix/Linux 암호 데이터베이스 접근하기

Unix/Linux 암호 데이터베이스(pwd) 접근 개요

파이썬 표준 라이브러리의 pwd 모듈은 Unix/Linux 운영체제에서 사용자 계정의 암호 데이터베이스(password database)에 접근할 수 있는 기능을 제공합니다. 이 데이터베이스의 각 항목(entry)은 튜플과 유사한 객체 형태로 저장되며, 그 구조는 CPython API의 pwd.h 파일에 정의된 passwd 구조체를 따릅니다.

passwd 구조체의 필드 구성

인덱스속성의미
0pw_name로그인 이름
1pw_passwd암호화된 비밀번호(선택 사항)
2pw_uid숫자형 사용자 ID
3pw_gid숫자형 그룹 ID
4pw_gecos사용자 이름 또는 주석 필드
5pw_dir사용자 홈 디렉터리
6pw_shell사용자 명령 인터프리터(셸)

pwd 모듈의 주요 함수

pwd 모듈에서 제공하는 함수 목록은 다음과 같이 확인할 수 있습니다.

>>> import pwd
>>> dir(pwd)
['__doc__', '__loader__', '__name__', '__package__', '__spec__', 'getpwall', 'getpwnam', 'getpwuid', 'struct_passwd']

getpwnam() – 사용자 이름으로 조회

getpwnam() 함수는 지정한 사용자 이름에 해당하는 암호 데이터베이스의 레코드를 반환합니다.

>>> pwd.getpwnam('root')
pwd.struct_passwd(pw_name='root', pw_passwd='x', pw_uid=0, pw_gid=0, pw_gecos='root', pw_dir='/root', pw_shell='/bin/bash')

getpwuid() – UID로 조회

getpwuid() 함수는 주어진 UID(사용자 ID)에 해당하는 레코드를 반환합니다.

>>> pwd.getpwuid(0)
pwd.struct_passwd(pw_name='root', pw_passwd='x', pw_uid=0, pw_gid=0, pw_gecos='root', pw_dir='/root', pw_shell='/bin/bash')

getpwall() – 전체 사용자 목록 조회

getpwall() 함수는 튜플의 리스트를 반환하며, 각 튜플에는 개별 사용자의 passwd 구조 정보가 담겨 있습니다. 이때 구조 내의 uidgid 항목은 정수형입니다.

KeyError 예외 처리

전달된 매개변수에 해당하는 항목을 찾지 못하면 KeyError 예외가 발생합니다. 따라서 존재하지 않는 사용자를 조회할 가능성이 있다면 예외 처리를 함께 고려하는 것이 좋습니다.

>>> pwd.getpwnam('hello')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
KeyError: 'getpwnam(): name not found: hello'