CodeGym /행동 /Docker SELF /접근 권한의 기초: chmod, chown, umask

접근 권한의 기초: chmod, chown, umask

Docker SELF
레벨 2 , 레슨 0
사용 가능

접근 권한의 기초: chmod, chown, umask

1. 접근 권한의 개념

Linux에서 파일이나 디렉토리를 다룰 때, 그들에 대한 접근을 관리해야 할 필요가 생겨. 양말을 어디든 놔둔다고 생각해봐, 그러면 집안의 누구든지 사용할 수 있겠지! Linux의 접근 권한은 "무단 양말 사용"(혹은 더 중요한 것들, 예를 들어 스크립트 같은 것들)을 방지할 수 있어. 이제 시작해 보자.

Linux의 모든 파일(그리고 디렉토리)은 읽기, 쓰기 또는 실행할 수 있는 권한을 정의하는 세트의 접근 권한이 있어:

  1. 읽기 (r): 파일 내용을 보거나 디렉토리 내 파일 목록을 볼 수 있어.
  2. 쓰기 (w): 파일 내용을 수정하거나 디렉토리에 파일을 추가/삭제할 수 있어.
  3. 실행 (x): 파일을 프로그램으로 실행(혹은 디렉토리로 접근)할 수 있어.

3단계 모델

각 권한은 3개의 사용자 그룹에 적용돼:

  • 소유자 (owner): 파일을 생성한 사용자.
  • 그룹 (group): 파일에 할당된 사용자 그룹.
  • 기타 (others): 시스템의 나머지 사용자들.

파일의 접근 권한 예:

-rwxr-xr--

분석해 보자:

  • 첫 번째 문자 -는 이것이 파일임을 나타내(디렉토리라면 d가 있어).
  • 처음 세 문자 rwx — 소유자의 권한(읽기, 쓰기, 실행).
  • 다음 세 문자 r-x — 그룹의 권한(읽기, 실행).
  • 마지막 세 문자 r-- — 기타 사용자들의 권한(읽기만).

2. chmod 명령어: 접근 권한 관리

기호 형식

chmod 명령어는 파일 및 디렉토리의 접근 권한을 변경합니다. 기호 형식은 다음과 같습니다:

chmod [누구][동작][권한] 파일_이름
  • 누구: u (소유자), g (그룹), o (기타), a (모두).
  • 동작: + (권한 추가), - (권한 제거), = (권한 정확히 설정).
  • 권한: r (읽기), w (쓰기), x (실행).

예제:


# 모든 사용자에게 실행 권한을 설정합니다
chmod a+x script.sh

# 그룹에만 쓰기 권한을 추가합니다
chmod g+w file.txt

# 기타 사용자로부터 읽기 권한을 제거합니다
chmod o-r document.txt

8진수 형식

8진수 형식(또는 숫자 형식)은 더 간결하지만 "숫자의 마법"을 이해해야 합니다. 이 형식에서는 각 권한 조합이 숫자로 나타납니다:

  • r = 4
  • w = 2
  • x = 1

권한은 더합니다:

  • rwx = 7 (4 + 2 + 1)
  • rw- = 6 (4 + 2)
  • r-- = 4

기록 형식:

chmod [숫자][숫자][숫자] 파일_이름

예제:


# 소유자에게 rwx 권한, 그룹에 r-x 권한, 기타 사용자에 r-- 권한을 설정합니다
chmod 754 file.sh

3. 파일 소유자 변경: chown 명령어

파일을 다른 사용자(또는 그룹)에게 넘겨야 할 때는 chown 명령어를 사용할 수 있어.

형식:

chown [사용자]:[그룹] 파일_이름

예제:


# 소유권을 사용자 user1로 변경
chown user1 myfile.txt

# 소유자와 그룹을 모두 변경
chown user1:group1 myfile.txt

# 그룹만 변경
chown :group2 myfile.txt

4. 기본 마스크: umask

파일을 생성할 때, 해당 파일의 접근 권한은 시스템에 의해 결정돼. 예를 들어, 권한이 rw-r--r--일 수 있어. 근데 이 권한은 어디에서 오는 걸까? 답은 umask 명령어에서 나와.

umask란?

umask는 새로운 파일에 대해 설정되지 않을 권한을 정의해.

예를 들어:

  • 파일의 기본 권한 세트: 666 (실행 권한 없음).
  • 마스크: 022.
  • 최종 권한: 644 (666 - 022).

