◎ 배경 및 개요
- 리눅스에서 관리자 권한이 필요한 작업은 생각보다 자주 발생합니다.
- 패키지 설치, 서비스 재시작, 설정 파일 수정처럼 시스템 전반에 영향을 주는 작업은 일반 사용자 권한으로는 수행하기 어렵기 때문에 su와 sudo 같은 권한 상승 도구가 필요합니다.
- 두 명령은 겉보기에는 비슷해 보이지만, 실제로는 철학이 다릅니다.
- su는 사용자를 다른 계정으로 전환하는 방식이고, sudo는 현재 계정 상태를 유지한 채 필요한 명령만 임시로 다른 권한으로 실행하는 방식입니다.
- 이 차이는 단순한 편의성 문제가 아니라 보안 정책과 운영 방식 전체에 영향을 줍니다.
- 특히 서버 운영 환경에서는 누구에게 어떤 권한을 얼마나 허용할 것인지가 중요하기 때문에, 두 명령의 성격을 정확히 이해해 두시는 편이 좋습니다.
◎ 주요 변경 사항
- 전통적으로 su는 root 계정으로 전환해 셸 전체를 관리자 권한으로 사용하는 데 많이 쓰였습니다.
- 반면 sudo는 특정 명령만 관리자 권한으로 실행하도록 설계되어, 권한 부여를 더 세밀하게 통제할 수 있게 해 주었습니다.
- 운영 관점에서 가장 큰 변화는 “root 비밀번호 공유” 중심에서 “사용자별 권한 위임” 중심으로 이동했다는 점입니다.
- sudo는 /etc/sudoers를 통해 사용자 또는 그룹 단위로 실행 가능한 명령을 제한할 수 있고, 실행 기록도 남길 수 있어 감사와 추적에 유리합니다.
- 또한 많은 배포판과 보안 가이드에서는 기본적으로 sudo 사용을 권장합니다.
- 이는 root 계정을 직접 장시간 사용하는 방식보다, 필요한 순간에만 권한을 올리는 방식이 사고 범위를 줄이기 때문입니다.
◎ 상세 기능 설명
- su는 “switch user” 또는 “substitute user”의 의미로, 다른 사용자 계정으로 전환하는 명령입니다.
- 인자 없이 su를 실행하면 보통 root로 전환되며, 이때는 전환 대상 계정의 비밀번호가 필요합니다.
- su -는 단순 전환보다 한 단계 더 나아가 로그인 셸에 가까운 환경을 구성합니다.
- 즉, 대상 사용자의 환경 변수, 홈 디렉터리, 초기 설정을 함께 적용하므로, 실제로 그 사용자로 새로 로그인한 것에 가까운 상태가 됩니다.
- sudo는 “superuser do” 또는 “substitute user do”로 이해할 수 있으며, 현재 사용자 신원을 유지한 채 지정한 명령만 다른 권한으로 실행합니다.
- 예를 들어 sudo apt update처럼 사용하면, 셸 전체가 root로 바뀌는 것이 아니라 해당 명령 하나에만 권한이 부여됩니다.
- sudo는 기본적으로 현재 사용자의 비밀번호를 요구하며, 인증 후 일정 시간 동안은 재입력을 생략할 수 있습니다.
- 반대로 su는 전환 대상 계정의 비밀번호가 필요하므로, root 비밀번호를 아는 사람이 곧바로 강한 권한을 얻게 되는 구조입니다.
◎ 기획 의도/기술적 개선
- sudo가 널리 채택된 이유는 최소 권한 원칙을 구현하기 쉽기 때문입니다.
- 운영자는 사용자가 필요한 작업만 할 수 있게 하고, 그 외 시스템 변경은 막을 수 있으므로 보안 사고의 범위를 줄일 수 있습니다.
- 또 하나의 개선점은 감사 가능성입니다.
- sudo는 어떤 사용자가 언제 어떤 명령을 실행했는지 기록하기 쉬워, 장애 분석이나 보안 점검 시 추적성이 좋습니다.
- 반면 su는 셸 자체를 넘겨주는 성격이 강해서, 세부적인 명령 단위 통제가 상대적으로 약합니다.
- 기술적으로 보면 su는 “세션 전환” 중심이고, sudo는 “권한 위임” 중심입니다.
- 이 차이 덕분에 현대 서버 환경에서는 root 계정 공유를 줄이고, 사용자별 책임을 분리하며, 필요한 범위만 허용하는 운영이 가능해졌습니다.
◎ 사용방법/가이드
- 가장 기본적인 사용법은 다음과 같습니다.
- su는 다른 사용자로 전환할 때 사용하고, sudo는 특정 명령을 관리자 권한으로 실행할 때 사용하시면 됩니다.
- 예시는 아래와 같습니다.
- su : root로 전환합니다.
- su - : root의 로그인 환경으로 전환합니다.
- su - 사용자명 : 해당 사용자로 전환합니다.
- sudo 명령어 : 해당 명령만 root 권한으로 실행합니다.
- sudo -u 사용자명 명령어 : 특정 사용자 권한으로 명령을 실행합니다.
- sudo -i : root 로그인 셸에 가까운 환경으로 진입합니다.
- 실무에서는 다음 흐름으로 기억하시면 편합니다.
- “잠깐 한 번만 권한이 필요하면 sudo, 작업 전체를 다른 사용자 맥락에서 진행해야 하면 su -”라고 보시면 됩니다.
- 또한 sudo를 설정할 때는 visudo를 통해 수정하는 것이 안전합니다.
- sudoers 파일은 문법 오류가 나면 권한 관리가 꼬일 수 있으므로, 검증 기능이 있는 방식으로 편집하는 것이 권장됩니다.
◎ 기대효과 및 주의사항
- sudo를 중심으로 운영하면 root 비밀번호를 직접 공유하지 않아도 되므로 보안성이 높아집니다.
- 또한 명령별로 권한을 제한할 수 있어, 불필요한 관리자 접근을 줄이고 변경 이력을 남기기 쉽습니다.
- 반면 su는 편리하지만, root 셸에 오래 머무를수록 실수의 위험이 커집니다.
- 특히 삭제, 권한 변경, 설정 파일 수정처럼 되돌리기 어려운 작업은 root 세션에서 한 번의 오타로도 큰 장애를 만들 수 있으니 주의가 필요합니다.
- 주의하실 점도 있습니다. sudo는 설정에 따라 허용된 명령만 실행되므로, 모든 작업이 가능하다고 생각하시면 안 됩니다.
- 반대로 su는 계정 전환 자체가 강력하므로, 공유 서버나 다수 운영자 환경에서는 권한 남용과 책임 추적 문제를 더 신중하게 보셔야 합니다.
◎ 정리
- su는 “다른 사용자로 들어가는 방식”, sudo는 “현재 사용자로 남아 필요한 명령만 올리는 방식”이라고 이해하시면 가장 빠릅니다.
- 실무와 보안 측면에서는 대체로 sudo가 더 권장되며, su는 로그인 셸이 필요한 경우나 특정 작업 흐름에서 보조적으로 쓰는 편이 적절합니다.
- 두 명령의 차이를 정확히 알면 리눅스 권한 관리가 훨씬 선명해집니다.
- 특히 서버 운영, 장애 대응, 침해 대응 환경에서는 “어떤 권한이 얼마나 오래 유지되는가”를 이해하는 것만으로도 실수를 크게 줄이실 수 있습니다.
'IT > Linux' 카테고리의 다른 글
| [Linux] CachyOS Linux 7.0 kernel 살펴보기 (0) | 2026.04.21 |
|---|---|
| [Linux] 디지털 포렌식과 사고 대응을 위한 휴대형 DFIR 라이브 환경 DRIFT Linux (1) | 2026.04.17 |
| [Linux] Linux Kernel 7.0 Released 정리 (0) | 2026.04.15 |
| [Linux] Hack The Box edition based on Parrot 7.1 (0) | 2026.03.31 |
| [Linux] Kali Linux 2026.1 릴리스 (0) | 2026.03.25 |








