Linux 권한 수정

LinuxBeginner
지금 연습하기

소개

Linux 파일 권한은 서로 다른 사용자가 파일과 디렉토리에 접근, 수정, 실행할 수 있는 방식을 제어하는 기본적인 보안 기능입니다. 이러한 권한을 이해하고 효과적으로 관리하는 것은 시스템 보안 유지와 적절한 자원 공유에 필수적입니다.

이 랩에서는 chmod 명령어를 사용하여 파일 권한을 보고, 설정하고, 수정하는 방법을 배우게 됩니다. chmod 명령어는 관리자가 특정 파일을 읽기, 쓰기 또는 실행할 수 있는 사용자를 제어하여 민감한 데이터가 보호되고 권한 있는 사용자가 필요한 자원에 접근할 수 있도록 보장합니다.

이 랩을 마치면 특정 권한으로 파일을 생성하고, 기존 파일 권한을 수정하며, 그룹 기반 접근 제어를 할 수 있게 됩니다. 이는 모든 Linux 시스템 관리자 또는 사용자에게 중요한 기술입니다.

Linux 파일 권한 이해

Linux 는 파일과 디렉토리에 접근할 수 있는 사용자와 수행할 수 있는 작업을 세밀하게 제어할 수 있는 권한 시스템을 구현합니다. 이 단계에서는 Linux 권한이 어떻게 작동하는지, 그리고 이를 확인하는 방법을 배우게 됩니다.

먼저, 이 랩에서 모든 작업을 수행할 작업 디렉토리로 이동합니다.

cd ~/project

파일 권한을 검사하기 위해 샘플 파일을 생성해 보겠습니다.

touch sample_file.txt

이 파일의 권한을 보려면 -l 옵션과 함께 ls 명령어를 사용합니다.

ls -l sample_file.txt

다음과 유사한 출력을 볼 수 있습니다.

-rw-rw-r-- 1 labex labex 0 Oct 25 12:34 sample_file.txt

이 출력을 자세히 살펴보겠습니다.

  1. 첫 번째 문자 (-) 는 파일 유형을 나타냅니다. 대시 (-) 는 일반 파일을 나타내고, d는 디렉토리를 나타냅니다.

  2. 다음 아홉 문자는 세 그룹의 세 문자로 파일 권한을 나타냅니다.

    • 처음 세 문자 (rw-) 는 소유자의 권한을 보여줍니다.
    • 다음 세 문자 (rw-) 는 그룹의 권한을 보여줍니다.
    • 마지막 세 문자 (r--) 는 다른 모든 사용자의 권한을 보여줍니다.
  3. 각 그룹에서 세 위치는 다음을 나타냅니다.

    • 읽기 권한 (r)
    • 쓰기 권한 (w)
    • 실행 권한 (x)
    • -는 권한이 부여되지 않았음을 나타냅니다.
  4. 권한 뒤에는 링크 수, 소유자 이름, 그룹 이름, 파일 크기, 마지막 수정 날짜/시간 및 파일 이름과 같은 기타 세부 정보가 있습니다.

Linux 권한 비트는 숫자 형식으로도 표현할 수 있습니다.

  • 읽기 (r) = 4
  • 쓰기 (w) = 2
  • 실행 (x) = 1

이 값들을 더하여 모든 권한 조합을 단일 숫자로 나타낼 수 있습니다.

  • rwx = 4+2+1 = 7
  • rw- = 4+2+0 = 6
  • r-x = 4+0+1 = 5
  • r-- = 4+0+0 = 4

이것은 나중에 chmod 명령어를 숫자 모드 (numeric mode) 로 사용할 때 중요해집니다.

특정 권한으로 파일 생성

이 단계에서는 새 파일을 생성하고 소유자만 접근할 수 있도록 초기 권한을 설정합니다. 이는 다른 사용자가 접근해서는 안 되는 민감한 정보가 포함된 파일을 생성할 때 유용합니다.

먼저, secure_file.txt라는 새 파일을 생성합니다.

touch secure_file.txt

이제 파일에 내용을 추가해 보겠습니다.

echo "This file contains secure information." > secure_file.txt

기본적으로 대부분의 Linux 시스템은 소유자와 그룹이 읽고 쓸 수 있도록 하고, 다른 사용자는 읽기만 할 수 있는 권한으로 파일을 생성합니다. 현재 권한을 확인해 보겠습니다.

ls -l secure_file.txt

다음과 유사한 출력을 볼 수 있습니다.

-rw-rw-r-- 1 labex labex 37 Oct 25 12:40 secure_file.txt

