오늘은 서버 작업을 하다가 관리자 권한이 필요할 때 사용하는 명령어 sudo, su, su -에 대해 알아보겠습니다.
1. sudo
: sudo는 Substitute User Do의 약자
현재 로그인한 내 계정 상태를 유지하면서, 특정 명령만 '관리자(root)'의 이름으로 실행하는 방식입니다.
가장 권장되는 방식으로, 일반 사용자가 자신의 비밀번호를 입력하고 "이 명령 하나만 관리자 권한으로 실행할게"라고 요청하는 것입니다.
* 장점: root 비번을 공유할 필요가 없고, 누가 어떤 명령을 썼는지 로그가 남습니다.
* 특징: 실행 후에도 여전히 내 홈 디렉토리에 머뭅니다.
* 비밀번호: 본인 계정
2. su
: su는 Substitute User의 약자
단순히 사용자만 root로 바꾸고, 내 원래 환경 설정(PATH 등)을 그대로 가져갑니다.
* 문제점: root 권한은 가졌지만, root가 쓰는 전용 관리 도구들의 경로가 설정되지 않아 명령어가 실행되지 않는 경우가 많습니다.
ex) command not found
* 비밀번호 : 관리자 계정
3. su -
: 뒤에 붙은 하이픈(`-`)이 핵심입니다. 이건 단순히 이름만 바꾸는 게 아니라, root 계정으로 새로 로그인하는 것과 같습니다.
* 특징: 현재 경로도 root의 홈인 `/root`로 이동하고, 모든 환경 변수가 root의 설정으로 바뀝니다. 관리자의 PATH(명령어 경로)를 그대로 가져오므로 모든 관리 도구를 바로 쓸 수 있습니다.
관리 작업을 제대로 수행하려면 `su`보다는 `su -`를 써야 합니다.
* 비밀번호: root 계정의 비밀번호를 입력합니다.
4. 정리
| 구분 | sudo | su | su - |
| 의미 | 명령 하나만 권한 빌리기 | 사용자만 root로 변경 | root로 완전히 로그인 |
| 비밀번호 | 내 계정 비번 | root 비번 | root 비번 |
| 현재 위치 | 변함없음 | 변함없음 | root 홈(/root)으로 이동 |
| 환경 변수 | 내 설정 유지 | 내 설정 유지 (위험!) | root 설정으로 초기화 |
* 단일 명령을 실행할 때: sudo
* 잠시 root 권한을 얻고 싶을 때: su
* 환경 설정까지 완벽하게 root가 되고 싶을 때: su -
*참고: `su` 계열을 쓰려면 root 계정의 비밀번호가 설정되어 있어야 합니다. 우분투 같은 배포판은 기본적으로 root 비번이 없으므로 `sudo`를 주로 사용하게 됩니다.

'DevOps > Linux' 카테고리의 다른 글
| [Jenkins] Gitea 연결: 내 프로젝트를 Jenkins로 가져오는 법 (0) | 2026.03.04 |
|---|---|
| [Linux]Rocky9.4 Jenkins 설치 및 설정 가이드 (0) | 2026.03.04 |
| [Linux] Apache Tomcat 9 설치 및 시스템 서비스 등록 (0) | 2026.03.03 |
| [Linux] ip 변경 - nmtui (0) | 2026.03.03 |
| [Hyper-V] hv_balloon: balloon request will be partially fulfilled 오류 해결법 (0) | 2026.03.03 |
