Unix 기반 운영체제에서의 최초 root 패스워드 설정(Linux, RaspberryPi)

2020. 1. 29. 13:27Embedded/RaspberryPI

사용된 라즈베리파이 모델 : RaspberryPi 3B+

사용된 라즈베리파이 OS : Raspbian Buster

연결 환경 : 공유기 WiFi를 통한 무선 접속

주제 : 라즈베리파이(원격 접속지) 루트 계정 비밀번호 설정하기

 

​===========================================================================

 

반갑습니다 여러분. HRLV 연구실입니다.

Unix나 Linux상에서 많은 작업을 하다 보면 root계정의 permission이 꼭 필요할 때가 있습니다.

물론 대부분의 권한이 부여된 'pi'계정으로도 많은 작업이 가능하지만, 가장 강력한 권한은 가지고 있지 않죠.

중요한 파일을 읽거나 쓸 때 발생하는 "permission denied" 문구가 그 대표적인 예라고 할 수 있습니다.

 

먼저 root가 무엇인지, root 계정은 어떤 계정인지에 대해 알아봅시다.

Linux 상에서는 여러 사용자 계정들이 있고 추가되며 삭제되지만, 그중 특별한 계정이 하나 있습니다.

앞에서도 언급했던, 바로 '루트(root)' 계정입니다.

root 계정은 여러 사용자 계정 중에서도 OS를 전체적으로 관리할 수 있는 모든 권한을 가진 특별한 계정입니다.

(Linux 시스템에서 root는 Windows의 관리자(Administrator)와 같은 위치에 있다고 보면 이해가 쉽습니다.)

모든 권한이란 사용자 계정을 생성 및 삭제하거나, 시스템 상에서 추가적인 S/W 관리, 환경이나 설정값을 변경하고 시스템을 제어할 수 있다는 것을 의미한다.

※ 주의사항 : root 계정은 시스템의 모든 권한을 가지고 있기 때문에 서버 사용자들에게 패스워드가 노출되어선 안된다. 또한 root 권한을 부여하는 것도 시스템을 실수로나 고의적으로나 임의 조정하거나 망가뜨려버릴 수 있기 때문에 root의 master 권한 부여도 신중하게 선택해야 한다.

root 계정으로 모든 작업을 진행한다면 권한 접근이 용이하고 쉽게 제어할 수 있다는 장점이 있다. 하지만 이는 실무에서 굉장히 안 좋은 선택인데, root의 권한을 가지고 작업을 하다 보니 진행 중인 작업을 다른 사용자들이 접근할 수 없거나, 실수로 중요하거나 시스템 파일을 삭제하였을 경우 돌이킬 수 없기 때문입니다. 보안상의 이유도 한몫하죠.

만일 여러분이 실무를 앞두고 있거나, 중요한 프로젝트를 위해서 배우는 과정이라면 앞으로의 작업은 일반 계정 사용자로 하시는 것을 추천드립니다.

(어차피 나중에는 sudo 나 su로 권한을 가져오기도 하고, 자동적으로 root 계정으로서의 작업을 하지 않게 될 것이지만, 염려스럽기 때문에 미리 말씀을 드립니다.)

 

자, 그렇다면 작업을 시작해보도록 하겠습니다.

먼저 RaspberryPi 단말에 접속합니다.

(글쓴이 본인은 putty를 이용하여 ssh 접속을 시도, 원격 제어를 했습니다.)

< 접속에 성공한 putty 화면 >

root 게정으로 진입하는 명령어는 'su'라는 명령어입니다.

'su'에 대한 설명은 하단부에 따로 설명하겠습니다.

< root 계정을 접속하기 위해선 password가 필요하다. 하지만 설정한 적이 없는데..? >

명령어를 잘 입력했다면 패스워드를 요구하는 메시지가 출력될 것이다.

하지만 웬 패스워드? 혹시 임의로 설정돼있는 것인가?

