리눅스 명령어 chmod

김규연·2023년 7월 24일
0

linux

목록 보기
10/11

⚙️ 리눅스 명령 구조

형식 -> 명령 [옵션][인자]

  • 명령 : 사용자가 컴퓨터 운영체제나 응용프로그램에게 어떤 서비스를 수행하도록 요구하는 것
  • 옵션 : 옵션을 사용하여 명령의 세부 기능을 선택할 수 있다. 리눅스의 기능을 풍부하게 하는 중요한 특징. "-"기호로 시작하며 영문 소문자나 대문자로 구성. 명령에 따라 어떤 옵션이 있고 그 기능이 무엇인지는 해당 명령의 사용법을 참조
  • 인자 : 명령으로 전달되는 값으로 주로 파일명이나 디렉터리명

🧐 권한 설정 명령어 chmod

  • chmod [옵션][문자 or 숫자조합] [파일 or 디렉토리]

    리눅스 파일 시스템에서 파일을 생성시 파일을 생성한 사용자가 파일에 대한 제어를 할 수 있다. 그러나 서비스를 운영하다보면 다른 사용자에게 접근, 읽기, 쓰기 같은 권한을 주어야할 경우가 있다. 다른 사용자에게 접근 권한을 부여할 때 사용되는 명령어가 바로 chmod이다. chmod 명령어는 change와 mode의 앞글자를 조합한 명령어로 파일의 권한을 변경하는 명령어이다. 소유자, 그룹, 익명사용자에게 각각 별도로 지정이 가능하며, 권한을 지정 시 숫자, 알파벳, 기호, 특수문자를 통해 설정할 수 있다. 기본적으로 파일 및 디렉토리의 모드 비트를 변경하므로 모드의 종류와 사용법을 익혀야 한다.

📌 리눅스 chmod 명령어 규칙 및 옵션

  • 지정한 각 파일의 파일 모드 비트를 변경한다.
  • chmod 명령어는 심볼릭 링크의 직접적인 권한을 변경하지 않지만 심볼릭 링크가 가리킨 파일 및 디렉토리는 권한이 변경된다.
  • 모드는 뭔자조함과 숫자조합(8진수)로 총 2가지 형태로 변경할 수 있다.

📌 chmod 명령어 옵션

옵션long옵션설명
-c--changes기존에 지정된 모드에서 변경되는 경우에만 메시지를 출력
-f--silent, --quiet오류메시지를 출력하지 않음
-v--verbose지정한 모드로 처리된 모든 파일 및 디렉토리에 대한 메시지를 출력
-R--recursive지정한 파일의 모드를 하위까지 변경

📌 문자 권한 영역 설명

1번 : 파일 종류

문자설명
-Regurlar File, 일반파일을 의미
dDirectory File의 약자로 디렉토리 파일을 의미
bBlock Device File의 약자로 블록 디바이스 파일을 의미
cCharacter Device File의 약자로 문자 디바이스 파일을 의미
lSymbolic Link File의 약자로 심볼릭 링크 파일을 의미

2번 : 파일소유자(user) 영역. 위 그림의 디렉토리와 파일의 소유자는 kim
3번 : 파일소유자그룹(group) 영역. 위 그림의 디렉토리와 파일의 그룹은 scool
4번 : 그 외 사용자(others) 영역

📌 모드종류 1 - 문자조합

타입모드설명
사용자u소유자(user)의 약자로 각 파일 및 디렉토리의 소유자 권한을 변경할 때 지정
g그룹(group)의 약자로 각 파일 및 디렉토리의 그룹 권한을 변경할 때 지정
o그 외 사용자(others)의 약자로 각 파일 및 디렉토리의 그 외 사용자 권한을 변경할 때 지정
aall users의 약자로 각 파일 및 디렉토리의 그 외 사용자 권한을 변경할 때 지정
기호+현재모드에 지정한 권한을 추가하겠다는 의미
-현재모드에 지정한 권한을 제거하겠다는 의미
=현재모드에 지정한 권한을 지정하겠다는 의미
권한r읽기(read)의 약자로 파일의 읽기 권한을 부여
w쓰기(write)의 약자로 파일의 쓰기 권한을 부여
x실행(execute)의 약자로 파일의 실행 권한을 부여
X디렉토리 또는 파일에 실행 권한이 있는 경우 지정한 사용자의 실행 권한을 부여
s특수 권한으로 소유자에 userid, 그룹에 setgid를 실행 관련 권한을 부여. 설정 부여 시 기존 실행권한 자리에 실행권한이 있으면 소문자(s) 없다면 대문자(S)로 부여
t특수권한으로 그 외 사용자에 sticky bit를 실행 관련 권한을 부여. 설정 부여 시 기존 실행권한 자리에 실행권한이 있으면 소문자(t) 없다면 대문자(T)로 부여

언뜻 보기에, MODE 파라미터에 적용되는 문자열이 꽤 복잡해 보일 수 있지만, 사실, 알고보면 매우 직관적이다. MODE 파라미터로 조합되는 문자 조합을 생각하기 전에, 파일에 지정하고자 하는 권한을 먼저 서술형 문장으로 표현해보면 chmod 명령 작성을 좀 더 쉽게 할 수 있다.

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

📌 모드종류2 - 숫자조합(8진수)

