Python에서는 pwd, grp, os 모듈을 함께 사용하여 파일이나 디렉터리의 소유자를 손쉽게 변경할 수 있습니다.
각 모듈의 역할은 다음과 같습니다.
- pwd 모듈: 사용자 이름(user name)으로부터 UID(사용자 ID)를 조회합니다.
- grp 모듈: 그룹 이름(group name)으로부터 GID(그룹 ID)를 조회합니다.
- os 모듈:
os.chown()함수를 통해 실제 소유자 변경 작업을 수행합니다.
예제 코드
import pwd
import grp
import os
uid = pwd.getpwnam("nobody").pw_uid
gid = grp.getgrnam("nogroup").gr_gid
path = 'my_folder'
os.chown(path, uid, gid)코드 설명
pwd.getpwnam("nobody")는 시스템 계정 정보 데이터베이스에서 "nobody"라는 사용자의 정보를 조회한 뒤, 그중 pw_uid(사용자 ID) 값을 반환합니다. 마찬가지로 grp.getgrnam("nogroup")은 "nogroup" 그룹의 gr_gid(그룹 ID)를 반환합니다.
마지막으로 os.chown(path, uid, gid)를 호출하면 지정한 경로의 파일 또는 디렉터리 소유자가 해당 UID와 GID로 변경됩니다.
주의 사항
- 소유자 변경 작업은 일반적으로 루트(root) 권한이 필요합니다. 권한이 없으면
PermissionError가 발생할 수 있습니다. - 존재하지 않는 사용자나 그룹 이름을 조회하면
KeyError가 발생하므로, 상황에 따라 예외 처리를 추가하는 것이 좋습니다. - 하위 디렉터리와 파일까지 재귀적으로 소유자를 변경하려면
os.walk()와 함께 반복 처리해야 합니다.