기존 계정인 pi에 대한 패스워드를 입력하면 되는 건가...?

pi에 대한 패스워드를 입력해보면..?

.

.

.

< 기존 계정에 대한 password를 입력했으나, 실패. >

우리가 첫 사용자이기 때문에, 초창기 root 계정에 대한 설정이 전무한 것. 따라서 우리가 root 계정에 대한 패스워드 설정을 해줘야 접속이 가능합니다.

'sudo passwd' 명령어를 입력하고, 자신이 설정할 패스워드를 두 번 입력하자.

이 'sudo'에 대한 명령어도 하단부에 서술하겠다.

※ 주의사항 : 이 root 계정에 대한 패스워드는 절대로 분실하여선 안된다. 따로 포스트잇에 적어놓거나 쉬운 비밀번호로 작성하자(어차피 다른 사용자가 접근하지 않는다면). 만일 패스워드 분실 시.. 구 버전의 리눅스 같은 경우는 시스템 부팅 레벨에 접근하여 새로이 설정할 수 있지만... 최신 버전에서 작동하는지는 잘 모르겠다.

< 'sudo passwd'를 입력하고, 설정할 패스워드를 두 번 입력하면.. >

 

패스워드를 성공적으로 잘 설정했다면 성공적으로 패스워드를 업데이트하였다는 메시지가 출력됩니다.

다시 'su'를 입력하고, 방금 설정한 패스워드를 입력하자.

< root 계정 접속 성공. >

 

이제 라즈베리파이의 모든 시스템을 총괄할 권한을 가진 계정을 획득했습니다.

물론 혼자서 사용한다면 그럴 일은 없겠지만, 보안에 각별히 주의하고 사용하시길 바랍니다.

앞으로도 root 계정에 접근하고 싶다면, 명령어 'su'를 통해 접근하면 됩니다.

※ 주의사항 : 이 root 계정은 초기 PuTTY를 통해 접속하는 로그인 화면에서는 접속이 불가능하다.

======================================================================

sudo : 사용자로 로그인한 후(일반 사용자) 쉘을 변경하지 않고 슈퍼 유저(보통 root) 권한의 명령어를 실행하고 싶을 시에 이 sudo 명령어를 사용하는 것. 한마디로 이 sudo라는 명령어는 일반 사용자가 슈퍼 유저의 환경을 잠시 빌려서 쓴다고 할 수 있겠다.

root의 권한 없이 소프트웨어를 업데이트하거나(보통 low security level) 특정 소프트웨어를 다운로드하는 행위 등이 이에 속한다.

쉽게 예를 들면, 대신 택배를 받는다거나(내용물을 뜯어보진 않는다) 음식을 대신 시켜준다거나(음식이 나와도 먹지는 않는다) 하는 느낌으로 알면 될 것 같다.

< 임의 패키지를 불러오고 설치하는 명령어. 슈퍼 유저의 권한만을 빌린다. >

su : 로그아웃 없이 임시로 다른 사용자의 ID를 사용할 수 있다. 다른 일반 사용자로 로그인하거나 잠시 동안 슈퍼유저 권한의 명령어를 실행할 때 유용하게 사용('su pi'를 입력하면, pi로 접근한다). 만일 단일 명령어로 su 만을 입력한다면 슈퍼 유저인 root에 대해 접근한다.

만일 su를 사용한 유저가 슈퍼 유저 거나 그에 필적하는 권한을 가지고 있다면, 패스워드를 입력할 필요가 없이 바로 접근이 가능하다.

< 슈퍼 유저로 다른 일반 사용자로 접근을 시도한다면, 인증 과정 없이 즉시 접근이 가능 >

 

해당 화면은 'su pi'에 대한 명령어를 입력함으로써 pi 계정에 대한 접근을 시도하였지만, 명령어의 주체가 슈퍼 유저인 root 이기 때문에 따로 인증 과정 없이 바로 pi 계정으로 액세스가 되었다.

============================================================================