Chmod 계산기 — Linux 파일 권한 (8진수 ⇄ rwx)
읽기, 쓰기, 실행 체크박스를 선택해 8진수 모드와 chmod 명령어를 얻거나, 755, 644, rwxr-xr-x를 해석하세요.
| 대상 | 읽기 | 쓰기 | 실행 | 숫자 |
|---|---|---|---|---|
| 소유자 (user) | 7 | |||
| 그룹 | 5 | |||
| 기타 사용자 | 5 |
chmod 755 deploy.sh
chmod u=rwx,g=rx,o=rx deploy.sh
- 소유자 (7): 읽기, 쓰기, 실행
- 그룹 (5): 읽기, 실행
- 기타 사용자 (5): 읽기, 실행
chmod u+x,go-w이(가) 기존 모드를 어떻게 바꾸는지 확인하세요. u/g/o/a, + - =, r w x X s t와 g=u 같은 복사를 지원합니다. X에는 위의 디렉터리 설정이 적용됩니다.
644 (rw-r--r--) → 744 (rwxr--r--)전적으로 브라우저에서 실행됩니다. 입력한 내용은 어디에도 전송되지 않습니다. 모든 무료 도구 보기.
문제를 발견하셨거나 개선할 점이 있나요? 모든 메시지를 읽고 빠르게 고칩니다.
이 chmod 계산기는 Unix와 Linux 파일 권한을 체크박스 격자, chmod가 쓰는 8진수(755, 644, 2775), ls -l이 출력하는 rwxr-xr-x 문자열 간에 변환합니다. 하나를 바꾸면 나머지가 따라 바뀌고, 바로 붙여 넣을 수 있는 chmod 명령어와 누가 무엇을 할 수 있는지에 대한 쉬운 설명도 함께 표시됩니다. setuid, setgid, sticky 비트를 처리하며, 같은 비트가 디렉터리에서는 어떻게 다른 의미를 갖는지도 설명합니다.
또한 u+x,go-w나 a=rX 같은 기호 표기 chmod 표현식을 GNU chmod와 같은 규칙으로 시작 모드에 대해 계산하므로, 서버에서 실행하기 전에 명령어가 무엇을 할지 확인할 수 있습니다. 한 가지 차이가 있습니다. u/g/o 글자를 생략하면 실제 chmod는 umask를 적용하지만, 이 도구는 “a”로 처리합니다(umask가 000인 것과 같음). 파일은 전혀 건드리지 않는 계산기입니다.
사용 방법
- 소유자, 그룹, 기타 사용자의 읽기, 쓰기, 실행 상자를 체크하거나, 750 같은 8진수 모드를 입력하거나, ls -l에서 나온 -rw-r--r-- 같은 문자열을 붙여 넣으세요.
- 폴더에 권한을 설정한다면 “디렉터리입니다”를 체크하세요. 디렉터리에서 x는 “들어갈 수 있음”을 뜻하므로 설명이 달라집니다.
- 파일 이름을 입력하고, 필요하면 재귀를 체크한 뒤 chmod 명령어를 복사하세요.
- 상대적인 변경을 확인하려면 표현식 상자에 현재 모드와 u+x,go-w 같은 표현식을 입력하고 결과를 확인하세요.
- 일반적인 답만 필요하다면 프리셋을 사용하세요. 파일은 644, 디렉터리와 스크립트는 755, 개인 키는 600입니다.
자주 묻는 질문
chmod 755는 무슨 뜻인가요?
각 자리는 읽기(4), 쓰기(2), 실행(1)의 합이며, 순서대로 소유자, 그룹, 기타 사용자를 나타냅니다. 7 = 4+2+1이므로 소유자는 읽기, 쓰기, 실행이 가능하고, 5 = 4+1이므로 그룹과 기타 사용자는 읽기와 실행은 가능하지만 쓰기는 불가능합니다. 문자열로는 rwxr-xr-x입니다. 디렉터리, 그리고 누구나 실행할 수 있어야 하는 스크립트나 프로그램의 표준 모드입니다.
644와 755의 차이는 무엇인가요?
실행 비트뿐입니다. 644(rw-r--r--)는 소유자에게 읽기와 쓰기를, 나머지 모두에게 읽기를 허용하며, 문서, 웹 페이지, 이미지, 설정 파일의 일반적인 모드입니다. 755는 모두에게 실행 권한을 추가하는데, 디렉터리에 들어가거나 스크립트를 실행하려면 이것이 필요합니다. 일반 파일에 755를 주는 것은 해롭지는 않지만 깔끔하지 않고, 디렉터리에 644를 주면 다른 사람은 그 디렉터리를 쓸 수 없게 됩니다.
chmod 777은 왜 나쁜가요?
777은 시스템의 모든 사용자에게 파일을 수정하거나 교체할 권한, 또는 디렉터리 안에 파일을 추가하고 삭제할 권한을 줍니다. 웹 서버라면 다른 사용자로 실행되는 취약한 플러그인처럼 침해된 프로세스 어느 것이든 코드를 다시 쓸 수 있다는 뜻입니다. “permission denied” 오류를 제대로 해결하는 방법은 보통 소유자를 바꾸거나(chown) 웹 서버 사용자를 파일의 그룹에 추가한 뒤 755/644 또는 775/664를 쓰는 것입니다.
setuid, setgid, sticky 비트는 무엇인가요?
선택 사항인 네 번째(맨 앞) 8진수 자리입니다. setuid(4)는 실행 파일을 소유자의 권한으로 실행되게 하며, passwd가 /etc/shadow를 수정할 수 있는 이유가 이것입니다. 실행 파일에 setgid(2)를 설정하면 파일의 그룹 권한으로 실행되고, 디렉터리에 설정하면 새 파일이 디렉터리의 그룹을 상속하므로 팀 공유 폴더(2775)에 유용합니다. 디렉터리의 sticky 비트(1)는 /tmp(1777)처럼 파일 소유자만 해당 파일을 삭제할 수 있게 합니다.
SSH 키에는 어떤 권한을 줘야 하나요?
OpenSSH는 다른 사람이 읽을 수 있는 개인 키를 거부합니다. ~/.ssh/id_ed25519 같은 개인 키는 600(또는 400), 공개 키(.pub)는 644, ~/.ssh/authorized_keys와 ~/.ssh/config는 600, ~/.ssh 디렉터리 자체는 700으로 설정하세요. AWS 등 클라우드 제공업체가 제공하는 .pem 파일에 chmod 400을 하라고 안내하는 것도 같은 이유입니다.
ls -l에 나오는 대문자 S나 T는 무슨 뜻인가요?
소문자 s나 t는 특수 비트가 설정되어 있고 그 아래의 실행 비트도 설정되어 있다는 뜻입니다. 대문자 S나 T는 특수 비트는 설정되어 있지만 실행 비트는 없다는 뜻으로, 대개 실수입니다. 아무도 실행할 수 없는 파일의 setuid는 아무 효과가 없으므로, rwSr--r--는 보통 누군가 엉뚱한 파일에 chmod u+s를 실행했다는 신호입니다.
파일과 디렉터리에서의 권한 비트
• 파일의 r: 내용을 읽습니다. 디렉터리의 r: 안에 있는 이름 목록을 봅니다(ls).
• 파일의 w: 내용을 변경합니다. 디렉터리의 w: 안에 있는 항목을 만들고, 삭제하고, 이름을 바꿉니다. 단, x가 함께 있어야 합니다. 파일 삭제는 파일이 아니라 그 디렉터리에 대한 쓰기입니다.
• 파일의 x: 프로그램이나 스크립트로 실행합니다. 디렉터리의 x: 들어가서(cd) 안에 있는 파일에 이름으로 접근합니다. r은 있고 x는 없는 디렉터리는 이름 목록은 볼 수 있지만 아무것도 열 수 없습니다.
권한은 나에게 해당하는 첫 번째 범주를 기준으로 검사합니다. 내가 소유자라면 그룹이나 기타 사용자 비트가 더 너그럽더라도 소유자 비트만 적용됩니다.
기호 표기 chmod 문법
기호 표기 모드는 [대상][연산자][권한] 형식의 절을 하나 이상 쉼표로 구분한 것입니다. 대상은 u(소유자), g(그룹), o(기타 사용자), a(모두)입니다. 연산자는 추가 +, 제거 -, 정확히 설정 =입니다. 권한은 r, w, x, X(디렉터리이거나 이미 누군가 실행할 수 있을 때만 실행), s(setuid/setgid), t(sticky)이며, u, g, o 하나를 써서 다른 범주의 현재 비트를 복사할 수도 있습니다.
예시: chmod u+x deploy.sh는 소유자가 스크립트를 실행할 수 있게 합니다. chmod go-w file은 소유자를 제외한 모두에게서 쓰기 권한을 제거합니다. chmod -R a=rX public/은 트리 전체를 모두가 읽을 수 있게 하되, 디렉터리는 들어갈 수 있고 파일은 실행할 수 없게 합니다. chmod g=u shared/는 그룹에 소유자와 같은 권한을 줍니다.
용도별 안전한 기본값
• 웹 루트: 파일 644, 디렉터리 755, 배포 사용자 소유. 업로드 디렉터리는 웹 서버 사용자 소유, 755.
• 비밀 정보(.env, 개인 키, 자격 증명): 600, 이를 읽는 서비스 사용자 소유.
• 저장소 안의 셸 스크립트: 755. Git은 실행 비트만 파일 모드 100755 또는 100644로 저장합니다. Windows에서는 git update-index --chmod=+x로 설정하세요.
• 팀 공유 디렉터리: 공통 그룹과 함께 2775. 새 파일이 그룹을 상속합니다.
• 시작점은 umask가 정합니다. 흔히 쓰는 022라면 새 파일은 644, 디렉터리는 755가 되고, 077이라면 600과 700이 됩니다.
관련 무료 도구
- 서브넷 계산기 — 모든 CIDR의 네트워크, 브로드캐스트, 호스트 범위, 마스크를 계산하고, VLSM으로 네트워크를 나누고, IPv6를 확장하고, 겹치는 범위를 찾으세요.
- .gitignore 생성기 — 언어, 프레임워크, 편집기, 운영체제별 .gitignore 템플릿을 하나의 깔끔한 파일로 합치세요.
- Cron 표현식 생성기 — 드롭다운으로 cron 일정을 만들거나 붙여 넣어 쉬운 말로 읽고, 다음 실행 10회를 내 시간대와 UTC로 확인하세요. 무료, 브라우저에서 실행.
- Docker Run ⇄ Compose — docker run 명령을 docker-compose.yml 서비스로, Compose 서비스를 다시 docker run으로 바꾸세요.