메뉴 건너뛰기

XEDITION

Server

sudo 설정하기

proin 2020.09.09 08:59 조회 수 : 1

https://jistol.github.io/linux/2017/02/23/sudo-edit/


sudo의 필요성

Linux 환경에서 sudo는 root계정으로 로그인하지 않은 상태로 sudoers의 설정에 따라 특정 명령을 사용할 수 있도록 해줍니다.
이에 따라 서버 관리자들이 root계정 사용을 최소화 하고 sudo를 이용하여 작업함으로써 누가 어떤 커맨드를 사용했는지 추적이 가능해집니다.

[acct 미설치시]
$ dpkg -l | grep acct
$ sudo apt-get install acct
[사용자 커맨드 추적]
$ lastcomm -u {사용자ID}

설정 수정방법

/etc/sudoers 에 각 사용자별 사용 가능한 설정이 포함되어 있으나 vi로 직접 수정하기 보다는 visudo 명령으로 수정하기를 권장합니다.

$ visudo

visudo edit

사용자 설정

특정 사용자에게 명령 권한을 설정할 때는 아래와 같이 설정 할 수 있습니다.

(user) (host)=(runUser[:runGroup])  [option:](command)

# User privilege specification
root    ALL=(ALL:ALL) ALL
# kimjh 사용자는 password입력없이 모든 명령을 실행 할 수 있습니다.
kimjh   ALL=(ALL) NOPASSWD:ALL
# docker 계정은 localhost에서 vi명령어를 admin그룹의 kimjh 계정의 권한으로 실행할 수 있습니다.
docker  localhost=(kimjh:admin) /usr/bin/vi

그룹 설정

특정 그룹에 명령 권한을 설정할 때는 아래와 같이 설정 할 수 있습니다.

%(group) (host)=(runUser[:runGroup])  [option:](command)

# Members of the admin group may gain root privileges
%admin ALL=(ALL) ALL
# docker 그룹에 속한 계정은 localhost에서 vi명령어를 admin그룹의 kimjh 계정의 권한으로 실행할 수 있습니다.
%docker  localhost=(kimjh:admin) /usr/bin/vi

Alias 설정

Alias는 특정 호스트나 유저, 커맨드등을 하나로 묶어 Alias형태로 제공하고 아래와 같은 형식으로 정의합니다.

Alias_Type NAME = item1, item2 ....
Alias_Type NAME1 = item1, item2 .... : NAME2 = item3, item4 ....
  • Alias_Type은 User_AliasRunas_AliasHost_AliasCmnd_Alias를 사용할 수 있습니다.
  • NAME은 대문자 영문, 숫자, 언더바(_)문자를 사용합니다.
  • 같은 Alias_Type을 두번째 예시와 같이 세미콜론(:)을 이용하여 여러개의 이름을 지정할 수 있습니다.

User_Alias

특정 계정이나 그룹을 Alias로 지정하여 할 수 있으며 해당 Alias를 이용하여 여러 사용자의 권한을 제어할 수 있습니다.

User_Alias NAME = user1, user2 ....

user정보는 아래와 같이 사용 가능합니다.

  • userName
  • #uid
  • %groupName
  • %#gid
  • Other_User_Alias
  • ! (해당 계정이 아닌 사용자)

    # 계정명이 kimjh, uid가 1000, 그룹명이 docker, gid가 899이거나 # 계정명이 guest, uid가 1001이 아닌 계정 User_Alias MANAGER = kimjh, #1000, %docker, %#899, !guest, !#1001 # 계정명이 agent이거나 MANAGER Alias에 속한 계정 User_Alias AGENT = agent, MANAGER

또한 user정보에 특수문자가 포함되거나 공백이 포함될 경우 더블쿼터(“)로 묶어 사용하거나 백슬래쉬()를 이용할 수 있습니다.

Runas_Alias

어떤 계정의 권한으로 명령을 실행 할 지에 대한 Alias설정을 지정합니다.
아래 예제와 같이 설정 된 상태에서 docker계정으로 vi명령을 실행 할 경우 Runas_Alias에 설정된 계정으로 실행되게 됩니다.

