기술 노트/정보보안기사

효율적인 리눅스 시스템 관리: sudo와 /etc/sudoers 활용법

anothel 2025. 1. 24. 22:37

1. 개요

리눅스와 같은 유닉스 계열 운영체제에서 sudo 명령은 관리자 권한이 필요한 작업을 일반 사용자 계정으로 수행할 수 있게 해주는 강력한 도구다. 하지만 이를 적절히 설정하고 이해하지 않으면 시스템 보안에 큰 위협이 될 수 있다.

이 글에서는 sudo의 기본 개념과 설정 파일인 /etc/sudoers의 구조를 살펴보고, 실질적인 예시와 함께 안전하고 효율적으로 사용하는 방법을 제안한다.

2. sudo와 /etc/sudoers의 역할

sudo는 사용자가 관리자로서 특정 명령을 실행할 수 있도록 허용하는 도구다. 이를 통해 관리자 계정(root)으로 직접 로그인하지 않아도 필요한 작업을 수행할 수 있다. /etc/sudoers는 sudo의 동작을 제어하는 설정 파일로, 어떤 사용자가 어떤 명령을 실행할 수 있는지 정의한다.

기본적으로 sudo 명령은 다음 형식으로 사용한다:

sudo [옵션] [명령어]

예를 들어, 시스템을 업데이트하려면 다음 명령을 입력한다:

sudo apt update && sudo apt upgrade

3. /etc/sudoers 파일 구조

/etc/sudoers 파일은 특정 문법을 따라야 하며, 잘못 수정하면 시스템 접근에 문제가 생길 수 있다. 따라서 파일을 편집할 때는 반드시 visudo 명령을 사용해야 한다. 이 파일의 기본적인 구조는 다음과 같다:

사용자 또는 그룹  호스트 = (실행 사용자) 명령어

예시 설정:

  • %admin ALL=(ALL) ALL: admin 그룹에 속한 사용자는 모든 호스트에서 모든 명령을 실행할 수 있다.
  • %sudo ALL=(ALL:ALL) ALL: sudo 그룹에 속한 사용자는 모든 사용자로서 모든 명령을 실행할 수 있다.
  • root ALL=(ALL:ALL) ALL: root 계정은 제한 없이 모든 명령을 실행할 수 있다.
  • guest3 ALL=(ALL:ALL) ALL: guest3 사용자는 모든 명령을 실행할 수 있다.

4. 사용자와 그룹 설정의 주요 방법

4.1 사용자 추가 및 수정

사용자 추가 (useradd)

새로운 사용자를 추가할 때 UID, GID, 그리고 그룹 설정을 포함할 수 있다:

sudo useradd -u 1001 -g 1001 -G sudo,adm guest1
  • -u: 사용자 UID 설정
  • -g: 기본 그룹 GID 설정
  • -G: 추가 그룹 설정

사용자 수정 (usermod)

기존 사용자의 설정을 변경할 때 사용한다:

sudo usermod -u 1002 guest1  # UID 변경
sudo usermod -g 1002 guest1  # 기본 그룹 변경
sudo usermod -G sudo,adm guest1  # 추가 그룹 변경

예제

guest1의 기본 그룹을 users(GID=100)로 변경하고, 추가 그룹으로 sudo와 adm을 설정하려면:

sudo usermod -g 100 guest1
sudo usermod -G sudo,adm guest1

4.2 그룹 관리

그룹 추가 (groupadd)

새로운 그룹을 생성할 때 사용한다:

sudo groupadd -g 1001 developers
  • -g: GID 지정

그룹에 사용자 추가 (usermod -aG)

사용자를 특정 그룹에 추가할 때 사용한다. -a 옵션은 기존 그룹을 유지하면서 새 그룹을 추가한다:

sudo usermod -aG developers guest1

특정 그룹에서 사용자 제거

gpasswd 명령을 사용한다:

sudo gpasswd -d guest1 developers

4.3 정보 확인

  • /etc/passwd: 사용자 정보 (UID, 기본 GID 등)
  • /etc/group: 그룹 정보
  • /etc/shadow: 암호화된 비밀번호 정보

예제

cat /etc/passwd | grep guest1
cat /etc/group | grep guest1

4.4 /etc/passwd와 /etc/group의 역할

/etc/passwd

사용자의 UID, 기본 GID, 홈 디렉토리, 기본 쉘을 정의한다. 예:

guest1:x:1001:1001::/home/guest1:/bin/bash
  • UID=1001, GID=1001
  • 홈 디렉토리: /home/guest1
  • 로그인 쉘: /bin/bash

/etc/group

그룹 이름, GID, 그룹 멤버를 정의한다. 예:

sudo:x:27:guest1
  • 그룹 이름: sudo
  • GID: 27
  • 멤버: guest1

5. /etc/sudoers와 사용자 관계 분석

다음은 /etc/sudoers 파일의 주요 내용이다. 이 파일은 사용자와 그룹의 권한 설정을 정의하며, 각 사용자가 특정 명령을 실행할 수 있는지를 결정한다:

%admin ALL=(ALL) ALL
%sudo ALL=(ALL:ALL) ALL
root ALL=(ALL:ALL) ALL
guest3 ALL=(ALL:ALL) ALL
  • guest1 사용자:
    • admin 그룹에 속하며, /etc/sudoers의 %admin 설정에 따라 모든 명령 실행 가능.

확인 명령:

id guest1

결과:

uid=10(guest1) gid=10(guest1) groups=10(guest1),3(admin)
  • guest2 사용자:
    • sudo 그룹에 속하며, %sudo 설정에 따라 모든 명령 실행 가능.

확인 명령:

id guest2

결과:

uid=11(guest2) gid=11(guest2) groups=11(guest2),4(sudo)
  • guest3 사용자:
    • /etc/sudoers에 명시적으로 추가되어 있어 모든 명령 실행 가능.

확인 명령:

id guest3

결과:

uid=12(guest3) gid=12(guest3) groups=12(guest3),5(adm)
  • guest4 사용자:
    • adm 그룹에 속하지만 /etc/sudoers 파일에 명시되지 않아 sudo 사용 불가.

확인 명령:

id guest4

결과:

uid=13(guest4) gid=13(guest4) groups=13(guest4),5(adm)

6. /etc/sudoers 설정 방법

/etc/sudoers 파일을 안전하게 편집하려면 반드시 visudo 명령을 사용해야 한다. 아래는 설정 예시다:

  1. visudo 명령 실행
    • sudo visudo
  2. 새로운 사용자 규칙 추가:
    • guest5 ALL=(ALL) NOPASSWD: /usr/bin/apt
      • guest5 사용자가 비밀번호 입력 없이 apt 명령 실행 가능
  3. 저장 및 종료

7. sudo 명령 사용 예시

  • 서비스 재시작:
sudo systemctl restart apache2
  • 파일 권한 변경:
sudo chmod 644 /etc/important.conf
  • 사용자 추가:
sudo useradd newuser
  • 사용자 삭제:
sudo userdel olduser

8. 변경 후 반영

파일을 직접 수정했거나 사용자/그룹을 변경한 후에는 세션에서 반영하려면 로그아웃 후 다시 로그인하거나, 아래 명령으로 캐시를 업데이트한다:

newgrp <groupname>

9. 결론

sudo 명령과 /etc/sudoers 파일은 리눅스 시스템 관리에서 필수적인 요소다. 사용자와 그룹 설정을 통해 시스템의 보안을 강화하고 효율성을 높일 수 있다.

728x90