리눅스 sudo 권한 설정 (sudoers, visudo, NOPASSWD)
root로 직접 로그인해서 작업하는 것은 편하지만 위험하다. 실수 한 번이 서버 전체에 영향을 주고, 누가 무엇을 했는지 기록도 남지 않는다. 그래서 일반 계정으로 로그인하고 필요할 때만 sudo로 관리자 권한을 빌려 쓴다. 이 글에서는 sudo 권한 설정 방법을 사용자 추가부터 sudoers 파일, 특정 명령만 허용하기까지 정리한다. 사용자 생성은 리눅스 사용자 관리에 먼저 정리해 두었다.

sudo 권한 설정 가장 쉬운 방법: 그룹에 추가
# Ubuntu / Debian: sudo 그룹
sudo usermod -aG sudo deploy
# Rocky / RHEL 계열: wheel 그룹
sudo usermod -aG wheel deploy
# 다시 로그인한 뒤 확인
groups deploy
sudo -l-aG에서 -a를 빼먹으면 기존 그룹에서 빠져 버리니 주의하자. sudo -l은 내가 sudo로 무엇을 실행할 수 있는지 보여 준다.
sudoers 파일은 visudo로만 고친다
sudo로 실행할 수 있는 명령과 파일 자체의 접근 권한은 별개다. chmod와 chown의 의미는 리눅스 파일 권한에서 함께 확인하자.
sudo 규칙은 /etc/sudoers와 /etc/sudoers.d/ 아래 파일에 들어 있다. 이 파일에 문법 오류가 있으면 sudo 자체가 동작하지 않아, root 비밀번호가 없는 서버에서는 관리자 권한을 잃을 수 있다. 그래서 반드시 저장할 때 문법을 검사해 주는 visudo로 고친다.
# 본 파일 대신 별도 파일로 추가하는 것을 권장
sudo visudo -f /etc/sudoers.d/deploy
# 문법 검사만
sudo visudo -csudo 권한 설정 규칙 읽는 법
# 사용자 호스트=(실행 계정) 명령
root ALL=(ALL:ALL) ALL
%sudo ALL=(ALL:ALL) ALL
deploy ALL=(root) /usr/bin/systemctl restart myapp| 부분 | 뜻 |
|---|---|
| deploy / %sudo | 대상 사용자 / 그룹(%로 시작) |
| ALL= | 모든 호스트에서 |
| (root) 또는 (ALL:ALL) | 어떤 계정 권한으로 실행할지 |
| 마지막 칸 | 허용할 명령(절대 경로) |
특정 명령만, 비밀번호 없이 허용하기
배포 스크립트나 crontab처럼 사람이 비밀번호를 입력할 수 없는 경우에는 꼭 필요한 명령만 NOPASSWD로 허용한다. 전체 권한에 NOPASSWD를 주는 것은 피하자.
# /etc/sudoers.d/deploy (visudo -f 로 편집)
deploy ALL=(root) NOPASSWD: /usr/bin/systemctl restart myapp, /usr/bin/systemctl status myapp명령은 반드시 절대 경로로 쓴다. which systemctl로 경로를 확인할 수 있다. 서비스 등록은 systemd 서비스 만들기에 정리했다.
sudo -i, sudo -s, sudo su 차이
| 명령 | 동작 |
|---|---|
sudo 명령 | 명령 하나만 root 권한으로 실행(권장) |
sudo -i | root 로그인 셸(root의 환경과 홈 디렉터리) |
sudo -s | 현재 환경을 유지한 root 셸 |
sudo -u www-data 명령 | 다른 계정 권한으로 실행 |
root 셸에 오래 머물수록 실수 가능성이 커진다. 가능하면 명령 단위로 sudo를 붙이자. sudo는 보안상 환경 변수를 대부분 지운다는 점은 리눅스 환경 변수 설정에서도 다뤘다.
기록 확인
# Ubuntu / Debian
sudo grep sudo /var/log/auth.log | tail
# Rocky / RHEL
sudo grep sudo /var/log/secure | tail
# journald
sudo journalctl _COMM=sudo --since today누가 언제 어떤 명령을 sudo로 실행했는지 남는다. 규칙 문법 전체는 sudoers 공식 매뉴얼에 있다.
sudo 권한 설정 정리
일반 계정 + sudo 그룹으로 시작하고, 자동화가 필요한 곳에만 특정 명령을 NOPASSWD로 허용하고, 규칙은 항상 visudo로 고친다. 이 세 가지만 지키면 sudo 때문에 서버가 잠기거나 권한이 새는 일을 막을 수 있다. 워드프레스 쪽 보안은 전날 글인 워드프레스 보안 설정에 있다.
첫 댓글을 남겨보세요