문자조합보다 도금 더 간단하게 파일모드(mode)를 지정하는 방법이다. 이 방법은 8진수를 이용하는데, 8진수 갓ㅂ을 사용하는 방법은 각 권한을 8진수 형태의 숫자값으로 변환하여 한번에 지정하는 방법이다. 즉, rwxrwxrwx 중 rwx를 하나의 8진수 값으로 변환한 다음, 이 값을 연속 3개(사용자, 그룹, 그 외 사용자)로 나열하여 전달하는 것이다. 이 때, 권한없음(-)은 0, 읽기(r)는 4, 쓰기(w)는 2, 그리고 실행(x)은 1에 해당하는 값을 가지며, 이 값들을 모두 더한 값이 하나의 8진수 값으로 변환된다.

  • 모든 사용자가 읽고 쓰고 실행할 수 없도록 지정
chmod 000 FILE
---------- 1 root root   23 Mar 26 04:13 FILE
  • 소유자는 모든 권한, 그룹 및 그외 사용자는 읽기와 실행만 가능
chmod 755 FILE
-rwxr-xr-x 1 root root   23 Mar 26 04:13 FILE
  • 소유자 및 그룹은 읽기 가능, 그외 사용자는 권한없음
chmod 440 FILE
-r--r----- 1 root root   23 Mar 26 04:13 FILE

📚 실습 및 활용

✏️ ls -l

리눅스에서 파일 또는 디렉토리에 지정된 권한을 확인하기 위해 사용되는 명령어이다.

[root@localhost home]# ls -l
합계 4
-rw-r--r--.  1 root root 270  7월 16 01:16 text.txt
drwxr-xr-x. 18 root root 256  7월 14 18:02 varcopy

공백 기준으로 가장 첫번째 항목(-rw-r--r--)이 파일 소유자 별 권한, 세번째(root)와 네번째(root) 항목이 각각 파일 소유자와 그룹을 나타낸다.

📝 chmod -c [문자 or 숫자 조합][파일 or 디렉토리]

기존에 지정된 모드에서 변경되는 경우에만 메시지를 출력한다.

[root@localhost home]# ls -l
합계 4
-rw-r--r--.  1 root root 270  7월 16 01:16 text.txt
drwxr-xr-x. 18 root root 256  7월 14 18:02 varcopy
[root@localhost home]# chmod -c 644 text.txt
[root@localhost home]# chmod -c 755 text.txt
mode of `text.txt' changed from 0644 (rw-r--r--) to 0755 (rwxr-xr-x)

위를 보면 -c 옵션을 사용하여 기존 권한과 동일하게 명령어를 작성하면 아무런 메시지가 출력되지 않지만 기존 권한에서 변경된 명령어를 작성하면 변경되었다는 메시지가 출력되는 것을 볼 수 있다. 메시지를 확인해보면 친절하게 이전모드와 변경된 모드를 보여주고 있다.

📝 chmod -v [문자 or 숫자 조합][파일 or 디렉토리]

지정한 모드로 처리된 모든 파일 및 디렉토리에 대한 메시지를 출력한다.

[root@localhost home]# ls -l
합계 12
-rw-r--r--.  1 root root  34  7월 21 07:23 fruit.txt
-rw-r--r--.  1 root root  12  7월 21 07:21 hello.txt
-rwxrwxrwx.  1 root root 270  7월 16 01:16 text.txt
drwxr-xr-x. 18 root root 256  7월 14 18:02 varcopy
[root@localhost home]# chmod -v u+rw fruit.txt
`fruit.txt'의 모드를 0644(rw-r--r--)으로 유지하였습니다
[root@localhost home]# chmod -v 644 fruit.txt
`fruit.txt'의 모드를 0644(rw-r--r--)으로 유지하였습니다
[root@localhost home]# chmod -v 755 fruit.txt
mode of `fruit.txt' changed from 0644 (rw-r--r--) to 0755 (rwxr-xr-x)

-v 옵션을 사용항여 기존 권한과 동일하게 작성하면 모드를 유지하였다는 메시지가 출력되고, 기존 권한 설정과 다르게 작성하면 이전 모드와 새로 바뀐 모드가 출력되면서 모드가 바뀌었다는 메시지가 출력되는 것을 확인해 볼 수 있다.

📝 chmod -R [문자 or 숫자 조합][파일 or 디렉토리]

지정한 파일의 모드를 하위까지 변경한다.

[root@localhost home]# ls -l
합계 12
-rwxr-xr-x.  1 root root  34  7월 21 07:23 fruit.txt
-rw-r--r--.  1 root root  12  7월 21 07:21 hello.txt
-rwxrwxrwx.  1 root root 270  7월 16 01:16 text.txt
drwxr-xr-x. 18 root root 256  7월 14 18:02 varcopy
[root@localhost home]# chmod -R 777 /home
[root@localhost home]# ls -l
합계 12
-rwxrwxrwx.  1 root root  34  7월 21 07:23 fruit.txt
-rwxrwxrwx.  1 root root  12  7월 21 07:21 hello.txt
-rwxrwxrwx.  1 root root 270  7월 16 01:16 text.txt
drwxrwxrwx. 18 root root 256  7월 14 18:02 varcopy

참고한 사이트
참고한 사이트

profile
오늘도 뚠뚠 개미 개발자

1개의 댓글

comment-user-thumbnail
2023년 7월 24일

좋은 글 감사합니다.

답글 달기