리눅스에서 umask로 파일, 디렉터리 초기 접근권한을 설정할 수 있다.('초기 접근 권한 umask 설정' 글 참조)
https://engineer-1.tistory.com/entry/Linux-%EC%B4%88%EA%B8%B0-%EC%A0%91%EA%B7%BC-%EA%B6%8C%ED%95%9C-umask-%EC%84%A4%EC%A0%95
8진수 표기법으로 umask가 002일 경우 아래와 같이 파일 및 디렉터리 초기접근권한 적용된다.
파일 666-002 = 664 디렉터리 777-002 = 775
접근권한 - 파일 : -rw-rw-r-- (664) 디렉터리 : drwxrwxr-x (775)
다만 '002' umask 지정을 할 경우 Python에서는 '0o002' 로 설정을 해주어야 한다.
8진수 표기법과 Python으로 umask 설정 테스트한 내역을 작성한다.
Python 8진수 표기법
8진수를 표기하기 위해서는 숫자 앞에 '0o' 를 접두어를 붙여야 한다. (2진수 : 0b 16진수 : 0x)
002 -> 0o002
077 -> 0o077
Python umask 설정 테스트
아래 Python 코드는 umask를 002 -> 077로 변환하고, 각 umask 설정 별로 파일 및 디렉터리를 생성하는 테스트이다.
**os.umask(mask) 명령 수행 시, 변경 전 umask를 출력하고, umask를 변경한다.
[test@test ~]$ cat umask_test.py import os #file,directory 생성 function def cr_file_dir(file_name,dir_name): #file 생성 with open(file_name,'w',encoding='utf8') as f: f.write('Hello, World \r\n') #directory 생성 os.mkdir(dir_name) #umask 변경 전 file, directory 생성 cr_file_dir('test.txt','test_dir') #8진수(octal) '0o077' 변수 할당 mask = 0o077 #umask 설정 #'umask' 변수에 변경 전 umask 할당(os.umask(mask) 명령어 수행 시 변경 전 umask 출력) umask = os.umask(mask) #umask 설정 후 file,directory 생성 cr_file_dir('umask_test.txt','umask_test_dir') #8진수 출력 print("Current umask(octal):", oct(mask)) print("Previous umask(octal):", oct(umask)) #10진수 출력 print("Current umask:", mask) print("Previous umask:", umask) |
테스트 결과
[test@test ~]$ python3 umask_test.py Current umask(octal): 0o77 Previous umask(octal): 0o2 Current umask: 63 Previous umask: 2 [test@test ~]$ ll -rw-rw-r--. 1 test test 15 12월 20 16:34 test.txt drwxrwxr-x. 2 test test 4096 12월 20 16:34 test_dir -rw-------. 1 test test 15 12월 20 16:34 umask_test.txt drwx------. 2 test test 4096 12월 20 16:34 umask_test_dir |
참조로, Current umask(octal) 출력에서 '0o' 8진수 접두어 뒤에 0이 출력되지 않는(0o077 -> 0o77) 이유는 Python에서 숫자 앞에 0을 허용하지 않는다고 한다.
ex) 월표시 03 (x) 3 (O)
'03'을 표현하고 싶으면 문자 형태로 변환 해주어야 한다.
추가적인 이유로 Python2 에서는 8진수 접두어가 0 이므로 숫자 앞에 0을 붙일 수 없다고 한다. 해당 내용은 아래 '파이썬 숫자 앞에 0을 쓸 수 없는 이유' 블로그를 참조하였습니다.
os.umask() 사용법 참조
https://www.geeksforgeeks.org/python-os-umask-method/
파이썬 숫자 앞에 0을 쓸수 없는 이유
https://blog.naver.com/5755084/221725208295