chmod 계산기

리눅스 파일 권한을 양방향으로 계산합니다. 소유자, 그룹, 그 외 사용자의 읽기·쓰기·실행을 체크하면 8진수 모드와 실행할 명령이 나오고, 755, rwxr-xr-x, u+x 또는 ls -l 한 줄을 붙여 넣으면 정확히 무슨 뜻인지 보여 줍니다.

브라우저에서 계산 · 어디로도 전송되지 않음 · POSIX와 GNU coreutils 동작 기준
파일
디렉터리

755를 입력하거나 rwxr-xr-x 또는 ls -l 한 줄을 붙여 넣고, u+x나 go-w로 모드를 바꿀 수도 있습니다.

종류
읽기4쓰기2실행1숫자
소유자4+2+1=7
그룹4+1=5
그 외 사용자4+1=5
특수 비트없음=0

쉬운 말로

  • 소유자는 읽기, 변경 및 실행 권한이 있습니다.
  • 그룹과 그 외 사용자는 읽기 및 실행 권한이 있습니다.
  • 이 파일은 실행할 수 있습니다.

브라우저에서 계산합니다. 어디로도 전송되지 않습니다.

chmod는 무엇을 하나요?

chmod는 파일을 읽고, 쓰고, 실행할 수 있는 사람을 정합니다. 모드는 12비트이며 보통 755, 644, 2775처럼 8진수 세 자리 또는 네 자리로 씁니다.

세 자리 숫자는 각각 한 클래스, 곧 파일의 소유자, 파일의 그룹, 그 외 사용자에 해당하며, 각 숫자는 세 수의 합입니다. 읽기는 4, 쓰기는 2, 실행은 1입니다. 그래서 7은 읽기·쓰기·실행, 5는 읽기와 실행, 6은 읽기와 쓰기, 4는 읽기만입니다. 원리는 이것이 전부입니다. chmod 755 script.sh는 소유자 7, 그룹 5, 그 외 5로 정한다는 뜻입니다.

네 번째 숫자가 있으면 세 가지 특수 비트, 곧 setuid 4, setgid 2, sticky 비트 1을 담으며, 하나도 설정하지 않았다면 생략합니다. 위의 계산기는 네 자리를 한꺼번에 보여 주고 숫자마다의 계산도 함께 보여 주므로, 더는 숫자를 찾아볼 필요가 없습니다.

모드는 12비트입니다chmod 755 script.sh
이전script.sh
특수s4s2t10
소유자r4w2x16
그룹r4w2x14
그 외 사용자r4w2x14
-rw-r--r--0644
이후script.sh
특수s4s2t10
소유자r4w2x17
그룹r4w2x15
그 외 사용자r4w2x15
-rwxr-xr-x0755
chmod 755는 모드의 모든 비트를 한 번에 설정합니다. 644에서 시작하면 클래스마다 하나씩, 실행 비트 세 개가 켜집니다. 각 클래스의 세 비트를 더하면 8진수 한 자리가 됩니다.
권한 표로 보여 주는 모드 755: 8진수 숫자, 문자 형식, chmod 명령이 함께 표시된 chmod 계산기 화면권한 표로 보여 주는 모드 755: 8진수 숫자, 문자 형식, chmod 명령이 함께 표시된 chmod 계산기 화면체크하거나 입력표와 입력란은 같은 것입니다. 한쪽을 바꾸면 나머지가 따라 바뀝니다.숫자마다클래스마다 4 + 2 + 1이라 숫자를 외울 필요가 없습니다.무엇이든 붙여 넣기755, rwxr-xr-x, u+x, ls -l 한 줄 모두 읽습니다.명령선택한 모드로 만들며, 알맞은 자릿수와 파일을 망가뜨리지 않는 재귀 형식을 씁니다.무슨 뜻인지쉬운 한 문장과, 그 모드에 필요한 경고입니다.
모드 755를 분해한 모습: 권한 표, 숫자마다의 계산, 문자 형식, 실행할 명령. 숫자를 선택하면 각 부분이 무엇을 보여 주는지 알 수 있습니다.

리눅스 파일 권한은 어떻게 동작하나요?

모든 파일에는 소유자, 그룹, 모드가 있습니다. 모드는 세 클래스 각각에 세 가지 권한, 곧 아홉 비트를 주며, ls -l은 파일 종류를 나타내는 글자 바로 뒤에 이 아홉 글자를 그대로 출력합니다.