민감한 정보가 포함된 파일의 경우, 소유자만 접근할 수 있도록 제한하려고 합니다. 숫자 모드 (numeric mode) 를 사용하여 chmod 명령어를 사용하여 권한을 600으로 설정합니다. 이는 다음을 의미합니다.

  • 소유자: 읽기 및 쓰기 (6 = 4+2)
  • 그룹: 권한 없음 (0)
  • 기타 사용자: 권한 없음 (0)

다음 명령을 실행하여 권한을 변경합니다.

chmod 600 secure_file.txt

이제 권한을 다시 확인합니다.

ls -l secure_file.txt

출력은 이제 다음과 같이 표시되어야 합니다.

-rw------- 1 labex labex 37 Oct 25 12:40 secure_file.txt

권한이 어떻게 변경되었는지 확인하십시오. 이제 소유자 (labex 사용자) 만 읽기 및 쓰기 권한을 가지며, 그룹 구성원 및 다른 사용자는 이 파일에 접근할 수 없습니다.

다른 파일을 생성해 보되, 이번에는 다른 기술을 사용하여 생성 시점에 권한을 설정해 보겠습니다.

먼저, 내용이 있는 public_file.txt라는 새 파일을 생성합니다.

echo "This file is readable by everyone." > public_file.txt

이제 이 파일을 모든 사람이 읽을 수 있지만 소유자만 쓸 수 있도록 설정해 보겠습니다.

chmod 644 public_file.txt

권한을 확인합니다.

ls -l public_file.txt

다음과 같은 출력을 볼 수 있습니다.

-rw-r--r-- 1 labex labex 33 Oct 25 12:45 public_file.txt

이 권한 설정 (644) 은 모든 사람이 읽을 수 있지만 소유자만 수정할 수 있는 공개 파일에 일반적으로 사용됩니다.

chmod 명령어와 심볼릭 모드 사용법

이전 단계에서는 숫자 모드 (numeric mode) 를 사용하여 권한을 설정했습니다. 이제 권한을 수정하는 보다 직관적인 방법을 제공하는 기호 모드 (symbolic mode) 를 살펴보겠습니다.

기호 모드는 문자와 기호를 사용하여 사용자와 권한을 나타냅니다.

  • u - 사용자 (소유자)
  • g - 그룹
  • o - 기타 사용자 (다른 모든 사용자)
  • a - 모두 (ugo 와 동일)

그리고 권한 기호:

  • r - 읽기
  • w - 쓰기
  • x - 실행

실습을 위해 스크립트 파일을 생성해 보겠습니다.

touch my_script.sh

스크립트에 간단한 명령을 추가합니다.

echo '#!/bin/bash' > my_script.sh
echo 'echo "Hello from the script!"' >> my_script.sh

현재 권한을 확인합니다.

ls -l my_script.sh

스크립트가 실행 가능하지 않음을 확인할 수 있습니다.

-rw-rw-r-- 1 labex labex 44 Oct 25 12:50 my_script.sh

소유자가 스크립트를 실행할 수 있도록 하려면 다음을 사용합니다.

chmod u+x my_script.sh

이렇게 하면 사용자/소유자 (u) 에 실행 (x) 권한이 추가됩니다 (+).

권한을 다시 확인합니다.

ls -l my_script.sh

이제 다음을 볼 수 있습니다.

-rwxrw-r-- 1 labex labex 44 Oct 25 12:50 my_script.sh

이제 모든 사용자가 실행할 수 있도록 해보겠습니다.

chmod a+x my_script.sh

이렇게 하면 모든 사용자 (소유자, 그룹 및 기타 사용자) 에게 실행 권한이 추가됩니다.

권한을 다시 확인합니다.

ls -l my_script.sh

다음과 같은 출력을 볼 수 있습니다.

-rwxrwxr-x 1 labex labex 44 Oct 25 12:50 my_script.sh

스크립트를 실행해 보겠습니다.

./my_script.sh

다음과 같은 출력을 볼 수 있습니다.

Hello from the script!

- 연산자를 사용하여 권한을 제거할 수도 있습니다. 예를 들어, 그룹 및 기타 사용자에 대한 쓰기 권한을 제거하려면 다음을 수행합니다.

chmod go-w my_script.sh

권한을 확인합니다.

ls -l my_script.sh

다음과 같은 출력을 볼 수 있습니다.

-rwxr-xr-x 1 labex labex 44 Oct 25 12:50 my_script.sh

여러 권한을 한 번에 설정할 수도 있습니다. 예를 들어, 모든 사용자에게 읽기 및 실행 권한을 부여하고 소유자에게만 쓰기 권한을 부여하려면 다음을 수행합니다.

chmod u=rwx,go=rx my_script.sh

이렇게 하면 각 범주에 대한 특정 권한이 설정됩니다 (=).

권한을 다시 한 번 확인합니다.

ls -l my_script.sh

결과는 이전과 동일해야 합니다.

-rwxr-xr-x 1 labex labex 44 Oct 25 12:50 my_script.sh

