sudo 개요
Linux 시스템에서 root 사용자는 모든 권한을 가집니다. 그러나 모든 작업을 root로 수행하는 것은 실수로 시스템에 치명적인 손상을 입힐 수 있는 위험이 있습니다. `sudo`는 일반 사용자에게 필요한 관리자 권한을 **일시적으로** 부여하여, 보안 위험을 최소화하면서도 시스템 관리가 가능하도록 돕는 중요한 보안 메커니즘입니다.
sudo의 작동 방식
`sudo`는 사용자가 `sudo` 명령어를 실행할 때 비밀번호(자신의 비밀번호, root 비밀번호가 아님)를 요청하고, 이 비밀번호가 올바르면 `sudoers` 파일에 정의된 규칙에 따라 해당 명령어를 root 또는 다른 사용자의 권한으로 실행합니다. 한 번 인증되면 일정 시간 동안(기본 5분) 비밀번호 재입력 없이 `sudo`를 사용할 수 있습니다.
sudo의 주요 역할
- **보안 강화**: 불필요하게 root 계정으로 로그인하는 것을 방지하여 보안 위험을 줄입니다.
- **책임 추적**: `sudo`를 통해 실행된 모든 명령어는 로그로 기록되어, 누가 언제 어떤 관리자 명령을 실행했는지 추적할 수 있습니다.
- **세분화된 권한 제어**: `sudoers` 파일을 통해 특정 사용자나 그룹에게 특정 명령만 root 권한으로 실행할 수 있도록 정교하게 제어할 수 있습니다.
- **비밀번호 재입력 완화**: 한 번 인증되면 일정 시간 동안 비밀번호 없이 `sudo`를 사용할 수 있어 편리합니다.
🔑 sudoers 파일
/etc/sudoers
`sudo`의 모든 권한 설정은 `/etc/sudoers` 파일에 정의됩니다. 이 파일은 매우 민감하므로 **반드시 `visudo` 명령어를 사용하여 편집해야 합니다.** `visudo`는 구문 오류를 자동으로 검사하여, 잘못된 설정으로 인해 `sudo` 기능이 마비되는 것을 방지합니다.
주요 sudo 명령어 옵션
`sudo` 명령어는 권한 상승 외에도 다양한 옵션을 통해 실행 방식을 제어할 수 있습니다.
1. 기본 사용법
2. 사용자 및 쉘 관련 옵션
3. 인증 및 목록 관련 옵션
생성된 명령어:
명령어를 조합해 보세요.
설명:
`sudo` 명령어를 실행합니다.
위 옵션들을 조합하여 AI와 함께 가상으로 명령어를 실행해 보세요.
sudoers 파일 설정 (visudo 사용)
`sudo` 권한은 `/etc/sudoers` 파일에 의해 제어됩니다. 이 파일을 직접 수정하는 대신 `visudo` 명령어를 사용하여 안전하게 편집해야 합니다. `visudo`는 문법 오류를 체크하여 `sudo` 기능을 깨뜨리는 것을 방지합니다.
sudoers 파일 편집
sudo visudo
루트 권한으로 `sudoers` 파일을 안전하게 편집합니다. 기본 편집기는 `vi`일 수 있습니다.
sudoers 파일의 일반적인 형식
`sudoers` 파일의 항목은 `User Host=(RunAs) NOPASSWD: Command` 형식으로 정의됩니다. 가장 일반적인 설정은 특정 그룹에 속한 사용자에게 모든 명령에 대한 `sudo` 권한을 부여하는 것입니다.
예시 설정
다음은 `sudoers` 파일 내에서 자주 볼 수 있는 설정 예시입니다.
- `%sudo ALL=(ALL:ALL) ALL`: `sudo` 그룹에 속한 모든 사용자가, 어떤 호스트에서든(ALL), 모든 사용자(ALL)와 그룹(ALL)의 권한으로, 모든 명령어(ALL)를 실행할 수 있도록 허용합니다. (비밀번호 필요)
- `username ALL=(ALL) NOPASSWD: /usr/bin/apt update`: `username` 사용자가 비밀번호 입력 없이 `apt update` 명령어만 root 권한으로 실행할 수 있도록 허용합니다.
사용 예시
`sudo` 명령어의 다양한 활용 예시들을 통해 관리자 권한으로 시스템 작업을 수행하는 방법을 익혀보세요.
시스템 패키지 업데이트
sudo apt update
시스템의 패키지 목록을 업데이트하는 명령은 관리자 권한이 필요하므로 `sudo`를 사용합니다.
특정 디렉토리에 파일 복사
sudo cp my_config.conf /etc/
일반적으로 쓰기 권한이 없는 `/etc/` 디렉토리에 `my_config.conf` 파일을 복사합니다.
다른 사용자로 명령어 실행
sudo -u www-data ls /var/www/html
`www-data` 사용자(주로 웹 서버 프로세스)의 권한으로 `ls /var/www/html` 명령어를 실행하여 해당 사용자의 파일 접근 권한을 테스트합니다.
root 쉘로 전환
sudo -i
현재 사용자의 비밀번호를 입력하여 root 사용자의 환경으로 완전히 전환된 쉘을 얻습니다. 작업을 마친 후에는 `exit`를 입력하여 원래 사용자로 돌아올 수 있습니다.
현재 사용자 sudo 권한 확인
sudo -l
현재 로그인된 사용자가 `sudo`를 통해 어떤 명령어를 실행할 수 있는지, 비밀번호가 필요한지 등을 확인합니다.