-rw-r--r--는 파일(-)이며, 소유자는 읽고 쓸 수 있고 그룹과 그 외 사용자는 읽기만 할 수 있는 모드 644입니다. drwxr-xr-x는 755인 디렉터리(d)입니다. 첫 글자는 종류를 뜻합니다. -는 파일, d는 디렉터리, l은 심볼릭 링크, b, c, p, s는 특수한 종류입니다. 이런 줄을 계산기에 붙여 넣으면 모드와 종류를 읽어 냅니다.

디렉터리에서는 세 권한의 뜻이 파일과 다릅니다. 읽기는 안에 있는 이름을 나열할 수 있게 합니다. 실행은 디렉터리에 들어가서 이름을 이미 아는 파일에 접근할 수 있게 합니다. 쓰기는 실행과 함께 있어야 항목을 만들고 지울 수 있으며, 그래서 파일 삭제 여부는 파일이 아니라 디렉터리의 권한에 달려 있습니다. 읽기만 있고 실행이 없는 디렉터리는 목록은 볼 수 있어도 열 수 없는 디렉터리입니다.

ls -l이 맨 처음 출력하는 것ls -l notes.txt
권한파일에서디렉터리에서
r4안의 내용 읽기안의 이름 나열
w2안의 내용 바꾸기항목 만들기, 이름 바꾸기, 삭제
x1프로그램으로 실행들어가서 안의 것을 열기

다른 첫 글자: d는 디렉터리, l은 심볼릭 링크, b, c, p, s는 특수한 종류입니다.

chmod 755는 무슨 뜻인가요?

755는 소유자는 파일을 읽고, 쓰고, 실행할 수 있고, 그 외 사용자는 읽고 실행할 수만 있고 바꿀 수는 없다는 뜻입니다. 디렉터리와 프로그램의 일반적인 모드입니다.

숫자별로 보면, 7 = 4 + 2 + 1이므로 소유자는 읽고, 쓰고, 실행합니다. 5 = 4 + 1은 그룹과 그 외 사용자에게 똑같이 적용되어 둘 다 읽고 실행합니다. 풀어 쓰면 rwxr-xr-x이고, 문자 형식 명령으로는 chmod u=rwx,g=rx,o=rx입니다.

사람들이 들어가야 하는 디렉터리와 실행해야 하는 스크립트·바이너리에 쓰세요. 비밀로 해야 하는 것에는 쓰지 마세요. 마지막 5는 그 컴퓨터의 모든 계정이 파일을 읽을 수 있다는 뜻입니다. 웹 서버 파일에 대해 WordPress 공식 문서는 디렉터리는 755 또는 750, 파일은 644 또는 640을 권장합니다.

755, 숫자별로chmod 755
7=r4w2x14+2+1rwx소유자
5=r4-2x14+1r-x그룹
5=r4-2x14+1r-x그 외 사용자
알맞은 곳
  • 사람들이 들어가야 하는 디렉터리
  • 스크립트와 프로그램
맞지 않는 곳
  • 비밀로 해야 하는 것: 누구나 읽을 수 있습니다

WordPress 공식 문서: 디렉터리는 755 또는 750, 파일은 644 또는 640.

chmod 644와 755: 어느 쪽이 필요한가요?

파일은 644, 디렉터리와 실행해야 하는 것은 755입니다. 차이는 실행 비트 하나뿐입니다.

644는 rw-r--r--입니다. 소유자는 바꿀 수 있고, 모두가 읽을 수 있으며, 아무도 실행할 수 없습니다. HTML, CSS, 이미지, 설정 파일, 소스 파일에 알맞습니다. 755는 rwxr-xr-x로, 같은 권한에 세 클래스 모두의 실행 비트가 더해진 것입니다. 디렉터리에는 이것이 있어야 아무나 들어갈 수 있고, 스크립트에는 이것이 있어야 셸이 실행을 거부하지 않습니다.

피해야 할 실수는 사이트 전체에 chmod -R 755를 쓰는 것으로, 모든 이미지와 모든 .php 파일이 실행 가능해집니다. 계산기가 써 주는 find 명령 두 개는 블로그에서 가져온 고정된 쌍이 아니라 실제로 선택한 모드로 디렉터리와 파일에 서로 다른 모드를 한 번에 줍니다.

차이는 실행 비트 하나뿐입니다644 · 755
644
읽기쓰기실행
소유자rw-6
그룹r--4
그 외r--4

파일: HTML, CSS, 이미지, 설정 파일, 소스 코드

