root 대신 사용자와 sudo
작업용 사용자를 만들고 sudo를 부여하며 SSH 키를 옮기고, 서버에 root로 로그인하는 것을 그만두는 방법을 설명해요.
업데이트 2026년 8월 23일
머신에는 완전한 root 권한이 있고, 첫 본능은 계속 root로 작업하는 거예요. rm -rf에서 오타 한 번 나기 전까지는 편하죠. 실제로 잘 돌아가는 구성은 다릅니다. 일상적인 작업은 일반 사용자로, root는 sudo를 통해 정말 필요할 때만 쓰는 거예요.
사용자 만들기
Debian과 Ubuntu:
adduser artem
usermod -aG sudo artem
AlmaLinux와 CentOS Stream:
adduser artem
passwd artem
usermod -aG wheel artem
그룹이 다릅니다. Debian 계열은 sudo, RHEL 계열은 wheel이에요. 권한을 확인해 보세요:
sudo -l -U artem
SSH 키 옮기기
제어판 /hosting/vds/m/<id>의 "Access" 탭에서 추가한 키는 root 사용자에게 들어가요. 새 사용자를 위해 직접 배치해야 합니다:
mkdir -p /home/artem/.ssh
cp /root/.ssh/authorized_keys /home/artem/.ssh/
chown -R artem:artem /home/artem/.ssh
chmod 700 /home/artem/.ssh
chmod 600 /home/artem/.ssh/authorized_keys
여기서 권한은 형식이 아니에요. 너무 느슨하면 sshd가 키를 조용히 거부해 버립니다.
현재 창을 닫지 않은 채 별도의 터미널 창에서 새 사용자로 로그인할 수 있는지 확인하세요:
ssh artem@<address>
sudo whoami
확인에 성공한 뒤에만 root 로그인 비활성화로 넘어가세요.
sudo 사용법
sudo systemctl restart nginx
sudo -i
sudo -u www-data ls /var/www
sudo -i는 완전한 root 셸을 줍니다. 일련의 명령을 실행할 때 쓰는 것이지, 계속 작업할 때 쓰는 게 아니에요. sudo를 호출할 때마다 로그에 기록되고, 그게 바로 사건을 조사할 때의 흔적이 됩니다:
journalctl -t sudo -n 50
grep sudo /var/log/auth.log
로그에 대한 더 자세한 내용은 머신에 로그인한 사람을 참고하세요.
서비스 권한
또 다른 흔한 실수는 "잘 돌아가게 하려고" 애플리케이션을 root로 실행하는 거예요. 각 서비스마다 셸이 없는 시스템 사용자를 만드세요:
useradd --system --no-create-home --shell /usr/sbin/nologin appsrv
chown -R appsrv:appsrv /opt/app
그러면 애플리케이션의 취약점이 생겨도 공격자에게 머신 전체를 한 번에 넘겨주지 않습니다.
흔한 실수
| 실수 | 원인 | 해결 |
|---|---|---|
artem is not in the sudoers file | 그룹에 없거나 다시 로그인하지 않음 | usermod -aG sudo artem, 다시 로그인 |
| 키가 허용되지 않음 | .ssh 권한이 700보다 넓거나 소유자가 root | 위와 같이 chown과 chmod |
| sudo 비밀번호가 작동하지 않음 | 사용자에게 비밀번호가 설정되지 않음 | passwd artem |
| sudoers를 편집하다 sudo가 망가짐 | 파일의 구문 오류 | visudo만 사용, 복구 모드로 복구 |
/etc/sudoers는 반드시visudo명령으로만 편집하세요. 저장 전에 구문을 검사해 줍니다. 망가진 파일은 모든 사람에게서 한 번에 sudo를 빼앗아 가요.