리눅스 명령어 chmod 사용 방법 및 2가지 옵션

리눅스는 강력한 운영체제로, 파일과 디렉터리의 권한 관리를 통해 시스템 보안을 유지할 수 있습니다. 리눅스 명령어 chmod는 매우 중요한 명령어 중 하나입니다. chmod 명령어는 파일이나 디렉터리의 권한을 변경할 때 사용됩니다. 이번 포스팅에서는 chmod 명령어의 기본 사용법부터 다양한 옵션과 활용 방법까지 자세히 알아보겠습니다.

리눅스 명령어 chmod란 무엇인가?

chmod는 ‘change mode’의 약자로, 파일이나 디렉터리의 권한을 변경하는 명령어입니다. 리눅스 파일 시스템에서 권한은 파일 소유자, 그룹, 기타 사용자로 구분됩니다. 각 사용자 그룹은 파일을 읽고(read), 쓰고(write), 실행(execute)할 수 있는 권한을 가질 수 있습니다.

파일 권한의 이해

리눅스에서 파일 권한은 다음 세 가지 종류로 나뉩니다:

  • 읽기 권한 (read): 파일의 내용을 읽을 수 있습니다.
  • 쓰기 권한 (write): 파일의 내용을 수정할 수 있습니다.
  • 실행 권한 (execute): 파일을 실행할 수 있습니다.

이 권한들은 각각 세 가지 사용자 그룹에 적용됩니다:

  • 소유자 (user): 파일을 소유한 사용자.
  • 그룹 (group): 파일이 속한 그룹.
  • 기타 사용자 (others): 소유자나 그룹에 속하지 않는 모든 사용자.

리눅스 명령어 ls의 -l 옵션을 이용하면 다음과 같이 제일 앞에 “drwxrwxr-x” 또는 “-rw-rw-r–“와 같이 표현되는 것이 바로 위의 권한과 사용자 그룹에 대한 정보입니다.

그림 1. 리눅스 명령어 ls를 이용한 파일 권한 확인
그림 1. 리눅스 명령어 ls를 이용한 파일 권한 확인

아래 그림을 보면 3개의 rwx가 보입니다. 첫째는 사용자(user), 그 다음은 파일이 속한 그룹(group), 마지막은 사용자나 그룹에 속하지 않는 모든 사용자(others)를 의미합니다. 그리고 rwx 각각은 읽기(read), 쓰기(write), 실행(execute) 권한을 의미합니다.

그림 2. 리눅스 계열의 파일 권한의 의미
그림 2. 리눅스 계열의 파일 권한의 의미

chmod 명령어 사용법

chmod 명령어는 파일 권한을 숫자 또는 기호로 변경할 수 있습니다. 두 가지 방법을 모두 살펴보겠습니다.

숫자 모드

숫자 모드에서는 각 권한을 3자리의 숫자로 표현합니다. rwx는 세 자리의 이진수로 사용됩니다. 각 자리는 4 (읽기), 2 (쓰기), 1 (실행)의 값을 가질 수 있으며, 이 값을 더하여 권한을 설정합니다.

그림 3. 리눅스 파일 권한 rwx의 2진수, 10진수, 문자 표현 방식
그림 3. 리눅스 파일 권한 rwx의 2진수, 10진수, 문자 표현 방식

위의 그림에서 볼 수 있듯이 퍼미션의 10진수 숫자 값은 다음과 같이 2진수 계산 방식을 사용해서 계산합니다.

  • 읽기, 쓰기, 실행 권한(rwx): 4 + 2 + 1 = 7
  • 읽기, 쓰기 권한(rw-): 4 + 2 = 6
  • 읽기, 실행 권한(r-x): 4 + 1 = 5
  • 읽기 권한(r–): 4 = 4

숫자 모드를 사용하여 소유자에게 읽기, 쓰기, 실행 권한을 부여하고, 그룹과 기타 사용자에게는 읽기, 실행 권한을 부여설정하는 방법은 아래와 같습니다.

chmod 755 filename
ShellScript

다음 그림에서는 기존 퍼미션이 664인 run.sh 파일에 755 권한을 부여한 결과를 확인할 수 있습니다.

그림 4. 리눅스 명령어 chmod: 숫자 모드를 이용한 권한 설정
그림 4. 리눅스 명령어 chmod: 숫자 모드를 이용한 권한 설정

기호 모드

기호 모드에서는 권한을 문자로 표현합니다:

  • u: 소유자 (user)
  • g: 그룹 (group)
  • o: 기타 사용자 (others)
  • a: 모든 사용자 (all)

권한 부여(+)나 제거(-)를 기호로 표시합니다:

  • r: 읽기 (read)
  • w: 쓰기 (write)
  • x: 실행 (execute)

기호 모드를 사용하여 소유자에게 읽기, 쓰기, 실행 권한을 부여하고, 그룹에게는 읽기, 실행 권한을 부여하며, 기타 사용자에게는 읽기 권한을 제거하는 방법은 아래와 같습니다.

chmod u+rwx,g+rx,o-r filename
ShellScript

실행 결과를 보면 아래와 같습니다. 사용자 권한 중 rw는 이미 있고, x만 없었으므로 x가 추가된 것을 볼 수 있습니다. 그룹 권한은 rw 권한이 있었는데, rx 권한을 추가하므로 x가 추가됐습니다. 마지막으로 기타 사용자는 r권한만 있었는데 제거했기 때문에 어떤 권한도 없게 되었습니다.