755
읽기쓰기실행
소유자rwx7
그룹r-x5
그 외r-x5

디렉터리, 스크립트, 프로그램

거꾸로 쓴 경우
  • 755755인 파일은 실행할 수 있고, chmod -R 755 아래의 모든 이미지와 .php 파일도 그렇습니다.
  • 644644인 디렉터리는 이름은 보이지만 아무도 들어가거나 안의 것을 열 수 없습니다.

chmod 777은 무엇을 하며 안전한가요?

777은 그 컴퓨터의 모든 계정이 파일을 읽고, 바꾸고, 실행할 수 있게 합니다. 올바른 해법인 경우가 거의 없으며, WordPress 공식 문서는 어떤 디렉터리에도 777을 주지 말라고 합니다.

누구나 쓸 수 있다는 것은 로그인할 수 있는 누구든, 또는 어떤 사용자로 실행 중인 무엇이든(침해된 프로세스 포함) 파일 내용을 바꿔치기할 수 있다는 뜻입니다. 그 파일이 웹 서버가 실행하는 스크립트라면 서버를 내주는 셈입니다. WordPress 권한 문서는 디렉터리는 755 또는 750, 파일은 644 또는 640을 권장하며, 업로드 디렉터리를 포함해 어떤 디렉터리도 777이어서는 안 된다고 말합니다.

웹 애플리케이션이 디렉터리에 쓸 수 없을 때의 해법은 모드가 아니라 소유자나 그룹입니다. 디렉터리를 웹 서버가 실행되는 사용자에게 chown하거나, 그 사용자를 공유 그룹에 넣고 775를 쓰세요. 계산기는 누구나 쓸 수 있는 모드에 항상 경고합니다. 파일은 언제나, 디렉터리는 sticky 비트가 서로의 파일 삭제를 막지 않는 경우에 경고합니다.

777에서 누가 쓸 수 있나chmod 777
777누구나 바꿀 수 있음
읽기쓰기실행
소유자rwx7
그룹rwx7
그 외rwx7
  1. 1아무 계정, 또는 그 계정으로 실행되는 아무 프로세스
  2. 2스크립트를 바꿔치기하고
  3. 3웹 서버가 그것을 실행합니다
문서가 요구하는 것

WordPress · 디렉터리는 755 또는 750, 파일은 644 또는 640.

“어떤 디렉터리에도, 업로드 디렉터리에도 777을 주어서는 안 됩니다.”

해법은 모드가 아니라 소유자나 그룹입니다. 웹 서버의 사용자에게 chown하거나, 그룹을 공유하고 775를 쓰세요.

SSH가 키 권한이 너무 열려 있다고 하는 이유는?

OpenSSH는 소유자 외의 누군가가 읽을 수 있는 개인 키를 쓰지 않습니다. 키는 600, .ssh 디렉터리는 700으로 설정하세요.

정확한 메시지는 Permissions 0644 for '<path>' are too open.이고, 이어서 It is required that your private key files are NOT accessible by others.가 나옵니다. 검사 기준은 단호합니다. 파일의 소유자인데 그룹 또는 그 외 비트가 하나라도 설정되어 있으면 키를 거부합니다. 그래서 640도 실패하며, 답은 “644보다 조금 덜 열기”가 아니라 600입니다.

chmod 600 ~/.ssh/id_ed25519와 chmod 700 ~/.ssh로 해결됩니다. 공개 키는 누구나 읽을 수 있어도 됩니다. 여기서 중요한 것은 개인 키와 디렉터리뿐입니다. 위의 자주 쓰는 모드에서 SSH 키를 고르면 계산기가 두 명령을 모두 써 줍니다.

ssh가 출력하는 내용
$ssh you@server.example
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@         WARNING: UNPROTECTED PRIVATE KEY FILE!          @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0644 for '/home/you/.ssh/id_ed25519' are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.
OpenSSH가 확인하는 것
파일, 그리고 통과하는 모드
  • ~/.ssh/700drwx------디렉터리
  • id_ed25519600-rw-------내 개인 키
  • id_ed25519.pub644-rw-r--r--공개 키: 누구나 읽어도 됩니다
  • config600-rw-------다른 사람이 쓸 수 없어야 함
비트별 검사
  • 644rw-r--r--거부됨
  • 640rw-r-----거부됨
  • 600rw-------사용됨
  • 400r--------사용됨

그룹과 그 외 사용자: 모두 꺼져 있어야 합니다

문자 모드: u, g, o, a와 +, -, =

