Python으로 디렉터리 권한 변경하기
Python에서 디렉터리와 그 하위 파일들의 권한을 변경하는 방법은 크게 두 가지가 있습니다. 시스템의 chmod 명령어를 호출하는 방법과, os 모듈을 사용해 재귀적으로 처리하는 방법입니다.
방법 1: subprocess로 chmod 명령어 호출하기
chmod 명령어를 사용할 수 있는 플랫폼(Linux, macOS 등)에서는 subprocess 모듈을 통해 간단히 호출할 수 있습니다:
>>> import subprocess >>> subprocess.call(['chmod', '-R', '+w', 'my_folder'])
-R 옵션은 지정한 폴더뿐 아니라 그 안의 모든 파일과 하위 디렉터리까지 권한 변경을 일괄 적용합니다.
방법 2: os 모듈로 재귀적으로 권한 변경하기
os 모듈만 사용하고 싶다면, os.walk()를 이용해 디렉터리 트리를 순회하면서 직접 구현해야 합니다:
import os
def change_permissions_recursive(path, mode):
for root, dirs, files in os.walk(path, topdown=False):
for dir in [os.path.join(root, d) for d in dirs]:
os.chmod(dir, mode)
for file in [os.path.join(root, f) for f in files]:
os.chmod(file, mode)
change_permissions_recursive('my_folder', 0o777)
이 코드는 my_folder와 그 안의 모든 파일 및 하위 폴더의 권한을 0o777로 변경합니다.
알아두면 좋은 팁
- 순회 순서:
topdown=False로 설정하면 하위 디렉터리부터 먼저 처리하므로, 상위 폴더의 권한 변경이 하위 항목 접근에 영향을 주지 않습니다. - 보안 주의:
0o777은 모든 사용자에게 읽기·쓰기·실행 권한을 부여하므로 보안상 위험할 수 있습니다. 실제 환경에서는 필요한 최소 권한(예:0o755)을 사용하는 것이 좋습니다. - 운영체제 호환성: Windows에는
chmod명령어가 없으며, Unix 계열의 권한 체계도 제한적으로만 적용됩니다. 크로스 플랫폼 코드를 작성할 때는 이 점을 고려해야 합니다.