리눅스 chmod(Read, Write, Execute 권한)

parkjh9370·2022년 2월 28일
0

🙏🏻 참조


💡 1. 리눅스 파일 사용 권한 (chmod - change + mode)

리눅스에서, 파일(File)을 사용해 할 수 있는 작업은 크게 세 가지로 나눌 수 있다.

  • 파일에 저장된 데이터를 읽기. (r = read).
  • 파일에 데이터를 쓰기. (w = write).
  • 파일 실행. (x = execute)

🔎 리눅스에서는 각 파일 및 디렉토리에 대해 "읽기(r)", "쓰기(w)", "실행(x)" 권한(permission)을 파일 개별적으로 지정할 수 있도록 만들어 놓았습니다.
그리고 이 세 가지 권한을 "파일을 소유한 사용자(user)", "특정 그룹(group)에 소속된 사용자", "그 외 사용자(others)"에 대해 각각 지정할 수 있게 만들었습니다.

📣 chmod 명령은 바로 이러한 파일의 권한을 변경할 수 있게 만들어주는 명령입니다. "change"와 "mode"의 앞 글자들을 조합한 이름이죠. (chmod = ch + mod)

📣 여기서 "모드(mode)"란, 앞서 소개한 세 가지 권한(읽기, 쓰기, 실행)과 각각의 권한을 지정할 대상(파일 소유자, 그룹, 그외 사용자)을 포함한 파일의 속성을 말합니다.
즉, chmod 명령에서 지정하는 읽기(r), 쓰기(w), 실행(x) 권한 및 소유자(user), 그룹(group), 그 외 사용자(others)에 대한 설정 값을 통틀어 "모드(mode)"라고 지칭합니다.
그러므로 chmod 명령을 사용하여 파일의 모드(mode)를 변경한다는 것은 파일의 권한을 변경한다는 것과 동일한 의미를 가집니다.


💡 2. chmod 명령

  • chmod 명령은 파일의 모드(mode)를 변경하는 명령입니다.
  • chmod 다음에 "선택 옵션"과 "모드를 나타내는 문자열", 그리고 "대상 파일(또는 디렉토리)"을 순서대로 입력하여 파일의 모드를 변경할 수 있습니다.

📌 chmod [OPTION][MODE] [FILE]

  >OPTION
    -v        : 모든 파일에 대해 모드가 적용되는 진단(diagnostic) 메시지 출력.
    -f        : 에러 메시지 출력하지 않음.
    -c        : 기존 파일 모드가 변경되는 경우만 진단(diagnostic) 메시지 출력.
    -R        : 지정한 모드를 파일과 디렉토리에 대해 재귀적으로(recursively) 적용.
  >MODE
    파일에 적용할 모드(mode) 문자열 조합.
      u,g,o,a : 소유자(u), 그룹(g), 그 외 사용자(o), 모든 사용자(a) 지정.
      +,-,=   : 현재 모드에 권한 추가(+), 현재 모드에서 권한 제거(-), 현재 모드로 권한 지정(=)
      r,w,x   : 읽기 권한(r), 쓰기 권한(w), 실행 권한(x)
      X       : "디렉토리" 또는 "실행 권한(x)이 있는 파일"에 실행 권한(x) 적용.
      s       : 실행 시 사용자 또는 그룹 ID 지정(s). "setuid", "setgid".
      t       : 공유모드에서의 제한된 삭제 플래그를 나타내는 sticky(t) bit.
      0~7     : 8진수(octet) 형식 모드 설정 값.

💡 2.1 chmod 명령의 MODE 파라미터

  • 파일을 소유한 사용자에 대해 읽고 쓸 수있는 권한 지정.
  • 파일이 속한 그룹이 실행할 수 있는 권한 추가.
  • 시스템의 모든 사용자가 읽을 수만 있는 권한 지정.
  • 파일을 소유한 그룹과 그 외 사용자의 모든 권한 제거.

  • chmod 명령으로 바꾸면, MODE 파라미터는 아래 그림과 같이 조합될 수 있습니다.

  • 파일이 속한 그룹이 실행할 수 있는 권한 추가.
chmod  g+x  FILE
  • 시스템의 모든 사용자가 읽을 수만 있는 권한 지정.
$ chmod  a=r  FILE
  • 파일을 소유한 그룹과 그 외 사용자의 모든 권한 제거.
$ chmod  go-rwx  FILE

🔎 권한 "지정(=)"은 전달된 권한으로 온전히 설정되지만, "추가(+)"와 "제거(-)"는 파일이 기존에 가지고 있던 권한을 기준으로, 새로운 권한이 추가되거나 지정된 권한이 제거됩니다.
파일이 기존 가지고 있는 권한은 간단하게 "ls -l" 명령을 통해 확인 할 수 있다.

💡 2.2 파일 또는 디렉토리 권한 확인.

  • 리눅스에서 파일 또는 디렉토리에 지정된 권한을 확인은 ls -l 명령을 사용하면 됩니다.