chmod u+x script.sh는 나머지는 건드리지 않고 비트 하나만 추가합니다. +는 추가, -는 제거, =는 클래스를 나열한 것과 정확히 같게 설정합니다.

문법은 [대상][연산자][권한]이며 절은 쉼표로 구분합니다. u는 소유자, g는 그룹, o는 그 외 사용자, a는 셋 모두입니다. 그래서 go-w는 그룹과 그 외 사용자의 쓰기를 빼고, a=rwx는 모두 설정하고, u=rw,go=r는 644를 쓰는 또 다른 방법입니다. 이런 표현을 위의 계산기에 붙여 넣으면 어떤 비트가 바뀌는지 전후로 보여 줍니다.

문법에서 틀리기 쉬운 두 부분을 계산기는 모두 따릅니다. X, 곧 대문자 X는 디렉터리이거나 이미 어딘가에 실행 권한이 있는 파일에만 실행 비트를 더하며, 그래서 chmod -R u=rwX,go=rX가 파일이 섞인 트리에서도 안전합니다. 그리고 +x처럼 대상 클래스가 없는 절은 a+x와 같지 않습니다. umask에 설정된 비트는 건드리지 않으므로, 흔한 umask 022에서 644 파일에 chmod +rwx를 하면 755가 되고 chmod a+rwx는 777이 됩니다.

대상 · 연산자 · 권한chmod u+x script.sh
  • u소유자
  • g그룹
  • o그 외 사용자
  • a셋 모두
  • +추가
  • -제거
  • =정확히 이렇게 설정
  • r읽기
  • w쓰기
  • x실행
  • X디렉터리와 이미 실행할 수 있는 파일에만 실행
  • ssetuid 또는 setgid
  • tsticky
예시
변경이전이후
u+x644rw-r--r--744rwxr--r--소유자에게 실행을 주고 나머지는 건드리지 않습니다.
go-w775rwxrwxr-x755rwxr-xr-x그룹과 그 외 사용자의 쓰기를 뺍니다.
a=r755rwxr-xr-x444r--r--r--셋 모두 읽기로 설정하고 나머지는 없앱니다.
u=rw,go=r777rwxrwxrwx644rw-r--r--절 세 개: 644를 쓰는 또 다른 방법입니다.
+rwx644rw-r--r--755rwxr-xr-x클래스 없음: umask(022)에 있는 비트는 설정되지 않으므로 그룹과 그 외 사용자는 쓰기를 받지 못합니다.
a+rwx644rw-r--r--777rwxrwxrwxa를 쓰면 umask가 적용되지 않아 모두 설정됩니다.
a+X디렉터리에서644rw-r--r--755rwxr-xr-x디렉터리의 대문자 X: 디렉터리이므로 실행이 추가됩니다.
a+X파일에서644rw-r--r--644rw-r--r--아무도 실행할 수 없는 파일의 대문자 X: 아무것도 추가되지 않습니다.

Setuid, setgid, sticky 비트

네 번째 숫자입니다. 파일에서 setuid와 setgid는 프로그램이 실행되는 계정을 바꿉니다. 디렉터리에서는 setgid가 새 파일의 그룹을, sticky 비트가 삭제할 수 있는 사람을 정합니다.

실행 파일의 setuid(4000)는 파일이 나 대신 파일의 소유자 권한으로 실행되게 합니다. passwd는 비밀번호를 바꿀 때 root 권한으로 실행될 수 있도록 setuid로 설치됩니다. Setgid(2000)는 그룹에 대해 같은 일을 합니다. 디렉터리에서는 setgid가 다르면서 훨씬 쓸모 있는 일을 합니다. 안에 만드는 새 파일이 만든 사람이 아니라 디렉터리의 그룹을 물려받으며, 공유 프로젝트 폴더가 계속 공유되는 방식이 이것입니다. Linux에는 디렉터리의 setuid 비트에 문서화된 의미가 없습니다. macOS와 BSD에서는 파일시스템을 그 옵션으로 마운트했다면 새 파일이 디렉터리의 소유자를 물려받게 할 수 있습니다.

