[파이썬] os `os.umask()`를 사용한 기본 권한 설정

파이썬에서 파일이나 디렉토리를 생성할 때, 파일의 기본 권한umask라는 설정에 의해 결정됩니다. umask는 파일이나 디렉토리를 생성할 때 역할을 하는 마스크로, 기본적으로 적용되는 퍼미션을 제어합니다.

파이썬의 os 모듈은 os.umask() 함수를 제공하여 기본적으로 사용되는 권한을 설정하고 변경할 수 있습니다. 이 함수를 사용하면 파일 생성 및 디렉토리 생성 시 자동으로 적용되는 퍼미션을 조절할 수 있습니다.

os.umask() 함수 이해하기

import os

# 현재 umask 값을 확인합니다.
current_umask = os.umask(0)
print(f"Current umask: {current_umask}")

# umask 값을 변경합니다. (예: 0o022)
# 0o022는 기본적으로 파일의 퍼미션을 644로, 폴더의 퍼미션을 755로 설정합니다.
new_umask = os.umask(0o022)
print(f"New umask: {new_umask}")

os.umask() 함수는 현재 umask 값을 반환하고, 인자로 전달된 새로운 umask 값을 설정합니다. 반환된 값은 현재 설정 중인 umask 값을 나타내며, 새로운 값을 설정할 때 이전 umask 값을 얻기 위해 사용될 수 있습니다.

기본 권한 설정 예제

다음은 os.umask() 함수를 사용하여 기본 권한을 설정하는 예제입니다. 기본적으로 파일의 권한은 644이며, 디렉토리의 권한은 755로 설정합니다.

import os

# 새로운 umask 값을 설정합니다.
new_umask = os.umask(0o022)

# 파일 생성
with open("file.txt", "w") as f:
    f.write("Hello, World!")

# 디렉토리 생성
os.mkdir("folder")

# 파일 및 디렉토리 권한 확인
file_perm = oct(os.stat("file.txt").st_mode & 0o777)
folder_perm = oct(os.stat("folder").st_mode & 0o777)

print(f"File permission: {file_perm}")
print(f"Folder permission: {folder_perm}")

위의 예제는 file.txtfolder라는 파일과 디렉토리를 생성하고, os.stat() 함수를 사용하여 파일과 디렉토리의 권한을 확인하는 방법을 보여줍니다. 권한은 stat 객체의 st_mode 속성에서 가져온 후, & 0o777을 사용하여 최하위 9개 비트만 가져옵니다.

결론

os.umask() 함수를 사용하면 파이썬에서 파일 및 디렉토리를 생성할 때 기본적으로 적용되는 권한을 설정하고 변경할 수 있습니다. 이를 통해 파일 및 디렉토리의 보안과 접근 제어를 더욱 유연하게 관리할 수 있습니다.