본문 바로가기

server/ubuntu 18.04

우분투 18.04 sudo 설정하기

개요

sudo를 이용하여 root 권한의 위임과 책임의 분리가 가능합니다.
여러 사용자의 root 암호 재사용을 방지하는 등 보안을 향상시킬 수 있기때문에 root계정을 사용하는 것보다
sudo 명령어로 root 권한을 위임받아 사용하는 것이 바람직합니다.

sudo 인스톨하기

root@localhost:~# apt install sudo

특정 사용자에게 모든 root 권한을 위임하는 방법

visudo 실행하기

root@localhost:~# visudo

마지막 행에 추가: ubuntu 사용자에게 모든 root 권한을 위임하는 설정

ubuntu    ALL=(ALL:ALL) ALL

visudo 를 종료할 때는 ctrl + x 입니다.

권한 위임 확인하기

reboot명령어를 sudo 권한으로 실행되는지 확인합니다.

ubuntu@localhost:~$ /sbin/reboot
Failed to set wall message, ignoring: Interactive authentication required.
Failed to reboot system via logind: Interactive authentication required.
Failed to open /dev/initctl: Permission denied
Failed to talk to init daemon.
# sudo가 없을 때는 거부됩니다. 

ubuntu@localhost:~$ sudo /sbin/reboot
[sudo] password for ubuntu:     # ubuntu 사용자 패스워드 입력
Session terminated, terminating shell...   # 실행됨

특정 명령어를 sudo 권한에서 제한하기

visudo 실행하기

root@localhost:~# visudo

제한할 명령어를 별칭으로 묶기(옵션)

alias 별칭으로 설정이 가능하며 직접 명령어를 기입해도 상관없습니다.

Cmnd_Alias SHUTDOWN = /sbin/halt, /sbin/shutdown, \
    /sbin/poweroff, /sbin/reboot, /sbin/init, /bin/systemctl

alias(별칭) 혹은 명령어를 사용자에게 설정하기

ubuntu    ALL=(ALL:ALL) ALL, !SHUTDOWN

동작 테스트하기

ubuntu@localhost:~$ sudo /sbin/shutdown -r now
[sudo] password for ubuntu:
Sorry, user ubuntu is not allowed to execute '/sbin/shutdown -r now' as root on ubuntu.

명령어가 거부되는 것을 확인할 수 있습니다.

root 권한을 특정 그룹에 속한 사용자들에게 한꺼번에 위임하기

visudo 실행하기

root@localhost:~# visudo

특정 명령어 별칭으로 설정하기

Cmnd_Alias USERMGR = /usr/sbin/adduser, /usr/sbin/useradd, /usr/sbin/newusers, \
    /usr/sbin/deluser, /usr/sbin/userdel, /usr/sbin/usermod, /usr/bin/passwd 

usermgr그룹에 속한 사용자에게 USERMGR으로 정의한 명령어 궈한을 위임하기

%usermgr ALL=(ALL) USERMGR

그룹을 만들고 사용자를 그룹에 추가하기

root@localhost:~# groupadd usermgr
root@localhost:~# vi /etc/group

# 그룹에 사요자 추가하도록 작성
usermgr:x:1002:ubuntu

ubuntu 사용자로 동작 테스트하기

# ubuntu 사용자로 `usaradd`와 `passwd`명령어 동작 확인
ubuntu@localhost:~$ sudo /usr/sbin/useradd testuser
ubuntu@localhost:~$     # 정상 동작
ubuntu@localhost:~$ sudo /usr/bin/passwd testuser
Enter new UNIX password:     # testuser계정 패스워드 입력
Retype new UNIX password:
passwd: password updated successfully

root 권한을 특정 사용자에게 특정 명령어만 위임하기

visudo 실행하기

root@localhost:~# visudo

특정유저에게 특정 명령어만 위임하도록 편집하기

user1     ALL=(ALL:ALL) /usr/sbin/visudo
user2     ALL=(ALL:ALL) /usr/sbin/adduser, /usr/sbin/useradd, /usr/sbin/newusers, \
                        /usr/sbin/deluser, /usr/sbin/userdel, /usr/sbin/usermod, /usr/bin/passwd
user3     ALL=(ALL:ALL) /usr/bin/vim

동작 테스트하기

# user1
user1@localhost:~$ sudo /usr/sbin/visudo

visudo가 정상적으로 도작하고 편집가능한지 확인

# user2
user2@localhost:~$ sudo /usr/sbin/userdel -r testuser

정상적으로 계정이 삭제되는지 화인

# user3
user3@localhost:~$ sudo /usr/bin/vim /root/.profile

vim이 정상적으로 열리고 편집이 되는지 확인

sudo 로그 확인 방법

sudo 로그는 아래 파일에서 확인 가능합

/var/log/auth.log