Page tree

Contents


서두에서 말했듯이 최소 권한 규칙에 의거하여 root 로 로그인하는 것은 차단하고 root 권한이 필요할 경우에만 sudo 명령어를 사용하여 제한적으로 실행하는 것이 시스템의 안정성과 보안 측면에서 좋은 습관입니다.


이 때문에 우분투나 아마존 리눅스등은 설치 과정에서 생성하는 일반 사용자에 대해 sudo 명령어 실행할수 있는 권한을 부여하고 있습니다.


sudo 를 사용할 수 있는 사용자와 권한 설정은 /etc/sudoers 파일에 지정하며 보안을 위해 이 파일은 루트만 읽을 수 있고 루트도 쓸수 없도록 되어 있습니다. 


sudoers 파일을 편집하기 위해 chmod 명령로 쓰기 권한을 주는 것은 실수로 root 외의 사용자에게도 쓰기 권한을 줄 수 있으므로 보안상 좋은 방법이 아니며 편집 전용 명령어인 visudo 를 사용하는 것이 권장하는 방법입니다.

일반 편집기로 /etc/sudoers 파일을 편집할 경우 실수로 잘못된 구문이 있을 경우 sudo 로 권한 상승이 불가능합니다. visudo 는 저장시 구문 검사를 수행하므로 잘못된 구문으로 인한 문제를 해결할 수 있습니다.


visudo 를 제대로 사용하려면 에디터 환경 변수를 지정해 주어야 합니다. 다음 명령어로 사용할 에디터를 지정하거나 또는 쉘의 초기화 파일(예: .bash_profile, .zshrc)에 넣고 source 명령어로 쉘 초기화 파일을 로딩해 주세요.

$ export EDITOR=vim

우분투 리눅스의 경우 다음 명령어로 visudo 에 사용할 EDITOR 를 설정합니다.

sudo update-alternatives --config editor



이제 sudo visudo 명령으로 /etc/sudoers 파일을 열어 봅시다.

sudoers 파일의 형식은 다음과 같습니다.

계정명 호스트명=(실행 계정명) [NOPASSWD:] 명령어
항목의미
계정명명령어 실행 권한을 줄 계정명이나 그룹명. 모두에게 줄 경우 ALL
호스트실행할 대상 서버명이나 IP. 모든 서버가 대상이라면 ALL
실행 계정명명령어를 실행할 때 어떤 계정의 권한을 갖는지 설정하며 생략시 root 로 실행
NOPASSWD설정할 경우 명령어를 실행할 때 계정 암호를 물어보지 않음.
명령어실행을 허용하는 명령어의 경로. ALL 일 경우 모든 명령어를 허용
sudoers 파일 필드 의미

예를 들어 ec2-user 만 shutdown 을 허용할 경우 아래와 같은 내용을 추가합니다.

ec2-user ALL=(ALL) /sbin/shutdown
shutdown 명령어 허용


다음은 ec2-user 에게 root 계정의 권한이 필요한 모든 명령어 실행을 허용하는 예입니다.

ec2-user ALL=(ALL) ALL
모든 권한 허용

그룹일 경우 그룹명 앞에 %를 붙여서 설정하면 이 경우 해당 그룹에 속한 사용자는 모두 root 권한으로 명령어를 실행할 수 있게 되며 아래는 wheel 그룹을 대상으로 권한을 부여하는 예제입니다.

%wheel ALL=(ALL) ALL
wheel 그룹에 권한 부여


다음은 아마존 클라우드에서 생성한 우분투 인스턴스의 sudoers 파일입니다.

# 사용자 권한 기술
root ALL=(ALL:ALL) ALL

# admin 그룹의 구성원은 root 권한 획득 가능
%admin ALL=(ALL) ALL


# sudo 그룹의 구성원은 모든 명령어 실행 가능
%sudo ALL=(ALL:ALL) ALL
AWS 우분투 설정


위 설정은 root 는 모든 명령이 가능하고 %sudo 그룹에 속한 사용자는 sudo 로 모든 명령어를 실행할 수 있음을 나타냅니다.

어떤 그룹이 sudo 실행 권한이 있는지는 배포판마다 조금씩 다르며 우분투는 sudo,  아마존 리눅스와 CentOS 의 경우 wheel 그룹에 속한 사용자여야 합니다.


CentOS 의 경우 설치시 처음 생성한 계정이 wheel 그룹이 아니기 때문에 sudo 권한이 없으므로 다음과 같은 방법으로 사용자에게 권한을 부여해야 합니다.


1. 사용자를 wheel 그룹에 포함

sudo 를 부여할 사용자(예: ec2-user ) 의 추가 그룹을 wheel 로 변경합니다.

$ sudo usermod -a -G wheel ec2-user

이제 해당 사용자는 로그 오프하고 다시 로그인하면 sudo 명령어를 사용할 수 있습니다.


2. sudoers 에 사용자를 지정

sudo visudo 명령어로 파일을 열은 후에 아래와 같이 권한을 부여할 사용자의 id 와 부여할 권한(여기서는 모든 권한)을 적어주면 됩니다.

ec2-user ALL=(ALL:ALL)ALL


이제 root 로 로그인하지 말고 일반 사용자로 로그인해서 작업후 root 권한이 필요한 경우에만 sudo 명령어를 사용하도록 관리 습관을 들이는 것을 권장합니다.

Ref


  • No labels

This page has no comments.