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 명령을 사용해야 한다. 아래는 설정 예시다:
- visudo 명령 실행
- sudo visudo
- 새로운 사용자 규칙 추가:
- guest5 ALL=(ALL) NOPASSWD: /usr/bin/apt
- guest5 사용자가 비밀번호 입력 없이 apt 명령 실행 가능
- guest5 ALL=(ALL) NOPASSWD: /usr/bin/apt
- 저장 및 종료
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 파일은 리눅스 시스템 관리에서 필수적인 요소다. 사용자와 그룹 설정을 통해 시스템의 보안을 강화하고 효율성을 높일 수 있다.
'기술 노트 > 정보보안기사' 카테고리의 다른 글
화이트박스 분석: 소프트웨어 품질을 높이는 핵심 기술 (1) | 2025.01.26 |
---|---|
랜섬웨어, 그 정체와 예방법 (0) | 2025.01.25 |
Visual Basic 스크립트를 이용한 악성코드의 위협과 방어 전략 (1) | 2025.01.23 |
리눅스 Cron: 자동화 작업의 모든 것 (0) | 2025.01.22 |
netstat로 네트워크 문제 진단하기 (0) | 2025.01.21 |