코딩/라즈베리파이

라즈베리파이 OS sudo, sudoers 설정

드리프트 2021. 8. 20. 14:55
728x170

 

 

안녕하세요?

 

오늘은 간단한 작업을 알아 보겠습니다.

 

지난 시간에 라즈베리파이에서 root 계정을 이용했었는데요.

 

저는 개인 서버이고 중요한 서버가 아니라서 아예 root 계정으로 전환해서 작업하는 걸 좋아합니다.

 

좀더 편하다고 할까요?

 

그러나 리눅스 세계에서는 이와 같은 일은 금지시 되고 있습니다.

 

왜냐하면, 리눅스 같은 유닉스 운영체계에서는 root는 막강한 신과 같은 권한을 가지고 있거든요.

 

그래서 root 계정으로는 시스템 filesystem에 관련된 것도 그냥 지워 버릴 수 있습니다.

 

그래서 오늘은 sudo라는 명령어에 대해 알아 보겠습니다.

 

sudo 명령어는 sudo 명령어 뒤에 오는 명령에 대해 root 권한으로 실행하라는 뜻입니다.

 

예를 들어,

sudo mount -t ext4 /dev/sda1 /mnt/ext4_disk

위와 같은 명령어는 라즈베리파이에 외장하드로 연결된 하드디스크를 마운트하는 명령어인데요.

 

당연히 root 계정만 이용 가능합니다.

 

그래서 sudo 라고 맨 앞에 적어놓습니다.

 

그러면 본인의 계정 암호를 한번 물어봅니다.

 

암호를 입력하면 root 권한으로 명령어를 수행하게 됩니다.

 

이 방식이 리눅스 세계에서 권장되는 root 작업입니다.

 

그런데 sudo 명령어가 작동이 안될때가 있습니다.

 

바로 위와 같이 cpro95 is not in the sudoers file. This incident will be reported. 라는 메시지가 나옵니다.

 

제 계정인 cpro95 는 sudo 명령어 권한이 없다는 뜻입니다.

 

그럼 sudoers file에 제 계정을 추가해 볼까요?

 

먼저, 이번 한번만 root로 계정 전환합시다.

 

su root

이에 sudoers 파일을 찾아 수정해야 합니다.

 

이 파일은 어디에 있냐면 바로 리눅스 시스템에서 각종 설정파일이 있는 /etc 폴더에 있습니다.

 

한번 찾아 볼까요?

 

/etc 폴더 밑에 sudoers 파일이 있습니다.

 

이 파일의 주인은 root 이고, 권한도 소요자 및 같은 그룹만 허용됩니다.

 

이 파일은 고쳐 볼까요?

 

nano 편집기로 편집해 보겠습니다.

 

nano sudoers

#
# This file MUST be edited with the 'visudo' command as root.
#
# Please consider adding local content in /etc/sudoers.d/ instead of
# directly modifying this file.
#
# See the man page for details on how to write a sudoers file.
#
Defaults        env_reset
Defaults        mail_badpass
Defaults        secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"

# Host alias specification

# User alias specification

# Cmnd alias specification

# User privilege specification
root    ALL=(ALL:ALL) ALL

# Allow members of group sudo to execute any command
%sudo   ALL=(ALL:ALL) ALL

# See sudoers(5) for more information on "#include" directives:

#includedir /etc/sudoers.d

위와 같이 나오는데요.

 

여기서 맨 밑에서 5번째 root 부분을 보시면 sudoers 권한을 root에게 ALL 방식으로 주어졌습니다.

 

여기서 자기 계정을 그 밑에 똑같이 쓰시면 됩니다.

 

# User privilege specification
root    ALL=(ALL:ALL) ALL
cpro95   ALL=(ALL:ALL) ALL

 

두번째 방법은 그룹을 이용하는 방법입니다.

 

밑에 %sudo ALL=(ALL:ALL) ALL 로 시작하는 부분이 해당하는 그룹 전체에 sudo 권한을 주는 방식입니다.

 

제 계정의 그룹은 아이디와 같은 cpro95입니다

 

그래서 %cpro95 ALL=(ALL:ALL) ALL 부분을 추가하시면 됩니다.

 

# Allow members of group sudo to execute any command
%sudo   ALL=(ALL:ALL) ALL
%cpro95   ALL=(ALL:ALL) ALL

 

두가지 방법 중 첫번째 방식을 이용하는게 좋을 듯합니다.

 

nano 에서는 저장하는 키가 Ctrl+O 입니다.

 

Ctrl + O 를 눌러 저장하시고 Ctrl + X 를 눌러 nano 편집기를 종료하시면 완료됩니다.

 

그럼 이제 부터 본인 계정으로 sudo 명령이 작동하니까 확인해 보시면 됩니다.

 

 

그리드형