그림 5. 리눅스 명령어 chmod: 문자 모드를 이용한 권한 설정
그림 5. 리눅스 명령어 chmod: 문자 모드를 이용한 권한 설정

숫자 모드와의 차이점이 있다면, 숫자 모드는 해당 숫자의 권한으로 rwx가 모두 결정되는 반면, 기호모드는 더하기(+) 부호를 이용해서 기존 파일의 권한을 추가하고, 빼기(-) 부호로 기존 파일의 권한을 제거하는 것이 특징입니다. 즉, 기호 모드를 이용할 때에는 해당 파일의 전체 권한을 건드리지 않고, 원하는 권한만 추가하거나 제거하는 것이 가능합니다.

chmod 명령어의 옵션

리눅스 명령어 chmod에는 여러 가지 유용한 옵션이 있습니다. 자주 사용하는 옵션들을 알아보겠습니다.

-R (재귀적 적용)

-R 옵션은 디렉터리와 그 하위 모든 파일 및 디렉터리에 권한을 재귀적으로 적용합니다. 예를 들어, mydir 디렉터리와 그 안의 모든 파일과 디렉터리에 755 권한을 설정하려면 다음과 같이 합니다:

chmod -R 755 mydir
ShellScript

mydir 하위의 파일들의 퍼미션은 664였는데, -R 옵션을 사용하면 점 하나(.)로 표현되는 mydir의 권한은 775에서 755로 변경되고, mydir 하위의 a.sh, b.sh, c.sh 파일 모두 퍼미션이 755로 변경된 것을 확인할 수 있습니다.

그림 6. 리눅스 명령어 chmod: -R 옵션을 이용하여 재귀적 권한 설정
그림 6. 리눅스 명령어 chmod: -R 옵션을 이용하여 재귀적 권한 설정

–reference

--reference 옵션은 다른 파일의 권한을 참조하여 동일하게 설정할 때 사용합니다. 예를 들어, file2의 권한을 file1과 동일하게 설정하려면 다음과 같이 합니다:

chmod --reference=file1 file2
ShellScript

아래 그림은 a.sh 파일의 권한을 참조해서 b.sh 파일의 권한을 동일하게 설정한 결과입니다.

그림 7. 리눅스 명령어 chmod: --reference 옵션을 이용하여 권한 참조 설정
그림 7. 리눅스 명령어 chmod: –reference 옵션을 이용하여 권한 참조 설정

유용한 활용 방법

스크립트 파일 실행 권한 부여

리눅스에서 셸 스크립트를 실행하려면 실행 권한이 필요합니다.

다음 명령어로 스크립트 파일에 실행 권한을 부여할 수 있습니다:

chmod +x script.sh
ShellScript

이제 ./script.sh로 스크립트를 실행할 수 있습니다.

웹 서버 파일 권한 설정

웹 서버에서 파일 권한 설정은 매우 중요합니다. 일반적으로 웹 서버의 루트 디렉터리에 있는 파일은 다음과 같은 권한을 가집니다:

  • 디렉터리: 755 (소유자는 읽기, 쓰기, 실행 가능, 그룹과 기타 사용자는 읽기, 실행 가능)
  • 파일: 644 (소유자는 읽기, 쓰기 가능, 그룹과 기타 사용자는 읽기 가능)

예를 들어, 웹 서버의 루트 디렉터리 www와 그 안의 파일에 권한을 설정하려면 다음과 같이 합니다:

chmod -R 755 /var/www
find /var/www -type f -exec chmod 644 {} \;
ShellScript

둘째 줄은 find 명령어를 함께 사용하는 것인데 /var/www에서 파일을 찾습니다. -type f 옵션을 이용해서 파일만 찾습니다. -exec chmod 옵션을 이용해서 찾은 파일들에 대해 chmod 명령어를 실행합니다.

주의사항

잘못된 권한 설정

잘못된 권한 설정은 보안 문제를 초래할 수 있습니다. 예를 들어, 모든 사용자에게 쓰기 권한을 부여하면 심각한 보안 문제를 초래해서 시스템이 손상될 수 있습니다.

sudo 사용

시스템 파일의 권한을 변경해야 하는 경우에는 sudo 명령어를 사용하여 관리자 권한을 얻어야 합니다.

sudo chmod 644 /etc/passwd
ShellScript

정리

리눅스 명령어 chmod는 파일과 디렉터리의 권한을 관리하는 데 필수적인 도구입니다. 숫자 모드와 기호 모드를 통해 권한을 설정할 수 있으며, 재귀적 적용이나 참조 옵션을 사용하여 효율적으로 관리할 수 있습니다. 적절한 권한 설정은 시스템 보안을 유지하는 데 매우 중요하므로, 항상 신중하게 설정해야 합니다. chmod 명령어를 잘 활용하여 안전하고 효율적인 리눅스 환경을 유지하시길 바랍니다.

이상으로 리눅스 명령어 chmod의 사용 방법과 옵션에 대해 알아보았습니다. 이 포스팅이 리눅스를 사용하는 데 있어 많은 도움이 되길 바랍니다.

참고자료

관련 포스트

Leave a Comment