리눅스 사용자 권한관리: sudo와 su의 이해
리눅스 시스템에서 관리자 권한이 필요한 작업을 수행할 때 사용하는 두 가지 주요 도구가 있습니다. 바로 sudo
와 su
입니다. 이 두 도구는 비슷해 보이지만 사용 목적과 보안 측면에서 중요한 차이가 있습니다.
su (Switch User)
su
명령어는 다른 사용자 계정으로 전환할 때 사용합니다. 주로 일반 사용자에서 root 계정으로 전환하는 데 사용됩니다.
# root로 전환 (root 암호 필요)
su -
# 특정 사용자로 전환
su - username
su의 특징
- root 암호가 필요함
- 전체 로그인 세션이 전환됨
- 환경 변수가 완전히 바뀜
- 모든 권한을 얻게 됨
sudo (Superuser Do)
sudo
는 현재 사용자 계정을 유지한 채로 특정 명령어만 관리자 권한으로 실행합니다.
# 파일 편집
sudo vi /etc/nginx/nginx.conf
# 서비스 재시작
sudo systemctl restart nginx
# sudo 권한을 가진 사용자 확인
sudo -l
sudo의 장점
- 세분화된 권한 제어
/etc/sudoers
파일을 통해 사용자별로 실행 가능한 명령어를 제한할 수 있습니다.- 특정 디렉토리나 명령어에 대한 접근만 허용 가능합니다.
- 보안성
- root 암호를 공유할 필요가 없습니다.
- 사용자 본인의 암호를 사용합니다.
- 명령어 실행 기록이 남습니다.
권장 사용법
sudo 사용이 권장되는 경우
- 특정 관리 작업만 수행할 때
- 여러 관리자가 시스템을 관리할 때
- 명령어 실행 기록을 남겨야 할 때
su 사용이 필요한 경우
- 전체 root 세션이 필요한 경우
- 복잡한 관리 작업을 연속해서 수행할 때
- 다른 사용자의 환경에서 문제를 해결해야 할 때
보안 설정 예시
/etc/sudoers 설정
# 사용자에게 특정 명령어만 허용
user1 ALL=(ALL) /usr/bin/apt update, /usr/bin/apt upgrade
# 그룹에 sudo 권한 부여
%admin ALL=(ALL) ALL
# 암호 없이 특정 명령어 실행 허용
user2 ALL=(ALL) NOPASSWD: /usr/sbin/apache2ctl
적절한 권한 관리는 시스템 보안의 기본입니다. sudo
를 기본으로 사용하고, 꼭 필요한 경우에만 su
를 사용하는 것이 좋은 관리 방법입니다.
댓글남기기