Linux 권한 수정

LinuxBeginner
지금 연습하기

소개

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

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

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

이것은 가이드 실험입니다. 학습과 실습을 돕기 위한 단계별 지침을 제공합니다.각 단계를 완료하고 실무 경험을 쌓기 위해 지침을 주의 깊게 따르세요. 과거 데이터에 따르면, 이것은 초급 레벨의 실험이며 완료율은 90%입니다.학습자들로부터 100%의 긍정적인 리뷰율을 받았습니다.

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