Computer >> 컴퓨터 >  >> 프로그래밍 >> Bash 프로그래밍

chmod 777이란 무엇이고, 리눅스에서 어떤 역할을 할까?

이 글에서는 사용자(user), 그룹(group), 기타 사용자(others)에게 모든 권한을 부여하는 리눅스 명령어 chmod 777에 대해 자세히 알아봅니다.

리눅스를 막 배우기 시작한 초보 사용자, 웹 개발자, 시스템 관리자라면 아래 명령어를 입력하라고 안내받은 적이 있을 겁니다.

chmod 777 /path/to/file/or/folder

시스템에서 명령어를 실행할 때(특히 root 권한으로 작업할 때는 더욱!) 해당 명령어가 정확히 무슨 일을 하는지 반드시 이해하고 실행해야 합니다. 그렇다면 chmod 777은 대체 어떤 의미일까요?

리눅스의 권한(Permissions) 체계

chmod 777이란 무엇이고, 리눅스에서 어떤 역할을 할까?

ls – l 명령어 실행 예시

위 스크린샷은 다음 명령어를 실행한 결과입니다.

ls -l

ls -l 명령어는 현재 디렉터리의 내용을 긴 목록(long listing) 형식으로 출력하며, 각 파일과 디렉터리의 권한 정보와 수정 날짜를 함께 보여줍니다.

  • 첫 번째 열: 파일 또는 디렉터리에 할당된 권한 정보
  • 두 번째 열: 포함된 파일 또는 폴더의 개수
  • 세 번째·네 번째 열: 해당 파일에 대한 권한을 가진 사용자(user)그룹(group)
  • 다섯 번째·여섯 번째 열: 파일 크기와 마지막 수정 날짜
  • 마지막 열: 파일 이름

이 글에서 특히 중요한 것은 첫 번째, 세 번째, 네 번째 열입니다. 바로 이 세 열이 권한과 직결되는 정보를 담고 있습니다.

스크린샷에 보이는 폴더들은 linuxscrew 사용자의 홈 디렉터리에 있는 항목들로, 모두 다음과 같은 권한을 가지고 있습니다.

drwxr-xr-x

그리고 소유자(owner)와 그룹(group) 모두 linuxscrew 사용자로 지정되어 있습니다.

drwxr-xr-x 문자열 해석하기

drwxr-xr-x는 4개의 정보 조각으로 구성되어 있으며, 그중 3개가 권한과 관련되어 있습니다.

d rwx r-x r-x
디렉터리임을 나타냄 소유자는 읽기, 쓰기, 실행 가능 그룹은 읽기, 실행 가능 기타 사용자는 읽기, 실행 가능
  • 첫 번째 문자: 파일 유형을 나타냅니다. d이면 디렉터리, -이면 일반 파일입니다.
  • 2~4번째 문자: 사용자(user)의 권한
  • 5~7번째 문자: 그룹(group)의 권한
  • 8~10번째 문자: 기타 사용자(others)의 권한

각 블록 안의 문자가 의미하는 바는 다음과 같습니다.

  • '-' : 권한 없음 (거부됨)
  • 'r' : 읽기(read) 권한
  • 'w' : 쓰기(write) 권한
  • 'x' : 실행(execute) 권한

실행(execute) 자리의 특수 값

실행 권한 자리에는 몇 가지 특수 문자가 들어갈 수도 있습니다.

  • 's'setuid 비트로, 사용자(user) 또는 그룹(group) 권한 자리에 나타납니다. 파일을 실행할 수 있는 사용자는 파일 소유자 및/또는 파일 그룹의 권한으로 실행하게 됩니다. x가 설정된 상태이므로 파일은 실행 가능합니다.
  • 'S' — 's'와 동일하지만 파일 자체는 실행 불가능합니다.
  • 't' — 스티키(sticky) 비트로, 기타 사용자(others) 권한 자리에 나타납니다. 파일이 스티키 상태가 되어 오직 소유자만 파일 또는 그 안의 파일들을 이름 변경하거나 삭제할 수 있습니다. 그룹과 기타 사용자는 불가능합니다! 이 역시 x가 설정된 상태이므로 파일은 실행 가능합니다.
  • 'T' — 't'와 동일하지만 파일 자체는 실행 불가능합니다.

참고: 첫 번째 자리에 올 수 있는 파일 유형

완전한 이해를 위해 첫 번째 문자 자리에 올 수 있는 다양한 파일 유형도 정리해 보겠습니다.

  • '-' : 일반 파일
  • 'b' : 블록 특수 파일(block special file)
  • 'c' : 문자 특수 파일(character special file)
  • 'C' : 고성능("연속 데이터") 파일
  • 'd' : 디렉터리
  • 'D' : 도어(door, Solaris 2.5 이상)
  • 'l' : 심볼릭 링크(symbolic link)
  • 'M' : 오프라인("migrated") 파일 (Cray DMF)
  • 'n' : 네트워크 특수 파일 (HP-UX)
  • 'p' : FIFO (명명된 파이프)
  • 'P' : 포트(port, Solaris 10 이상)
  • 's' : 소켓(socket)
  • '?' : 그 외의 파일 유형

777이라는 숫자의 의미

권한을 지정할 때 입력을 더 빠르게 하기 위해, 위에서 살펴본 문자 조합을 숫자로 대신 표현할 수 있습니다.

  • 7 — 모든 권한 (읽기 + 쓰기 + 실행)
  • 6 — 읽기 + 쓰기
  • 5 — 읽기 + 실행
  • 4 — 읽기 전용
  • 3 — 실행 + 쓰기
  • 2 — 쓰기 전용
  • 1 — 실행 전용
  • 0 — 권한 없음

따라서 사용자(user), 그룹(group), 기타 사용자(others) 모두에게 모든 권한을 부여하려면 권한 값을 777로 지정하면 됩니다.

chmod 명령어 사용법

chmod(Change Mode, 모드 변경) 명령어는 파일에 권한을 적용할 때 사용합니다.

chmod 777

다음 명령어를 실행하면,

chmod 777 /path/to/file/or/folder

…해당 파일 또는 폴더의 소유자(user), 그룹(group), 기타 사용자(시스템의 모든 사용자)에게 읽기, 쓰기, 실행 권한을 모두 부여하게 됩니다.

chmod -R 777 /path/to/file/or/folder

위처럼 -R 옵션을 붙이면 재귀적으로(recursively) 적용되어, 디렉터리 안에 포함된 모든 파일과 하위 폴더까지 모든 사용자에게 전체 권한을 부여합니다.

주의: chmod 777은 편리하지만 보안상 매우 위험할 수 있습니다. 누구나 파일을 수정하거나 삭제할 수 있게 되므로, 공개 서버나 중요한 설정 파일에는 절대 사용하지 않는 것이 좋습니다. 꼭 필요한 경우에만 임시로 사용하고, 작업 후에는 권한을 다시 좁혀 주세요.

이제 chmod 777이 무엇인지 완벽하게 이해하셨을 겁니다!