Linux에서 sudo 사용법 및 권한 설정

sudo는 특정 명령어에 대해 일시적인 관리자 권한을 부여하고, 실행 기록을 남기는 도구입니다. 이 접근 방식은 시스템 보안을 강화하면서도 일반 사용자가 필요한 작업을 수행할 수 있도록 돕습니다.

1. su와의 차이점

Ubuntu 등 일부 리눅스 배포판은 설치 후 기본적으로 root 계정을 활성화하지 않습니다. su 명령을 통해 root 계정으로 전환하려면 먼저 passwd 명령으로 암호를 설정해야 합니다. 이후 su를 실행하고 설정한 비밀번호를 입력하면 root 세션에 진입할 수 있습니다. 작업 완료 후 exit로 일반 사용자로 돌아갑니다.

2. sudo의 인증 메커니즘

sudo는 매번 비밀번호를 입력해야 하며, 성공적으로 인증한 후 5분간 유효합니다. 이 기간 동안 추가 명령을 실행할 때 다시 비밀번호를 묻지 않습니다.

3. 권한 설정 파일: /etc/sudoers

이 파일은 root만 수정할 수 있으며, 편집 시 반드시 visudo 명령을 사용해야 합니다. 잘못된 문법은 시스템이 불안정해질 수 있으므로 주의가 필요합니다.

## Sudoers allows particular users to run various commands as
## the root user, without needing the root password.
## 특정 사용자가 루트 권한으로 다양한 명령을 실행할 수 있도록 허용

## Host Aliases
## 여러 머신 그룹을 정의 가능
# Host_Alias WEB_SERVERS = web1, web2, *.example.com

## User Aliases
## 사용자 그룹을 정의 (예: %developers)
# User_Alias DEVELOPERS = alice, bob

## Command Aliases
## 관련된 명령어들을 묶어 별칭으로 정의
# Cmnd_Alias NETWORKING = /sbin/ip, /sbin/iptables, /usr/bin/ping, /sbin/route
# Cmnd_Alias SYSTEM = /sbin/shutdown, /sbin/reboot, /usr/bin/systemctl

## Defaults 설정
Defaults    requiretty
Defaults    env_reset
Defaults    env_keep += "PATH LANG LC_*"
Defaults    secure_path = /sbin:/bin:/usr/sbin:/usr/bin

## 권한 규칙 정의
## 형식: 사용자 | 그룹 @ 호스트=(대상사용자) 명령어
root    ALL=(ALL)     ALL

## wheel 그룹 사용자에게 모든 명령어 허용
%wheel  ALL=(ALL)    ALL

## 특정 사용자에게 루트 권한 부여 (비밀번호 없이도 가능)
testuser    ALL=(root)    NOPASSWD: ALL

## 특정 그룹에 일부 명령어만 허용
%admins  localhost=(ALL)    NETWORKING, SYSTEM

4. 일반 사용자에게 sudo 권한 부여

권한을 부여하려면 visudo 명령어로 파일을 열고 다음 구문을 추가합니다:

alice   ALL=(ALL)       ALL
%devs    ALL=(root)        NOPASSWD: /usr/bin/git, /usr/bin/npm

5. 주요 옵션 설명

  • -b: 백그라운드에서 명령 실행
  • -h: 도움말 출력
  • -H: 홈 디렉터리를 새 사용자의 것으로 설정
  • -i: 대상 사용자로 로그인 쉘 시작
  • -k: 현재 세션의 비밀번호 유효성을 종료
  • -l: 현재 사용자가 실행 가능한 명령 목록 표시
  • -p: 비밀번호 입력 시 표시되는 프롬프트 변경
  • -s <shell>: 지정된 쉘로 실행
  • -u <user>: 특정 사용자로 명령 실행
  • -v: 비밀번호 유효 시간을 5분 연장
  • -V: sudo 버전 정보 출력

태그: sudo linux 권한관리 visudo /etc/sudoers

7월 6일 19:42에 게시됨