디렉터리의 sticky 비트(1000)는 서로의 파일을 지우지 못하게 합니다. 파일의 소유자, 디렉터리의 소유자, root만 항목을 삭제하거나 이름을 바꿀 수 있습니다. /tmp가 모드 1777인 이유가 바로 이것입니다. 누구나 쓸 수 있지만 남의 작업은 아무도 지울 수 없습니다. 일반 파일에서는 macOS와 BSD가 sticky 비트를 무시하고, GNU 매뉴얼은 일부 오래된 시스템에서만 의미를 줍니다. 함정이 하나 있습니다. chmod 755 somedir나 chmod 0755 somedir는 디렉터리에 이미 있는 setgid 비트를 지우지 않습니다. GNU chmod는 다섯 자리보다 짧은 숫자 모드에서는 그 비트를 일부러 유지하기 때문이며, POSIX는 8진수 형식이 일반 파일에서만 그 비트를 지우도록 요구합니다. g-s나 다섯 자리 chmod 00755를 쓰세요. 계산기는 필요할 때마다 다섯 자리 형식을 써 줍니다.

Setuid4755

프로그램이 나 대신 파일의 소유자 권한으로 실행됩니다.

Linux-rwsr-xr-x root root /usr/bin/passwd

passwd는 이렇게 설치되어, 비밀번호를 바꿀 때 root 권한으로 실행됩니다.

디렉터리에서: Linux에는 문서화된 의미가 없습니다. macOS와 BSD에서는 파일시스템을 그 옵션으로 마운트했다면 새 파일이 디렉터리의 소유자를 물려받습니다.

Setgid2775

디렉터리에서 새 파일이 내 그룹이 아니라 디렉터리의 그룹을 물려받습니다.

Linuxdrwxrwsr-x you devs project/

공유 프로젝트 디렉터리가 계속 공유됩니다. 새 파일은 모두 팀 소유가 됩니다.

macOS와 BSD에서는 이 비트가 있든 없든 새 파일이 항상 디렉터리의 그룹을 물려받습니다.

Sticky1777

디렉터리에서 파일의 소유자, 디렉터리의 소유자, root만 파일을 삭제하거나 이름을 바꿀 수 있습니다.

macOSdrwxrwxrwt root wheel /private/tmp

/tmp에는 누구나 쓸 수 있지만 남의 파일은 아무도 지울 수 없습니다.

파일에서는 macOS와 BSD가 sticky 비트를 무시합니다.

GNU의 함정: 디렉터리에 chmod 755를 해도 setgid 비트는 그대로 남습니다.

$chmod 755 project → drwxr-sr-x다섯 자리 또는 문자로 지우세요:$chmod 00755 project → drwxr-xr-x$chmod g-s project → drwxr-xr-x

umask: 새 파일이 받는 모드

새 파일은 666, 새 디렉터리는 777에서 시작하며 umask에 설정된 비트는 모두 꺼집니다. 흔한 umask 022는 644와 755를 줍니다.

umask는 뺄셈이 아니라 마스크입니다. umask에 설정된 비트는 프로그램이 요청한 모드에서 모두 꺼집니다. umask 077이면 새 파일은 600, 새 디렉터리는 700으로 기본적으로 비공개입니다. umask 002이면 664와 775로 그룹도 쓸 수 있습니다.

파일의 기본 모드에는 실행 비트가 없으므로 umask로는 파일을 실행 가능하게 만들 수 없습니다. 777에서 시작하는 것은 디렉터리뿐입니다. 방금 만든 스크립트가 chmod +x를 하기 전에는 실행되지 않는 이유입니다. 위의 umask 탭으로 이동하면 어떤 umask가 무엇을 만드는지 볼 수 있고, 두 결과 모두 바로 계산기에서 열 수 있습니다.

비트별로 꺼집니다umask 022
새 파일
시작값rw-rw-rw-666
umask····w··w·022
결과rw-r--r--644
새 디렉터리
시작값rwxrwxrwx777
umask····w··w·022
결과rwxr-xr-x755
자주 쓰는 umask 값
umask새 파일새 디렉터리
022644 rw-r--r--755 rwxr-xr-x
002664 rw-rw-r--775 rwxrwxr-x
027640 rw-r-----750 rwxr-x---
077600 rw-------700 rwx------

어떤 umask로도 파일을 실행 가능하게 만들 수 없습니다. 새 파일에는 유지할 실행 비트가 처음부터 없습니다.

폴더와 그 안의 모든 것을 바꾸려면

chmod -R 755 folder는 디렉터리와 파일에 같은 모드를 주므로 모든 파일이 실행 가능해집니다. find 명령 두 개를 쓰면 종류마다 알맞은 모드를 줄 수 있습니다.

