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

Python으로 파일 권한 마스크(permission mask)를 확인하는 방법

파일의 상태(stat) 정보를 조회하려면 os 모듈의 stat() 함수를 사용하면 됩니다. 이 함수는 지정된 경로에 대해 stat 시스템 콜을 수행하여 파일의 다양한 메타데이터를 반환합니다.

import os
st = os.stat("file.dat")

os.stat()은 파일 경로를 인자로 받아 다음과 같이 10개의 요소로 구성된 튜플을 반환합니다.

(mode, ino, dev, nlink, uid, gid, size, atime, mtime, ctime)

각 요소의 의미는 다음과 같습니다.

  • mode: 파일 권한 및 파일 종류 정보
  • ino: inode 번호
  • dev: 파일이 위치한 장치(device) ID
  • nlink: 하드 링크 수
  • uid / gid: 파일 소유자의 사용자 ID와 그룹 ID
  • size: 파일 크기(바이트)
  • atime / mtime / ctime: 각각 최근 접근 시간, 수정 시간, 메타데이터 변경 시간

이 중 mode 값에 파일 권한 정보가 담겨 있으며, st[0] 또는 st.st_mode로 접근할 수 있습니다.

순수한 권한 마스크만 추출하기

st_mode에는 권한 비트 외에도 파일 종류(일반 파일, 디렉터리, 심볼릭 링크 등)를 나타내는 비트가 함께 포함되어 있습니다. 따라서 순수한 권한 마스크만 얻으려면 stat 모듈의 S_IMODE() 함수를 사용하는 것이 좋습니다.

import os
import stat

st = os.stat("file.dat")
perm_mask = stat.S_IMODE(st.st_mode)

print(oct(perm_mask))   # 예: 0o644

사람이 읽기 쉬운 형태로 출력하기

stat.filemode()를 사용하면 권한을 -rw-r--r--처럼 익숙한 문자열 형식으로 변환할 수 있습니다.

import stat

print(stat.filemode(st.st_mode))  # -rw-r--r--

반환된 튜플의 각 항목에 대한 자세한 해석 방법은 effbot.org의 Python Fileinfo 문서에서 확인할 수 있습니다.