리눅스 sudo 사용·권한 부여·보안 설정 정리

여준서·2025년 8월 29일
post-thumbnail

리눅스 운영에서 사용자 권한과 sudo 설정은 보안과 관리 효율성의 핵심입니다.

이번 글에서는 기본 권한 구조부터 chown, chmod 사용법, 그리고 sudo 권한 부여 및 보안 설정까지 실습 위주로 정리해보겠습니다.


1. 파일 소유권과 권한 개요

리눅스에서는 모든 파일이 소유자(User), 그룹(Group), 기타 사용자(others) 세 가지 권한 영역으로 나뉩니다.

  • 소유자(User) : 해당 파일을 만든 계정
  • 그룹(Group) : 동일 그룹에 속한 사용자들
  • 기타 사용자(others) : 그 외 모든 계정

각 영역에 대해 읽기(r), 쓰기(w), 실행(x) 권한을 부여하거나 제한할 수 있습니다.


2. ls -l 출력 구조 분석

예시:

-rw-r--r--  1 user1 devgroup  1234 Mar  1 10:00 file.txt
  • 파일 타입:
    • -: 일반 파일
    • d : 디렉터리
    • l : 심볼릭 링크
  • 권한 구조: rw- r-- r--
    • rw- → 소유자(user): 읽기, 쓰기
    • r-- → 그룹(group): 읽기만 가능
    • r-- → 기타 사용자(others): 읽기만 가능

3. 디렉터리 권한 vs 파일 권한

  • 파일
    • r : 읽기 가능
    • w : 수정 가능
    • x : 실행 가능 (스크립트/바이너리 실행)
  • 디렉터리
    • r : 내부 파일 목록 확인 가능
    • w : 파일 생성/삭제 가능
    • x : 디렉터리 진입 가능 (cd 가능 여부)

👉 따라서 디렉터리에는 보통 x 권한이 꼭 필요합니다.


4. 소유권 변경 (chown)

# 파일 소유자 변경
sudo chown user1 file.txt

# 사용자·그룹 동시 변경
sudo chown user1:devgroup file.txt

# 디렉터리 전체 소유권 변경 (-R 옵션)
sudo chown -R user1:devgroup /var/www

⚠️ -R 옵션은 하위 전체에 적용되므로 주의가 필요합니다.


5. 권한 변경 – Symbolic 방식

# 사용자(u), 그룹(g), 기타(o) 권한 추가/제거
chmod u+x script.sh      # 사용자 실행 권한 추가
chmod g-w file.txt       # 그룹 쓰기 권한 제거
chmod o-r file.txt       # 기타 사용자 읽기 권한 제거

6. 권한 변경 – Numeric 방식

  • chmod 755 file.txtrwx r-x r-x
  • chmod 640 file.txtrw- r-- ---

숫자 의미:

  • 4 = 읽기(r), 2 = 쓰기(w), 1 = 실행(x)
  • 각 자리 = 사용자 / 그룹 / 기타

7. 권한 테스트 시나리오

  • 특정 그룹만 접근 가능하게 만들기:
    chmod 770 project_dir
    
  • 기타 사용자 접근 차단:
    chmod 750 secure.sh
    

8. sudo란? (root 권한 위임)

  • sudo는 root 권한을 일반 사용자에게 위임하는 명령어입니다.
  • root 계정을 직접 로그인하지 않고, 필요한 명령만 실행할 수 있습니다.
  • sudo 없이 실행하면 Permission denied 오류가 발생합니다.

👉 sudo는 보안상 root 비밀번호를 공유하지 않고도 관리자 권한을 제한적으로 부여할 수 있어 안전합니다.


9. sudoers 파일 수정 (visudo)

sudo 권한은 /etc/sudoers 파일에서 관리합니다.

👉 반드시 visudo 명령으로 수정해야 합니다. (문법 체크 지원)

sudo visudo

파일 열고 맨 아래 줄에 추가:

%admins ALL=(ALL) ALL

✅ 이렇게 하면 admins 그룹 소속 사용자들은 sudo로 모든 명령을 실행할 수 있습니다.


10. sudoers 수정 시 주의사항

⚠️ 문법 오류가 발생하면 sudo 자체가 막혀 복구가 어려워질 수 있습니다.

  • 항상 visudo 사용
  • 기존 설정은 지우지 말고 맨 아래 추가
  • 테스트는 새로운 터미널 세션에서 먼저 실행

11. 안전한 권한 부여 방법 (/etc/sudoers.d 활용)

운영 환경에서는 /etc/sudoers.d/ 디렉터리 방식을 권장합니다.

echo "%admins ALL=(ALL) ALL" | sudo tee /etc/sudoers.d/admins

이 방식의 장점:

  • 개별 설정 파일로 관리 가능
  • 특정 설정만 삭제하거나 롤백 용이
  • 여러 관리자가 충돌 없이 관리 가능

12. 실습 과정 예제

① 사용자와 그룹 준비

새로운 사용자 devuser를 생성하고 비밀번호를 설정했습니다.

sudo adduser devuser
sudo passwd devuser

admins 그룹을 만들고 devuser를 추가합니다.

sudo groupadd admins
sudo usermod -aG admins devuser

② sudo 권한 부여 (방법①: visudo 직접 수정)

sudo visudo

맨 아래 줄에 추가:

%admins ALL=(ALL) ALL

이제 admins 그룹 소속 사용자는 sudo 명령을 사용할 수 있습니다.


③ sudo 권한 부여 (방법②: /etc/sudoers.d 활용)

echo "%admins ALL=(ALL) ALL" | sudo tee /etc/sudoers.d/admins

이 방법은 보안적으로 더 안전하고, 관리도 편리합니다.


④ 권한 테스트

devuser 계정으로 전환합니다.

su - devuser

sudo 권한이 정상적으로 동작하는지 확인합니다.

sudo whoami

출력:

root

✅ 정상적으로 root 권한 위임이 작동했습니다.


⑤ 비밀번호 없는 sudo (옵션)

비밀번호 입력 없이 sudo 실행 가능하도록 설정할 수도 있습니다.

echo "devuser ALL=(ALL) NOPASSWD: ALL" | sudo tee /etc/sudoers.d/devuser

테스트:

su - devuser
sudo whoami

출력:

root

⚠️ 하지만 보안상 운영 환경에서는 지양해야 하며, 특정 명령만 허용하는 방식이 더 안전합니다.

profile
블로그 이전했습니다 https://duwnstj.github.io

0개의 댓글