실습 · 연습문제 1개
ls -l 권한 문자열을 chmod 8진수로 mode-to-octal
ls -l은 권한을 -rw-r-----, drwxrwsr-x처럼 보여 주고, chmod는 640, 2775처럼 8진수로 받는다. 함수 mode_to_octal(s)를 완성해 권한 문자열을 chmod에 넣을 수 있는 8진수 문자열로 바꾼다.
입력
- 9글자(
rwxr-x---) 또는 맨 앞에 파일 종류 한 글자(-,d,l등)가 붙은 10글자(drwxr-x---). - 길이가 9나 10이 아니면
ValueError를 낸다.
규칙
- 세 글자씩 소유자·그룹·기타.
r= 4,w= 2,x= 1을 더한다. - 특수 비트는 실행 자리(세 번째 글자)에 표시된다.
| 자리 | 소문자 | 대문자 | 특수 비트 값 |
|---|---|---|---|
| 소유자 실행 | s = setuid + x |
S = setuid, x 없음 |
4 |
| 그룹 실행 | s = setgid + x |
S = setgid, x 없음 |
2 |
| 기타 실행 | t = sticky + x |
T = sticky, x 없음 |
1 |
출력
- 특수 비트가 없으면 세 자리(
"750"), 있으면 특수 비트 자리를 앞에 붙인 네 자리("2775").
예: mode_to_octal("drwxrwsr-x") == "2775", mode_to_octal("drwxrwxrwt") == "1777".