IMG-LOGO
공지사항 :

리눅스 sudo

lmkfox - 2025-09-30 06:32:21 43 Views 0 Comment

1. sudo 개요

  • sudo는 일반 사용자 계정이 루트 권한(root privilege) 또는 다른 사용자 권한으로 명령을 실행할 수 있게 하는 프로그램입니다.

  • 전통적으로 루트 권한이 필요한 작업은 su로 root 계정으로 직접 전환해야 했지만, sudo는 특정 명령만 루트 권한으로 수행할 수 있도록 허용하여 보안성과 편의성을 동시에 제공합니다.


2. 기본 사용법

sudo [옵션] 명령어 [인자...]

예시:

sudo apt update
sudo systemctl restart nginx
sudo cp file /etc/

  • 기본적으로 sudo를 입력하면 현재 사용자의 비밀번호를 묻습니다. (root 비밀번호가 아님)

  • 인증 성공 후 일정 시간 동안(timestamp_timeout, 보통 5분) 재입력 없이 사용할 수 있습니다.


3. 

sudo

의 동작 원리

  1. 사용자가 sudo를 입력 → /etc/sudoers 설정 확인.

  2. 해당 사용자가 지정된 명령을 실행할 권한이 있는지 확인.

  3. 권한이 있으면 명령을 root(혹은 다른 지정 사용자) 권한으로 실행.

  4. 실행 기록이 /var/log/auth.log 또는 journalctl 같은 로그에 남음.


4. 주요 옵션

  • -u USER : 특정 사용자 권한으로 실행

sudo -u postgres psql

  • -i : 지정 사용자 환경 초기화 후 로그인 셸 실행

sudo -i

  • -s : 지정 사용자 셸 실행 (환경 유지)

  • -k : 캐시된 인증 무효화(다음 명령 시 비밀번호 재요구)

  • -l : 자신이 어떤 명령을 sudo로 실행할 수 있는지 확인


5. 

/etc/sudoers

 설정

sudo 권한은 /etc/sudoers 파일 또는 /etc/sudoers.d/ 디렉토리에 정의됩니다.

편집은 visudo 명령으로 해야 구문 오류를 방지할 수 있습니다.

기본 구조

user   host = (runas) command

예시:

# root 모든 권한
root    ALL=(ALL:ALL) ALL

# user1은 모든 호스트에서 모든 명령 가능
user1   ALL=(ALL) ALL

# devuser는 /bin/systemctl restart nginx만 실행 가능
devuser ALL=(ALL) /bin/systemctl restart nginx


6. 

sudo

 그룹

대부분의 배포판은 특정 그룹(예: sudo, wheel)에 속한 사용자에게 루트 권한을 부여합니다.

  • Debian/Ubuntu 계열: sudo 그룹

  • Red Hat/CentOS 계열: wheel 그룹

사용자를 그룹에 추가:

sudo usermod -aG sudo user1    # Ubuntu
sudo usermod -aG wheel user1   # CentOS


7. 보안 특징

  • 최소 권한 원칙: root 계정 직접 로그인 대신 필요한 명령만 허용.

  • 감사(Audit) 가능: 모든 sudo 사용 내역이 로그에 기록.

  • 비밀번호 보호: root 비밀번호 대신 사용자 자신의 비밀번호 사용.

  • 시간 제한 인증: 비밀번호 입력 후 일정 시간만 유효.


8. 위험과 주의사항

  • sudo su 또는 sudo -i로 root 셸을 띄우면 전체 권한을 계속 유지 → 실수 위험 증가.

  • 잘못된 sudoers 설정은 보안 구멍으로 이어질 수 있음(예: NOPASSWD:ALL).

  • 스크립트에서 sudo 사용 시 입력 대기 문제 발생 가능 → 자동화에서는 sudoers 설정을 통해 특정 명령을 비밀번호 없이 허용하는 경우도 있음.


9. 유용한 활용 예시

  • 로그 보기 (보안 감사)

sudo journalctl -u ssh

  • 특정 사용자 권한으로 실행

sudo -u www-data whoami

  • 비밀번호 묻지 않고 특정 명령 실행 (sudoers)

deploy ALL=(ALL) NOPASSWD: /usr/bin/systemctl restart myapp


10. 요약

  • sudo는 루트 계정 직접 사용을 대체하는 보안 도구.

  • /etc/sudoers로 권한을 세밀하게 제어 가능.

  • 로그가 남아 추적 가능.

  • 권한을 최소화하는 방향으로 설정하는 것이 보안적으로 안전.


댓글