그룹 권한 관리 방법

Linux 는 파일을 그룹과 연결하여 협업적인 접근 제어를 가능하게 합니다. 이 단계에서는 그룹을 생성하고, 파일의 그룹 소유권을 변경하고, 적절한 그룹 권한을 설정하는 방법을 배우게 됩니다.

먼저, 새 그룹을 생성해 보겠습니다. 실제 시나리오에서는 부서 또는 프로젝트 팀을 나타낼 수 있습니다.

sudo groupadd developers

이제 이 그룹과 공유할 파일을 생성해 보겠습니다.

touch shared_config.txt
echo "## Development configuration settings" > shared_config.txt
echo "debug_mode=true" >> shared_config.txt
echo "log_level=verbose" >> shared_config.txt

현재 이 파일은 사용자와 기본 그룹에 속해 있습니다. 확인해 보겠습니다.

ls -l shared_config.txt

다음과 유사한 출력을 볼 수 있습니다.

-rw-rw-r-- 1 labex labex 61 Oct 25 13:00 shared_config.txt

파일의 그룹 소유권을 developers 그룹으로 변경하려면 chown 명령어를 사용합니다.

sudo chown labex:developers shared_config.txt

구문은 chown user:group filename입니다. 여기서는 사용자를 labex로 유지하면서 그룹을 developers로 변경합니다.

이제 소유권을 확인합니다.

ls -l shared_config.txt

다음과 같은 출력을 볼 수 있습니다.

-rw-rw-r-- 1 labex developers 61 Oct 25 13:00 shared_config.txt

그룹이 developers로 변경되었지만 권한은 여전히 동일합니다. 그룹 구성원이 읽을 수 있지만 쓰기는 할 수 없도록 수정하고, 다른 사용자의 접근을 방지해 보겠습니다.

chmod 640 shared_config.txt

이렇게 설정됩니다.

  • 소유자: 읽기 및 쓰기 (6 = 4+2)
  • 그룹: 읽기 전용 (4)
  • 기타 사용자: 권한 없음 (0)

권한을 다시 확인합니다.

ls -l shared_config.txt

이제 다음을 볼 수 있습니다.

-rw-r----- 1 labex developers 61 Oct 25 13:00 shared_config.txt

이제 developers 그룹의 구성원은 이 구성 파일을 읽을 수 있지만 수정할 수는 없습니다. developers 그룹에 속하지 않은 사용자는 파일에 전혀 접근할 수 없습니다.

기호 모드를 사용하여 동일한 결과를 얻을 수도 있습니다.

chmod u=rw,g=r,o= shared_config.txt

이 명령은 명시적으로 다음을 설정합니다.

  • 사용자/소유자: 읽기 및 쓰기
  • 그룹: 읽기 전용
  • 기타 사용자: 권한 없음

사용자를 developers 그룹에 추가하려면 일반적으로 다음을 사용합니다.

sudo usermod -a -G developers username

그러나 이는 추가 사용자 계정을 생성해야 하므로 이 특정 랩의 범위를 벗어납니다.

요약

이 랩에서는 Linux 파일 권한의 필수 개념과 실습을 배웠습니다. 다음은 수행한 작업에 대한 요약입니다.

  1. 사용자, 그룹 및 기타 사용자에 대한 읽기, 쓰기 및 실행 권한의 개념을 포함하여 Linux 권한 모델이 작동하는 방식을 이해했습니다.

  2. 특정 권한으로 파일을 생성하고, 숫자 모드 (numeric mode) 를 사용하여 chmod 명령어를 사용하여 다양한 유형의 파일에 적절한 접근 수준을 설정하는 방법을 배웠습니다.

  3. 특정 권한을 추가, 제거 또는 설정하는 데 보다 직관적인 접근 방식을 제공하는 chmod 명령의 기호 모드 (symbolic mode) 를 탐구했습니다.

  4. 그룹 권한으로 작업하여 그룹을 생성하고, 파일 그룹 소유권을 변경하고, 적절한 그룹 수준 접근 제어를 설정하는 방법을 배웠습니다.

이러한 기술은 Linux 시스템에서 보안을 유지하고 접근을 제어하는 데 필수적입니다. 서버 구성을 관리하든, 소프트웨어를 개발하든, 단순히 개인 파일을 정리하든, 파일 권한을 적절하게 설정하고 수정하는 방법을 이해하는 것은 모든 Linux 사용자에게 필수적인 기술입니다.

Linux 로 계속 작업하면서 적절한 권한 관리가 시스템 보안의 핵심 구성 요소임을 기억하십시오. 항상 최소 권한의 원칙을 따르십시오. 사용자 및 프로세스에 작업을 수행하는 데 필요한 권한만 부여하고 그 이상은 부여하지 마십시오.