[/etc/sudoers]
# User privilege specification
docker ALL=(R_ROOT) NOPASSWD:/usr/bin/vi

docker@kimjh:$ sudo vi test
docker@kimjh:$ ls -atrl test
-rw-r--r-- 1 root root 22  2월 24 11:28 test

문법은 User_Alias와 동일하게 사용합니다.

Host_Alias

특정 실행권한에 대한 host를 Alias로 설정하여 허용되지 않은 사용자가 원격 접속하여 실행하는 것을 방지하기 위해 지정합니다.
아래 예제와 같이 설정 된 상태에서 docker계정은 211.63.24.9번 IP나 kimjh 호스트 서버에서만 vi명령을 실행 할 수 있습니다.

[/etc/sudoers]
# Host alias specification
Host_Alias H_LOCAL = 211.63.24.9, kimjh

# User privilege specification
docker H_LOCAL=(ALL) NOPASSWD:/usr/bin/vi

Cmnd_Alias

실행 명령어를 Alias로 지정할 수 있습니다.
아래 예제와 같이 설정 된 상태에서 docker계정은 vi명령과 vim명령을 실행 할 수 있습니다.

# Cmnd alias specification
Cmnd_Alias CMD_VIM = /usr/bin/vi, /usr/bin/vim

# User privilege specification
docker    ALL=(ALL:ALL) CMD_VIM

참고

 

sudo 사용의 필요성
Linux/Unix로그 파일
sudoers 파일
sudoers(5) - Linux man page
How To Edit the Sudoers File on Ubuntu and CentOS

 


 

 

 

번호 제목 글쓴이 날짜 조회 수
30 Proxy로 Gitlab Container의 웹IDE에서 브런치를 못 불러오는 문제 해결 방법 proin 2022.04.28 2
29 Docker를 사용하여 사용자를 위해 웹 사이트를 분리 할 수 ​​있습니까? 수있는 자체 웹 사이트가있는 서버 (예 : proin 2022.02.24 1
28 docker 가 우분투 ufw 같이 사용시 방화벽룰 무시하는 문제 해결하기 proin 2021.08.19 1
27 Ubuntu KERNEL Upgrade, Downgrade, Remove , Hold 18.04 proin 2021.06.07 2
26 GNU Tar를 이용한 증분 백업과 복원의 개념 이해 proin 2021.05.13 3
25 [UNIX / Linux] 특수 권한(setuid, setgid, sticky bit) file proin 2021.04.27 1
24 Apache2 웹서버에 https 적용하기 (Let's Encrypt SSL Certificate) file proin 2021.04.19 9
23 [LINUX] 기본 명령어로 메인보드, 씨피유, 메모리, 디스크, 네트워크 모델명 및 정보 확인하기 proin 2021.04.16 1
22 [Ubuntu] 우분투 방화벽(UFW) 설정 proin 2021.03.25 3
21 실행중인 컨테이너의 hostname 변경..? proin 2021.02.25 3
20 ubuntu APM 자동 설치하기(php 5.6, php 7.0) proin 2021.01.14 9
19 How To View CPU Temperature On Linux proin 2020.11.10 1
18 CPU/MEM STRESS TEST IN UBUNTU 18.04 proin 2020.11.10 2
17 UBUNTU에서 GPU 모니터링 더 멋지게 하기 proin 2020.11.10 5
16 UBUNTU에서 GPU 모니터링 하는 4가지 방법 proin 2020.11.10 3
15 리눅스 stress 툴을 통해 CPU, Memory 스트레스 부하 주는 방법 proin 2020.11.10 1
14 메모리,하드,cpu 스트레스 테스트 proin 2020.11.10 2
13 Ubuntu SVN 추천 :: RabbitVCS 설치하기 proin 2020.09.11 1
12 [기본.1] Linux 서버에 SVN 구축(설치)하기 proin 2020.09.11 2
» sudo 설정하기 proin 2020.09.09 1
위로