명령어들:

  • 현재 마스크 보기: umask
  • 새 마스크 설정: umask 0022

예시:


# 새 파일이 rw-rw-r-- 권한을 가지도록 마스크 설정
umask 0002

5. 관리자 권한과 sudo

sudo란?

sudo (강조된 "superuser do")는 Linux 및 Unix 계열 시스템에서 사용자가 슈퍼유저(root) 또는 다른 높은 권한을 가진 사용자로 명령을 실행할 수 있게 하는 명령어야.

sudo 시스템은 root 계정을 항상 사용하지 않고도 일시적으로 관리자 권한에 접근할 수 있게 해주는 도구로, 시스템을 실수로 또는 악의적으로 변경할 위험을 줄여줘.

중요!

간단히 말하자면, sudo는 관리자 권한으로 실행하려는 명령어 앞에 추가하는 거야.

sudo는 어떻게 작동해?

명령어 실행:

만약 sudo로 명령어를 입력하면, 시스템은 현재 사용자가 높은 권한으로 명령어를 실행할 수 있는 권한이 있는지 확인해.

예를 들면:

sudo apt update

인증:

현재 세션에서 처음 sudo를 사용할 때, 시스템은 현재 사용자(루트 아님)에 대한 비밀번호를 물어봐.

비밀번호를 성공적으로 입력하면, 시스템은 짧은 시간(보통 5-15분) 동안 인증을 저장해서 각 명령어마다 비밀번호를 다시 묻지 않아.

명령어 실행:

사용자가 sudo 설정에 명시된 권한을 가지고 있다면, 명령어는 슈퍼유저 권한으로 실행될 거야.

sudo의 주요 기능과 명령어

권한을 가진 명령어 실행:

sudo <명령어>

예를 들면:

sudo apt install nginx

다른 사용자의 이름으로 명령어 실행: -u 옵션을 사용해:

sudo -u <사용자_이름> <명령어>

예를 들면:

sudo -u user1 ls /home/user1

관리 터미널 획득: root 권한으로 쉘을 실행해:

sudo -i

또는:

sudo su

sudo 설정 보기:

sudo -l

현재 사용자가 실행할 수 있는 명령어를 보여줘.

sudo 설정 편집:

sudo visudo

이 명령어는 /etc/sudoers 파일을 안전하게 편집할 수 있게 열어줘.

6. 예제

우리의 지식을 실습에 적용해 보자.

과제 1: chmod로 권한 관리하기

  1. 파일을 만들어 봐:

    touch myfile.txt
    
  2. 소유자에게 읽기, 쓰기, 실행 권한을 부여해:

    chmod u+rwx myfile.txt
    
  3. 다른 사람들에게 읽기 권한만 추가해:

    chmod o+r myfile.txt
    
  4. 권한을 확인해 봐:

    ls -l myfile.txt
    

과제 2: chown으로 소유자 변경

  1. 파일을 만들어 봐:

    touch ownedfile.txt
    
  2. user1 사용자로 소유자를 변경해 봐 (관리자 권한 필요):

    sudo chown user1 ownedfile.txt
    
  3. 변경 사항을 확인해 봐:

    ls -l ownedfile.txt
    

과제 3: umask 실험하기

  1. 현재 마스크를 확인해 봐:

    umask
    
  2. 마스크를 027로 설정해:

    umask 027
    
  3. 새로운 파일을 만들어 봐:

    touch newfile.txt
    
  4. 생성된 파일의 권한을 확인해 봐:

    ls -l newfile.txt
    

7. 일반적인 실수와 특징

  1. 소유자 변경 시 sudo를 빼먹음: 파일 소유자는 관리자만 변경할 수 있어. "Operation not permitted" 오류가 뜬다면 sudo를 추가해봐.
  2. chmod 명령어에서 잘못된 순서: 권한을 다른 객체에 변경했을 수도 있어. 원하는 파일이나 디렉토리를 선택했는지 확인해.
  3. umask는 신규 파일에만 적용됨: 기존 파일의 권한을 umask로 바꾸려고 하면 작동하지 않아. chmod를 써야 해.

Linux의 접근 권한이 얼마나 유연한지 알아? 온 세상에서 한 사람만 "볼 수 있는" 파일을 만들 수 있을 정도야! 큰 권한에는 큰 책임이 따른다고 하지. 이제 chmod, chown, umask를 마스터했으니, 너의 Linux 시스템을 편리하면서도 안전하게 만들 준비가 됐어.

코멘트
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION