Quick Reference
whoami
id
id -u
groups
sudo -l
sudo systemctl status nginx
sudoedit /etc/nginx/nginx.conf| 목적 | 명령 |
|---|---|
| 현재 사용자 확인 | whoami |
| UID, GID, 그룹 확인 | id |
| 그룹 목록 확인 | groups |
| 허용된 sudo 권한 확인 | sudo -l |
| 관리자 권한으로 명령 실행 | sudo <command> |
| 안전하게 root 소유 파일 편집 | sudoedit <file> |
권한 모델
Linux 권한은 사용자와 그룹을 기준으로 결정됩니다. 파일은 owner와 group을 갖고, 권한은 owner/group/other에 나뉘어 적용됩니다. 현재 셸이 어떤 사용자와 그룹으로 실행 중인지 모르면 권한 오류를 정확히 판단하기 어렵습니다.
whoami
id
ls -l /var/wwwsudo는 현재 사용자에게 허용된 범위 안에서 다른 사용자, 보통 root 권한으로 명령을 실행합니다. 모든 권한 문제가 sudo로 해결되는 것은 아닙니다. 서비스가 어떤 사용자로 실행되는지, 파일 소유권이 어떤지, 그룹 권한으로 해결할 수 있는지 먼저 확인하는 편이 안전합니다.
실행 중인 권한은 real user 이름만이 아니라 effective UID와 group으로 결정됩니다. id -u와 id -G로 현재 process의 숫자 ID를 확인하고, 다른 service user 권한을 재현해야 하면 무심코 root shell을 열기보다 sudo -u app <command>처럼 대상 사용자를 명시합니다. 사용자를 새 group에 넣어도 이미 열린 shell과 service에는 즉시 반영되지 않아 다시 로그인하거나 service를 재시작해야 할 수 있습니다.
sudo 권한은 정책이다
sudo -l은 현재 사용자가 어떤 명령을 sudo로 실행할 수 있는지 보여 줍니다. 운영 서버에서는 모든 명령을 root로 실행할 수 있게 열어 두기보다, 필요한 명령과 그룹을 제한하는 것이 일반적입니다.
sudo -l
sudo systemctl restart myappsudo는 보통 정책에 따라 환경 변수를 정리합니다. sudo -E나 env_keep은 필요한 변수를 root process에 전달할 수 있으므로, secret·PATH·library path가 섞이는 명령에는 기본값처럼 쓰지 않습니다. sudo 정책을 고칠 때는 문법 오류로 관리자 접근을 잃지 않게 visudo 또는 /etc/sudoers.d/의 검증 흐름을 사용합니다.
sudo -u app id
sudo visudo
sudo visudo -f /etc/sudoers.d/myapp-opsroot 소유 설정 파일을 편집할 때는 sudo vim file보다 sudoedit file을 검토할 수 있습니다. 편집기는 일반 사용자 권한으로 실행하고 저장 단계에서 sudo가 개입하므로, 편집기 플러그인까지 root 권한으로 실행되는 위험을 줄일 수 있습니다.
체크포인트
| 상황 | 먼저 확인 |
|---|---|
| 권한 오류 발생 | whoami, id, ls -l |
| 그룹 권한 의심 | groups |
| sudo 가능 여부 확인 | sudo -l |
| 서비스가 파일을 못 씀 | 서비스 실행 사용자와 파일 소유권 |
| service user 권한으로 재현 | sudo -u <user> <command> |
| root 파일 편집 | sudoedit 검토 |
| 임시로 root shell 필요 | 범위와 종료 시점 명확화 |
주의할 점
습관적으로 sudo를 붙이면 권한 설계 문제를 숨길 수 있습니다.
운영 서비스 파일은 root로 직접 수정하기보다 소유자, 그룹, sudo 정책, 배포 절차를 명확히 두는 편이 안전합니다.
id
systemctl status myapp
ps -o user,pid,cmd -C myapp
ls -ld /var/lib/myapp참고 링크
2 sources