find folder -type d -exec chmod 755 {} +와 find folder -type f -exec chmod 644 {} +는 트리를 한 번씩 훑으며 디렉터리와 파일에 따로 설정합니다. 계산기는 고정된 쌍이 아니라 선택한 모드로 두 명령을 모두 써 줍니다. 끝의 +는 파일을 가능한 한 적은 수의 chmod 실행으로 묶으며, 큰 트리에서 중요합니다.

또 다른 안전한 방법은 대문자 X입니다. chmod -R u=rwX,go=rX folder는 디렉터리와 이미 실행할 수 있는 파일에만 실행 비트를 더합니다. 그리고 재귀 변경을 한 뒤에는 stat -c '%a %n' folder/*로 한 단계 아래의 모든 모드를 다시 읽어 확인할 수 있습니다.

폴더 하나, 네 가지 방법
폴더지금1234
site/755755644755755
index.html644755644644644
app.php644755644644644
deploy.sh755755644644755
img/755755644755755
logo.png644755644644644
  1. 1$chmod -R 755 site모든 파일이 실행 가능
  2. 2$chmod -R 644 site어떤 폴더에도 들어갈 수 없음
  3. 3$find site -type d -exec chmod 755 {} +$find site -type f -exec chmod 644 {} +종류마다 각자의 모드스크립트도 x를 잃습니다
  4. 4$chmod -R u=rwX,go=rX site종류마다 각자의 모드이미 실행할 수 있던 파일은 x를 유지합니다

Windows에도 chmod가 있나요?

같은 것은 없습니다. Windows는 접근 제어 목록을 쓰며, 가장 가까운 명령은 icacls입니다. 예: icacls file /grant Users:(RX).

NTFS 권한은 항목의 목록이며 각 항목이 사용자나 그룹과 그 권한을 지정하므로, 계산할 세 자리 숫자 하나가 없습니다. 가장 가까운 변환은 클래스별로 읽기는 R, 읽기와 실행은 RX, 쓰기는 W, 실행만은 개별 권한 X이며, 숫자가 둘을 요구하면 함께 나열합니다. 7은 (RX,W)입니다. 어떤 숫자도 삭제까지 허용하는 수정(Modify, M)이나 권한 변경과 소유권 가져오기까지 허용하는 모든 권한(Full control, F)에 해당하지 않습니다. 계산기는 그 대응을 모드 옆에 보여 주며, 이것은 가장 가까운 근사이지 같은 것이 아닙니다.

Windows Subsystem for Linux 안에서 chmod는 Linux 파일시스템에서 제대로 동작합니다. /mnt/c에 마운트된 Windows 드라이브에서는 그 드라이브를 metadata 옵션으로 마운트했을 때만 동작합니다. 그렇지 않으면 모드가 Windows 권한에서 계산되어 소유자, 그룹, 그 외 사용자가 모두 같고, chmod로는 읽기 전용 속성을 설정하는 정도밖에 할 수 없습니다. 그래서 Windows 쪽에 둔 키가 너무 열려 있다고 읽힐 수 있으며 chmod 600으로는 거기서 해결되지 않습니다.

chmod 숫자별로 가장 가까운 icacls 권한icacls
숫자문자가장 가까운 권한
7rwx(RX,W)읽기, 쓰기, 실행
6rw-(R,W)읽기 및 쓰기
5r-x(RX)읽기 및 실행
4r--(R)읽기
3-wx(W,X)쓰기 및 실행
2-w-(W)쓰기
1--x(X)실행
0---—권한 없음

가장 가까운 근사이지 같은 것이 아닙니다. Windows는 항목의 목록을 유지하며, 각 항목이 누가 어떤 권한을 얻는지 지정합니다. 어떤 숫자도 삭제까지 허용하는 수정(Modify, M)이나 권한 변경(WDAC)과 소유권 가져오기(WO)까지 허용하는 모든 권한(Full control, F)에 해당하지 않습니다. 두 시스템 모두 소유자는 언제나 파일의 권한을 바꿀 수 있습니다.

WSL에서
  • /homeLinux 파일시스템에서: chmod가 일반 Linux처럼 동작합니다.
  • /mnt/cmetadata 옵션 없는 /mnt/c에서: 모드가 Windows 권한에서 정해지며 chmod는 거의 아무것도 바꾸지 못합니다.
  • /mnt/c · metadatametadata가 있으면: chmod가 동작하지만, Windows가 허용하는 범위를 넘지는 않습니다.

파일 권한을 확인하는 방법

ls -l은 문자로, stat은 숫자로 보여 줍니다. 둘 중 무엇이든 계산기에 붙여 넣으면 모드를 읽어 줍니다.

ls -l file은 -rw-r--r-- 1 you staff 4096 25 Oct 09:26 file을 출력하며, 계산기는 한 줄 전체를 받으므로 모드만 골라낼 필요가 없습니다. stat -c '%a %n' file은 Linux에서 644 file을 출력하고, macOS에서는 같은 일을 stat -f '%Lp %N' file로 합니다. 디렉터리 전체를 한 번에 보려면 GNU find . -maxdepth 1 -printf '%m %p\n'이 모든 모드를 숫자로 나열합니다(macOS의 find에는 -printf가 없습니다).

권한 문자열 끝의 +는 아홉 비트 외에 더 있다는 뜻입니다. Linux에서는 getfacl로 보이는 POSIX ACL이며, 그 추가 항목은 모드에 전혀 들어 있지 않습니다. macOS에서는 @가 확장 속성, +가 확장 보안 정보를 뜻합니다. GNU ls의 점(.)은 SELinux 같은 보안 컨텍스트를 뜻합니다. 계산기는 세 표시를 모두 받아들이고, 모드가 전부가 아니라는 점을 알려 줍니다.

ls -l 한 줄, 필드별로ls -l notes.txt
-종류rw-r--r--권한+표시1링크you소유자staff그룹4096크기25 Oct 09:26수정일notes.txt이름
숫자로 본 모드
  • Linux$stat -c '%a %n' notes.txt644 notes.txt
  • macOS$stat -f '%Lp %N' notes.txt644 notes.txt
모드 뒤의 문자
  • -rw-r--r--+Linux: POSIX ACL(getfacl로 확인). macOS: ACL 같은 확장 보안 정보.
  • -rw-r--r--@macOS: 확장 속성.
  • -rw-r--r--.GNU ls: SELinux 같은 보안 컨텍스트이며 그 외에는 없습니다.
  • -rw-r--r-- 더 없음: 아홉 비트가 전부입니다.

chmod 계산기: 질문과 답변

chmod 755는 무슨 뜻인가요?

소유자에게 읽기, 쓰기, 실행을, 그 외 사용자에게 읽기와 실행을 줍니다. 풀어 쓰면 rwxr-xr-x입니다. 숫자는 합으로, 7은 4 + 2 + 1, 5는 4 + 1입니다. 들어가려면 실행 비트가 필요한 디렉터리와 스크립트, 프로그램에 쓰세요. 비공개여야 하는 파일에는 절대 쓰지 마세요.

chmod 644와 755의 차이는 무엇인가요?

클래스마다 비트 하나, 곧 실행 비트입니다. 644는 rw-r--r--로 문서, 이미지, 설정 파일, 소스 파일에 알맞습니다. 755는 rwxr-xr-x로 디렉터리와 실행해야 하는 것에 알맞습니다. 파일에 755를 주면 모두 실행 가능해지므로 웹사이트 전체에 재귀 chmod -R 755를 쓰는 것은 실수입니다. 디렉터리와 파일은 따로 설정하세요.

chmod 777은 무엇을 하며 안전한가요?

그 컴퓨터의 모든 계정이 파일을 읽고, 바꾸고, 실행할 수 있게 합니다. 거의 필요하지 않고, 공유 서버나 인터넷에 열린 서버에서는 실제 위험입니다. 서버가 실행하는 스크립트를 쓸 수 있는 무엇이든 서버를 장악할 수 있습니다. WordPress 공식 문서는 755 또는 750과 644 또는 640을 요구하며 어떤 디렉터리도 777이어서는 안 된다고 합니다. 애플리케이션이 어딘가에 쓸 수 없다면 모드가 아니라 소유자나 그룹을 바꾸세요.

chmod +x는 무엇을 하나요?

파일을 실행할 수 있도록 실행 비트를 추가합니다. 클래스 없는 +x는 a+x와 완전히 같지 않습니다. 클래스가 없는 절은 umask에 설정된 비트를 건드리지 않으므로, 흔한 umask 022에서는 소유자, 그룹, 그 외 사용자 모두에게 실행 권한이 생기지만 077 같은 더 엄격한 umask에서는 소유자에게만 생깁니다. 확실히 하려면 chmod a+x 또는 chmod u+x로 쓰세요.

chmod 600은 무슨 뜻이며 SSH는 왜 이것을 요구하나요?

600은 rw-------로, 소유자만 파일을 읽거나 바꿀 수 있습니다. OpenSSH는 다른 계정이 읽을 수 있는 개인 키를 Permissions 0644 for '<path>' are too open. 메시지와 함께 거부합니다. 검사는 엄격해서, 파일의 소유자인데 그룹 또는 그 외 비트가 하나라도 설정되어 있으면 키를 거부하므로 640도 실패합니다. 키에는 chmod 600, ~/.ssh에는 chmod 700을 쓰세요.

chmod의 네 번째 숫자는 무슨 뜻인가요?

세 가지 특수 비트, 곧 setuid 4, setgid 2, sticky 비트 1을 담습니다. chmod 2775 folder는 setgid를 설정해 안에 만드는 새 파일이 폴더의 그룹을 물려받게 합니다. chmod 1777 folder는 sticky 비트를 설정해 서로의 파일을 지우지 못하게 하며, /tmp가 쓰는 방식입니다. 하나도 설정하지 않았다면 이 숫자는 생략합니다.

chmod 755를 했는데 폴더의 setgid 비트가 왜 지워지지 않았나요?

GNU chmod는 숫자 모드가 다섯 자리보다 짧으면(0755 포함) 디렉터리의 setuid와 setgid를 유지하기 때문입니다. 이는 의도된 것이며 표준에 맞습니다. POSIX는 8진수 형식이 일반 파일에서만 그 비트를 지우도록 요구합니다. 문자 형식 chmod g-s folder를 쓰거나 앞의 0을 채워 chmod 00755 folder로 쓰세요. 이 계산기는 변경에 필요할 때 다섯 자리 형식을 자동으로 써 줍니다.

chmod와 chown의 차이는 무엇인가요?

chmod는 소유자, 그룹, 그 외 사용자가 무엇을 할 수 있는지 정합니다. chown은 소유자와 그룹이 실제로 누구인지 정합니다. 같은 질문의 서로 다른 절반에 답하며, 웹 서버의 “permission denied”는 모드가 아니라 소유권 문제인 경우가 많습니다. 파일이 엉뚱한 사용자 소유이면 777 말고는 어떤 모드로도 가려지지 않습니다.

ls -l 한 줄을 이 계산기에 붙여 넣을 수 있나요?

네, 모드만이 아니라 한 줄 전체를 붙여 넣을 수 있습니다. -rw-r--r-- 1 you staff 4096 25 Oct 09:26 notes.txt는 파일의 모드 644로, drwxrwsr-x는 디렉터리의 2775로 읽습니다. ACL 표시 +, 보안 컨텍스트 점, macOS의 @도 모두 이해합니다. u+x나 go-w 같은 연산자 표현을 붙여 넣고 어떤 비트가 바뀌는지 볼 수도 있습니다.

권한 뒤의 + 또는 @는 무슨 뜻인가요?

아홉 비트가 전부가 아니라는 뜻입니다. Linux에서 +는 소유자, 그룹, 그 외 사용자 외의 항목이 있는 POSIX ACL이 파일에 있다는 뜻이며, getfacl로 볼 수 있고 모드의 일부가 아닙니다. GNU ls의 점은 SELinux 같은 보안 컨텍스트를 뜻합니다. macOS에서 @는 확장 속성, +는 확장 보안 정보입니다. 모드는 멀쩡한데 권한이 이상하게 동작한다면 여기를 살펴보세요.

Windows에도 chmod와 같은 것이 있나요?

Windows는 모드가 아니라 접근 제어 목록을 쓰므로 정확히 같은 것은 없습니다. icacls file /grant Users:(RX)가 가장 가까운 명령이며, 계산기는 선택한 모드에 가장 가까운 권한을 보여 줍니다. WSL 안에서 chmod는 Linux 파일시스템에서는 정상 동작하지만, /mnt/c 아래의 Windows 드라이브에서는 그 드라이브를 metadata 옵션으로 마운트하지 않았다면 거의 효과가 없습니다.

umask 022는 무엇을 주나요?

새 파일은 644, 새 디렉터리는 755입니다. 새 파일은 666, 디렉터리는 777에서 시작하며 umask에 설정된 비트는 모두 꺼집니다. 파일에는 처음부터 실행 비트가 없으므로 어떤 umask로도 파일을 실행 가능하게 만들 수 없고, 그것은 늘 나중의 chmod +x입니다. 위의 umask 탭에서 아무 값이나 시험해 보고 두 결과 중 어느 쪽이든 계산기에서 열 수 있습니다.

부족한 점이 있습니까?기능 또는 새 도구 제안하기