권한을 체크하거나 755, rwxr-xr-x 같은 모드를 입력하면 8진수 값, 기호 표기, chmod 명령을 알려 줍니다.
권한 비트
대상
읽기r = 4
쓰기w = 2
실행x = 1
특수
소유자u
그룹g
기타o
이 모드가 허용하는 것
8진수 모드 명령
기호 모드 명령
자주 쓰는 모드
소유자는 파일을 수정할 수 있고 모든 사용자가 읽을 수 있습니다. 일반 파일의 보통 모드입니다.
소유자만 파일을 읽고 수정할 수 있습니다. SSH 키 같은 비공개 파일에 쓰세요.
소유자는 수정할 수 있고 모든 사용자가 읽고 실행할 수 있습니다. 프로그램과 디렉터리의 보통 모드입니다.
소유자만 읽고, 수정하고, 실행할 수 있습니다. 비공개 디렉터리와 스크립트에 쓰세요.
소유자와 그룹은 수정할 수 있고 모든 사용자가 읽고 실행할 수 있습니다. 그룹이 함께 쓰는 디렉터리에 쓰세요.
소유자와 그룹은 파일을 수정할 수 있고 모든 사용자가 읽을 수 있습니다.
소유자만 파일을 읽을 수 있고, 어느 대상에도 쓰기 권한이 없습니다.
모든 사용자가 파일을 만들 수 있지만, sticky 비트 때문에 다른 사용자의 파일은 삭제할 수 없습니다. /tmp의 모드입니다.
이 도구에 대하여
모드의 구성
Unix는 파일마다 소유자, 그룹, 그 밖의 사용자에 대한 권한 세 묶음을 둡니다. 묶음마다 읽기(4), 쓰기(2), 실행(1)의 세 비트가 있고, 켜진 비트를 더한 값이 8진수 한 자리가 됩니다. 755에서 소유자는 4 + 2 + 1 = 7, 그룹과 기타 사용자는 4 + 1 = 5이며, ls -l은 이를 rwxr-xr-x로 출력합니다.
기호 필드는 -rw-r--r--나 drwxr-xr-x처럼 ls -l이 출력하는 열 글자 문자열 전체도 받습니다. 첫 글자는 권한이 아니라 파일 유형이므로 도구는 이를 무시합니다.
디렉터리에서 비트의 의미
디렉터리에서 읽기는 안에 있는 이름의 목록을 볼 수 있게 하고, 실행은 디렉터리에 들어가 안의 파일에 접근할 수 있게 합니다. 쓰기는 항목을 만들고, 삭제하고, 이름을 바꿀 수 있게 하지만 실행 권한이 함께 있어야만 합니다. 그래서 디렉터리에는 보통 읽기가 있는 곳마다 실행도 있습니다. 또한 파일을 삭제할 수 있는지는 파일 자체의 권한이 아니라 그 파일이 들어 있는 디렉터리의 권한에 따라 정해집니다.
setuid, setgid, sticky 비트
앞에 붙는 네 번째 자리에는 setuid(4), setgid(2), sticky(1)의 세 특수 비트가 들어갑니다. ls -l은 이를 실행 자리에 s나 t로 표시합니다. 대문자 S나 T는 특수 비트는 설정되어 있지만 그 아래의 실행 비트는 설정되어 있지 않다는 뜻입니다.
이 도구가 출력하는 두 명령은 체크한 비트를 설정하지만, chmod가 파일에 이미 있는 특수 비트를 항상 제거하지는 않습니다. 대부분의 리눅스 배포판이 쓰는 GNU chmod는 모드에 명시하지 않는 한 chmod 755로도 디렉터리의 setuid와 setgid 비트를 유지합니다. 이 비트를 지우려면 chmod 00755로 쓰거나 a-s를 추가하세요. macOS의 chmod는 o=rx 같은 절을 써도 sticky 비트를 유지하며, chmod -t로 제거합니다. 두 구현 모두 받아들이는 형식이기 때문에 sticky 비트는 별도의 +t 절로 출력합니다.
자주 묻는 질문
chmod 755는 무슨 뜻인가요?
소유자는 읽고, 쓰고, 실행할 수 있으며, 그룹과 그 밖의 사용자는 읽고 실행할 수 있지만 쓸 수는 없습니다. 다른 사용자가 쓸 수 있되 소유자만 수정해야 하는 프로그램, 스크립트, 디렉터리의 보통 모드입니다.
SSH 개인 키에는 어떤 권한을 줘야 하나요?
600을 쓰세요. 소유자만 파일을 읽고 쓸 수 있습니다. OpenSSH는 다른 사용자가 읽을 수 있는 개인 키를 사용하지 않습니다.
chmod 777을 피해야 하는 이유는 무엇인가요?
777 모드에서는 시스템의 모든 사용자가 파일을 수정하거나 교체할 수 있고, 디렉터리라면 파일을 추가하거나 삭제할 수 있습니다. 프로그램이 권한 오류로 실패하면 그 프로그램이 어떤 사용자로 실행되는지 확인하고, 그 사용자나 그룹에 필요한 권한만 주세요.
ls -l에서 대문자 S나 T는 무슨 뜻인가요?
setuid, setgid 또는 sticky 비트는 설정되어 있지만 같은 자리의 실행 비트는 설정되어 있지 않다는 뜻입니다. 소문자 s나 t는 둘 다 설정되어 있다는 뜻입니다.
입력한 내용이 서버로 전송되나요?
아니요. 변환은 브라우저 탭의 JavaScript가 처리합니다. 이 도구는 입력한 내용으로 네트워크 요청을 보내지 않으며, 사이트의 보안 정책이 다른 호스트로 가는 요청을 차단합니다.