해석

-rw-r--r-- 1 ppotta manager 17 Mar 24 03:17 FILE
  • 파일 소유 사용자(ppotta)의 권한 : "rw-" = 읽기(r), 쓰기(w) 가능.
  • 파일 소유 그룹(manager)의 권한 : "r--" = 읽기(r) 가능.
  • 그 외 사용자(others)의 권한 : "r--" = 읽기(r) 가능.
  • 링크 수: 1
    (하드 링크의 수 - 이 문서에 연결된 하드 링크의 수를 나타낸다. 윈도우의 바로가기와 유사한 개념이다.)
  • 파일 소유 사용자 : ppotta
  • 파일 소유 그룹 : manager
  • 파일 크기 : 17
    (크기 Byte)
  • 최종 수정 시각 : Mar 24 03:17
  • 파일 이름: FILE

💡 2.3 디렉토리에 대한 권한.

  • 디렉토리에 있는 파일 및 디렉토리 리스트 읽기. (r = read)
  • 디렉토리에 파일 추가, 이름 변경, 삭제. (w = write)
  • 디렉토리에 접근. cd 명령으로 working directory 이동. (x = execute)

🔎 먼저, 읽기(r) 권한은 디렉토리에 있는 파일 리스트를 확인할 수 있는 권한을 의미합니다.
즉, "ls" 명령을 통해 디렉토리의 리스트를 확인할 때 "읽기(r)" 권한이 있어야 합니다.
만약 디렉토리에 읽기(r) 권한이 없다면, "ls" 명령을 수행할 때 "permission denied" 에러가 발생합니다.

🔎 읽기(r) 권한만 있는 경우 "파일 이름"만 확인 가능하고, 파일의 모든 정보를 확인("ls -l")하기 위해서는 실행(x) 권한이 있어야 합니다.

$ ls -l
total 4
d--------- 2 ppotta ppotta 4096 Mar 26 00:50 DIR
$ ls DIR
ls: cannot open directory 'DIR': Permission denied

✔️ 디렉토리의 내용을 읽기 위해서는 읽기(r) 권한 필요.
✔️ 디렉토리의 내용을 변경하기 위해서는 쓰기(w) 권한 필요.
✔️ 디렉토리의 접근을 위해 실행(x) 권한 필요하며 가장 기본적인 접근 권한.

💡 2.4 8진수(octal) 형식으로 파일 모드(mode) 지정 방법.

  • MODE 파라미터에 파일 모드(mode)를 표현하는 8진수 값을 사용해 간단하게 파일 모드(mode)를 지정하는 방법이 있다.

  • "8진수" 값을 사용하는 방법은 각 권한(rwx)을 8진수 형태의 숫자 값으로 변환하여 한번에 지정하는 방법
  • 즉, 그림의 "rwxrwxrwx" 중 "rwx"를 하나의 8진수 값으로 변환한 다음,
    이 값을 연속 세 개(사용자, 그룹, 그 외 사용자)로 나열하여 전달하는 것입니다.
  • 이 때, 권한 없음(-)은 0, 읽기(r)는 4, 쓰기(w)는 2, 그리고 실행(x)은 1에 해당하는 값을 가지며, 이 값들을 모든 더한 값이 하나의 8진수 값으로 변환됩니다.

명령어설명(=)
chmod 664 FILE# 모든 사용자의 모든 권한 제거.---------
chmod 664 FILE# 사용자(읽기+쓰기), 그룹(읽기+쓰기), 그외 사용자(읽기)rw-rw-r--
chmod 755 FILE# 사용자(읽기+쓰기+실행), 그룹(읽기+실행), 그외 사용자(읽기+실행)rwxr-xr-x
chmod 777 FILE모든 사용자에 모든 권한 추가.rwxrwxrwx

📌 사용예제

모든 사용자가 읽고 쓰고 실행할 수 없도록 지정.

chmod  000  FILE

---------- 1 ppotta manager 23 Mar 26 04:13 FILE

모든 사용자가 읽고 쓰고 실행할 수 있는 권한 지정.

chmod  777  FILE

-rwxrwxrwx 1 ppotta manager 23 Mar 26 04:13 FILE

소유자는 모든 권한, 그룹 및 그 외 사용자는 읽기와 실행만 가능.

chmod  755  FILE

-rwxr-xr-x 1 ppotta manager 23 Mar 26 04:13 FILE

소유자 및 그룹은 읽기 가능, 그외 사용자는 권한 없음.

chmod  440  FILE

-r--r----- 1 ppotta manager 23 Mar 26 04:13 FILE

📣 8진수 형식을 이용할 때는 MODE 파라미터로 전달되는 값이 파일의 권한에 그대로 적용되기 때문에 u, g, o, a 또는 =, +, - 등과 같이 사용할 수 없습니다.

0개의 댓글