sudo (Substitute User Do)
sudo는 보안된 시스템 권한(주로 관리자 계정인 root)으로 명령어를 실행할 수 있게 해주는 도구입니다. 로그아웃 없이 일시적으로 관리자 권한을 빌려 쓰는 개념으로, 현대 리눅스 시스템 관리의 표준입니다.
[Image of a shield and a user icon representing administrative privilege elevation]
1. 기본 사용법
sudo [명령어]
- 명령어를 입력하면 현재 로그인한 내 계정의 비밀번호를 물어봅니다. (root 비밀번호가 아님에 주의하세요!)
- 한 번 인증하면 일정 시간 동안은 다시 묻지 않습니다.
2. 주요 옵션
| 옵션 | 이름 | 설명 |
|---|---|---|
-u |
user | root가 아닌 특정 사용자의 권한으로 명령어를 실행합니다. |
-i |
login | 관리자(root) 환경 변수를 포함한 대화형 셸로 전환합니다. |
-s |
shell | 현재 환경 변수를 유지하며 관리자 셸을 실행합니다. |
-v |
validate | sudo 인증 유효 시간을 업데이트(갱신)합니다. |
-l |
list | 내가 sudo를 통해 실행할 수 있는 명령어 목록을 보여줍니다. |
3. 실무 활용 예시
① 시스템 업데이트 (가장 흔한 사용법)
일반 사용자는 시스템 파일을 건드릴 수 없으므로 sudo가 필수입니다.
sudo apt update && sudo apt upgrade
② 특정 사용자의 권한으로 명령어 실행
'www-data'라는 웹 서버 계정 권한으로 스크립트를 실행하고 싶을 때:
sudo -u www-data php script.php
③ 관리자 권한으로 파일 수정하기
sudo nano /etc/hosts
4. [중요] sudo vs su
- su: root 계정의 비밀번호를 알아야 하며, 계정 자체를 완전히 바꿉니다.
- sudo: 내 비밀번호를 사용하며, 특정 명령어만 관리자 권한을 '빌려서' 씁니다. 누가 어떤 명령을 썼는지 로그가 남기 때문에 보안상 훨씬 권장됩니다.
5. [팁] "With great power comes great responsibility"
sudo를 실행할 때 가끔 나오는 문구입니다. "큰 힘에는 큰 책임이 따른다"는 뜻으로, 시스템을 파괴할 수도 있는 명령어이므로 신중하게 사용하라는 경고입니다.