리눅스 sudo 권한 설정법: 일반 사용자에게 안전하게 관리자 권한 부여하기
리눅스 서버를 여러 명이 함께 관리한다면 모든 사용자에게 root 권한을 주는 것은 위험합니다.
서버의 설정 파일을 잘못 수정하거나 중요한 파일을 삭제하면 서비스 장애가 발생할 수 있기 때문입니다.
이럴 때 사용하는 것이 sudo 권한입니다.
sudo를 이용하면 일반 사용자가 필요한 작업에 한해서 관리자 권한으로 명령어를 실행할 수 있습니다.
이번 글에서는 리눅스 sudo 권한의 개념부터 일반 사용자에게 sudo 권한을 부여하는 방법, sudoers 설정, 특정 명령어만 허용하는 방법, 권한 설정 시 주의사항까지 실무 기준으로 알아보겠습니다.
1. sudo란 무엇인가?

sudo는 일반 사용자가 특정 명령어를 다른 사용자의 권한, 일반적으로 관리자 권한으로 실행할 수 있도록 해주는 명령어입니다.
예를 들어 일반 사용자가 서비스를 재시작하려고 하면 권한 부족 오류가 발생할 수 있습니다.
systemctl restart nginx
이때 sudo를 사용하면 다음과 같이 실행할 수 있습니다.
sudo systemctl restart nginx
명령어 실행 과정에서 사용자의 비밀번호를 요구할 수도 있습니다.
즉, sudo는 무조건 root 계정으로 로그인하지 않고도 필요한 관리자 작업을 수행할 수 있도록 해줍니다.
2. root 계정을 직접 사용하는 것과 sudo의 차이
리눅스의 root 계정은 시스템 전체를 관리할 수 있는 최고 권한을 가지고 있습니다.
반면 sudo는 일반 사용자 계정에서 필요한 작업에 관리자 권한을 사용할 수 있도록 합니다.
예를 들어:
root
↓
모든 작업 가능
반면:
일반 사용자
↓
sudo
↓
허용된 관리자 작업
이라는 차이가 있습니다.
서버 운영에서는 일반적으로 필요한 사용자에게 필요한 권한만 부여하는 방식이 더 안전합니다.
3. 현재 사용자가 sudo 권한을 가지고 있는지 확인하기
먼저 현재 로그인한 사용자를 확인합니다.
whoami
예를 들어:
adminuser
라고 나온다고 가정하겠습니다.
현재 사용자가 어떤 sudo 권한을 가지고 있는지 확인하려면:
sudo -l
을 사용할 수 있습니다.
정상적으로 sudo 권한이 있다면 허용된 명령어 목록 등이 표시됩니다.
반대로 다음과 같은 메시지가 나타날 수 있습니다.
user is not in the sudoers file
이 경우 해당 사용자가 sudo를 사용할 수 있도록 권한을 설정해야 합니다.
4. 일반 사용자 계정 만들기
새로운 관리용 계정을 만들고 sudo 권한을 부여하는 경우가 많습니다.
Ubuntu 계열에서는 다음과 같이 사용할 수 있습니다.
sudo adduser adminuser
사용자 생성 과정에서 비밀번호 등을 설정합니다.
사용자가 만들어졌는지 확인합니다.
id adminuser
5. Ubuntu에서 sudo 권한 부여하기
Ubuntu와 Debian 계열에서는 일반적으로 사용자를 sudo 그룹에 추가하는 방법을 많이 사용합니다.
sudo usermod -aG sudo adminuser
여기서 중요한 옵션이 있습니다.
-a
기존 그룹을 유지하면서 추가한다는 의미입니다.
-G
추가할 그룹을 지정합니다.
따라서:
sudo usermod -aG sudo adminuser
은 adminuser를 기존 그룹을 유지하면서 sudo 그룹에 추가하는 명령어입니다.
6. sudo 그룹에 제대로 추가됐는지 확인하기
다음 명령어로 확인할 수 있습니다.
groups adminuser
또는:
id adminuser
결과에 sudo가 포함되어 있다면 그룹 추가가 정상적으로 이루어진 것입니다.
다만 현재 로그인 세션에는 기존 그룹 정보가 남아 있을 수 있습니다.
따라서 로그아웃한 후 다시 로그인하거나 새 세션을 시작해야 변경 사항이 제대로 반영될 수 있습니다.
7. sudo 권한 테스트하기
다시 로그인한 후 다음 명령어를 실행합니다.
sudo whoami
정상적으로 sudo 권한이 있다면:
root
가 출력됩니다.
이것은 sudo whoami 명령이 관리자 권한으로 실행됐다는 의미입니다.
8. Debian 계열에서 sudo 권한 설정하기
Debian에서도 일반적으로 sudo 그룹을 활용할 수 있습니다.
sudo usermod -aG sudo adminuser
그룹을 확인합니다.
id adminuser
이후 새 로그인 세션에서:
sudo whoami
를 실행해 확인합니다.
다만 리눅스 배포판과 설치 환경에 따라 관리자 그룹의 이름이나 기본 sudo 설정이 다를 수 있으므로 실제 서버 환경을 확인하는 것이 중요합니다.
9. CentOS, Rocky Linux, AlmaLinux에서는?
RHEL 계열 배포판에서는 일반적으로 wheel 그룹을 이용하는 방식이 많이 사용됩니다.
예를 들어:
sudo usermod -aG wheel adminuser
이후 로그아웃하고 다시 로그인한 다음:
sudo whoami
로 확인합니다.
결과가:
root
라면 정상적으로 관리자 권한을 사용할 수 있습니다.
10. sudoers 파일이란?
리눅스에서 sudo 권한을 세밀하게 관리할 때 사용하는 중요한 설정 파일이 있습니다.
바로:
/etc/sudoers
입니다.
이 파일에는 어떤 사용자 또는 그룹이 어떤 명령어를 sudo로 실행할 수 있는지에 대한 규칙이 들어 있습니다.
하지만 이 파일을 직접 편집하는 것은 주의해야 합니다.
잘못된 문법을 입력하면 sudo 자체가 정상적으로 작동하지 않을 수 있기 때문입니다.
따라서 일반적으로 다음 명령어를 사용하는 것이 안전합니다.
sudo visudo
11. 왜 visudo를 사용하는가?
visudo는 sudoers 설정을 안전하게 편집하기 위한 도구입니다.
다음과 같이 실행합니다.
sudo visudo
visudo는 저장하기 전에 설정 문법을 검사하는 기능을 제공하기 때문에 일반적인 텍스트 편집기로 /etc/sudoers를 직접 수정하는 것보다 안전합니다.
sudoers 설정을 변경할 때는 가능하면 visudo를 사용하는 습관을 들이는 것이 좋습니다.
12. 특정 사용자에게 sudo 권한 주기
sudoers 파일에서는 특정 사용자에게 권한을 부여하는 규칙을 만들 수 있습니다.
예를 들어:
adminuser ALL=(ALL:ALL) ALL
이 규칙은 adminuser가 sudo를 이용해 관리자 권한으로 명령어를 실행할 수 있도록 하는 형태입니다.
다만 배포판의 기본 설정과 그룹 정책을 함께 고려해야 합니다.
일반적인 서버에서는 직접 사용자별 규칙을 추가하기보다 배포판에서 제공하는 sudo 또는 wheel 그룹 정책을 활용하는 방법이 관리하기 편한 경우가 많습니다.
13. 특정 명령어만 sudo 허용하기
모든 관리자 권한을 주는 것이 부담스럽다면 특정 명령어만 허용하는 방법도 있습니다.
예를 들어 웹서버 담당자에게 Nginx 재시작 권한만 주고 싶다고 가정해보겠습니다.
sudoers에서 다음과 같은 형태의 규칙을 사용할 수 있습니다.
webadmin ALL=(root) /usr/bin/systemctl restart nginx
그러면 해당 사용자가 필요한 서비스 재시작 작업만 수행하도록 제한할 수 있습니다.
이 방법은 최소 권한 원칙을 적용할 때 유용합니다.
14. 특정 명령어만 허용하는 이유
서버 운영에서는 모든 사용자에게 전체 root 권한을 제공할 필요가 없는 경우가 많습니다.
예를 들어:
웹 담당자
→ Nginx 재시작
DB 담당자
→ 특정 DB 관리 명령
모니터링 담당자
→ 상태 확인 명령
처럼 업무에 필요한 권한만 제공할 수 있습니다.
이렇게 하면 잘못된 명령어 실행으로 인해 서버 전체가 영향을 받는 위험을 줄일 수 있습니다.
15. sudo 권한을 제한할 때 주의할 점
여기서 중요한 부분이 있습니다.
단순히 특정 명령어 하나만 허용한다고 해서 항상 안전한 것은 아닙니다.
예를 들어 관리자 권한으로 실행되는 프로그램이 사용자가 임의의 명령어를 실행할 수 있는 기능을 가지고 있다면 사실상 root 권한을 우회할 가능성이 있습니다.
따라서 sudoers 정책을 만들 때는 허용하는 명령어 자체뿐 아니라 해당 프로그램의 실행 방식과 인자 처리까지 함께 검토해야 합니다.
특히 편집기, 셸, 스크립트 실행 프로그램 등은 세심한 검토가 필요합니다.
16. sudo 비밀번호 요구 설정
sudo는 기본적으로 사용자 인증을 요구할 수 있습니다.
예를 들어:
sudo systemctl restart nginx
실행 시 사용자 비밀번호를 요구할 수 있습니다.
보안이 중요한 서버에서는 무분별하게 비밀번호 인증을 비활성화하지 않는 것이 좋습니다.
특정 명령어에 대해 비밀번호 없이 실행하도록 설정하는 NOPASSWD 옵션도 있지만 사용 목적과 보안 위험을 충분히 검토해야 합니다.
예:
adminuser ALL=(root) NOPASSWD: /usr/bin/systemctl restart nginx
이런 설정은 편리하지만 권한이 과도하게 확대되지 않도록 주의해야 합니다.
17. sudo 권한이 제대로 적용되지 않을 때
사용자를 sudo 그룹에 추가했는데도 권한이 적용되지 않는다면 가장 먼저 로그아웃 후 다시 로그인해보세요.
그룹 변경은 현재 로그인 세션에 즉시 반영되지 않을 수 있습니다.
그다음:
id
를 실행합니다.
sudo 또는 해당 배포판의 관리자 그룹이 표시되는지 확인합니다.
그리고:
sudo -l
로 실제 sudo 정책을 확인합니다.
18. sudo 명령어가 없을 때
다음 명령어를 실행했는데:
sudo
명령어를 찾을 수 없다는 오류가 발생할 수도 있습니다.
예:
sudo: command not found
이 경우 sudo 패키지가 설치되어 있지 않을 가능성이 있습니다.
Ubuntu/Debian 계열에서는 패키지 관리자와 시스템 환경에 따라 다음과 같이 설치할 수 있습니다.
apt update
apt install sudo
root 권한이 필요한 작업이므로 이미 root 계정이거나 적절한 관리자 권한이 있는 환경에서 실행해야 합니다.
19. sudo 권한 확인에 유용한 명령어
현재 사용자 확인
whoami
사용자 정보 확인
id
사용자 그룹 확인
groups
특정 사용자 그룹 확인
groups adminuser
sudo 권한 확인
sudo -l
sudoers 안전하게 편집
sudo visudo
sudo 권한으로 명령 실행
sudo 명령어
20. sudo 권한 설정 실전 예제
예를 들어 서버에 webadmin이라는 웹관리자 계정을 만들었다고 가정해보겠습니다.
먼저 사용자를 생성합니다.
sudo adduser webadmin
Ubuntu 계열이라면:
sudo usermod -aG sudo webadmin
RHEL 계열이라면 환경에 따라:
sudo usermod -aG wheel webadmin
그다음 로그아웃하고 webadmin 계정으로 다시 로그인합니다.
권한을 확인합니다.
sudo -l
테스트:
sudo whoami
결과:
root
가 나오면 sudo 사용이 정상적으로 가능한 상태입니다.
21. sudo 권한을 최소화하는 것이 중요한 이유
서버 보안에서 자주 언급되는 원칙이 있습니다.
바로 최소 권한 원칙(Principle of Least Privilege)입니다.
사용자에게 업무에 필요한 권한만 제공하는 것입니다.
예를 들어 단순히 Nginx를 재시작해야 하는 사용자에게 서버 전체 관리자 권한을 줄 필요가 없다면 특정 명령만 허용하는 방식을 고려할 수 있습니다.
전체 root 권한
↓
필요한 권한만 제공
↓
서버 장애 및 보안 위험 감소
물론 실제 권한 정책은 조직의 운영 방식과 보안 요구사항에 따라 결정해야 합니다.
22. sudo 설정 변경 후 반드시 확인하기
sudoers 설정을 변경했다면 반드시 실제 사용자가 명령어를 실행할 수 있는지 테스트하는 것이 좋습니다.
먼저:
sudo -l
그리고 필요한 명령어를 테스트합니다.
예:
sudo systemctl status nginx
허용되지 않은 명령어는 실행되지 않는지도 확인합니다.
이렇게 하면 의도하지 않은 과도한 권한이 부여됐는지 확인할 수 있습니다.
23. sudo 권한 관리 시 피해야 할 실수
① 모든 사용자에게 root 계정 공유
여러 사람이 하나의 root 계정을 공유하면 누가 어떤 작업을 했는지 추적하기 어렵습니다.
가능하면 개인별 계정을 만들고 sudo를 통해 관리하는 것이 좋습니다.
② sudoers 파일을 일반 편집기로 수정
가능하면:
sudo visudo
를 사용하세요.
③ 무조건 ALL 권한 부여
필요하지 않은 사용자에게 전체 관리자 권한을 주지 않는 것이 좋습니다.
④ NOPASSWD를 무분별하게 사용
편리하지만 보안 수준을 낮출 수 있으므로 꼭 필요한 경우에만 검토해야 합니다.
⑤ 관리자 계정의 SSH 보안을 소홀히 하기
sudo 권한이 있는 계정은 특히 강력하게 보호해야 합니다.
24. 리눅스 sudo 권한 설정 핵심 정리
가장 기본적인 사용자 권한 설정은 다음과 같습니다.
Ubuntu 계열:
sudo usermod -aG sudo 사용자명
RHEL 계열:
sudo usermod -aG wheel 사용자명
권한 확인:
sudo -l
관리자 권한 테스트:
sudo whoami
sudoers 편집:
sudo visudo
현재 사용자 확인:
whoami
그룹 확인:
id
마무리
리눅스 서버에서 모든 사용자를 root로 관리하는 것은 편리할 수 있지만 보안과 운영 측면에서는 위험할 수 있습니다.
sudo를 사용하면 일반 사용자에게 필요한 관리자 권한을 부여하면서도 개별 계정으로 작업 기록을 관리하고 권한 범위를 제한할 수 있습니다.
가장 기본적인 방법은 배포판에 맞는 관리자 그룹에 사용자를 추가하는 것입니다.
Ubuntu 계열에서는:
sudo usermod -aG sudo 사용자명
RHEL 계열에서는:
sudo usermod -aG wheel 사용자명
그리고 다음 명령어로 확인할 수 있습니다.
sudo -l
관리자 권한 테스트:
sudo whoami
sudo 설정을 직접 세밀하게 관리해야 한다면:
sudo visudo
를 사용하는 것이 좋습니다.
무엇보다 중요한 것은 "관리자 권한을 줄 것인가?"가 아니라 "얼마만큼의 관리자 권한이 필요한가?"를 먼저 생각하는 것입니다.
서버 운영에서는 필요한 사용자에게 필요한 권한만 제공하는 최소 권한 원칙을 적용하면 실수로 인한 장애와 보안 위험을 줄이는 데 도움이 됩니다.