[보안] 왜 루트 계정을 사용하지 않고 sudo를 사용하는가?

2019. 9. 26. 12:24리눅스/Ubuntu

1. 어째서 sudo?

여러분은 여러 강의 글에서 루트 계정을 바로 사용하지 않고 sudo 명령어를 통해 권한을 획득하는 모습을 보셨을 겁니다. 또한 우분투에서는 기본적으로 루트 계정의 접근을 막아두고 있습니다. 그 이유가 뭘까요?

루트 계정은 시스템의 모든 영역에 접근할 수 있는 권한을 가지고 있고 그렇기에 무한대의 권한을 가지고 있다고 볼 수 있습니다. 이러한 특성 때문에 시스템 공격자들의 목표는 루트 계정 탈취이고, 비밀번호 유출 등으로 루트 계정이 드러나게 되면 시스템은 매우 취약한 상태에 놓이게 됩니다.

그런 일을 방지하는 것이 바로 sudo 명령어입니다. sudo는 허가를 받은 일반 사용자가 루트 권한을 빌릴 수 있게 만들어주고, 그 과정에서 일어난 명령들의 로그를 남깁니다. 또한 허가되지 않은 사용자의 sudo 시도 내역도 로그로 남깁니다.
마치 보안 게이트와 같다고 보면 되겠습니다. 이러한 보안적 이유로 root 계정을 활성화하고 직접 사용하는 대신, sudo를 사용하시길 적극 권장합니다.


2. sudo 사용법

우선 어떤 명령어를 실행한다고 생각해보겠습니다. 앞의 '~$' 표시는 현재 상태가 일반 사용자임을 나타냅니다.

~$ apt install nginx

우분투는 패키지의 관리를 위해 Advanced Packaging Tool, APT를 사용하고 있습니다. 이 명령어는 nginx를 install 하라는 뜻이며, 관리자 권한을 필요로 합니다. 그러니 이 상태에서 실행하면...

~$ apt install nginx
E: Could not open lock file /var/lib/dpkg/lock-frontend - open (13: Permission denied)
E: Unable to acquire the dpkg frontend lock (/var/lib/dpkg/lock-frontend), are you root?

이런 오류를 보실 수 있습니다. 이때 sudo를 앞에 붙여주면 해당 명령을 루트 계정이 아니어도 관리자 권한을 통해 실행할 수 있습니다. 한번 해보실까요?

~$ sudo apt install nginx
[sudo] password for (username):

이때 물어보는 비밀번호는 해당 username 계정의 비밀번호를 입력하시면 됩니다. 그러면 정상적으로 명령이 실행되게 됩니다.


3. 마치며

저는 이번 강의에서 우분투 루트 계정을 활성화하고 비밀번호를 설정하는 방법을 일부러 알려드리지 않았습니다.
일반적인 상황에서는 sudo 명령어로 명령의 처리가 가능하고, 그 방법이 훨씬 안전하기 때문입니다.
따라오시느라 수고하셨습니다. 보안에 많은 관심을 기울이셔서 좋은 시스템 관리자가 되시길 희망합니다.

도움이 되셨다면 아래 버튼을 눌러 기부를 해주세요! :D

DonationDonation