2.1 Linux와 셸의 기초

실습 · 연습문제 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".