본문 바로가기
IT/리눅스

리눅스(우분투) root 권한 얻는 방법

by IT 과학정복 2024. 1. 21.
반응형

집에서 가상환경(virtualbox)에서 리눅스(우분투)를 설치하고,

기본 계정으로 로그인을 하면

리눅스 세팅이나 명령어 실행을 하는데

root 계정으로 로그인 하는게 여간 귀찮은 게 아닙니다.

 

그래서 리눅스(우분투) root 권한을 얻는 방법을 소개합니다.

반응형

1. sudo 명령으로 root 권한 얻기

sudo 명령을 사용하여 root 권한을 얻을 수 있습니다.

sudo 명령을 실행하면 root 계정의 비밀번호를 입력하라는 메시지가 표시됩니다.

비밀번호를 입력하면 root 계정의 권한으로 명령을 실행할 수 있습니다.

 

예를 들어, tcpdump 명령을 root 권한없이 실행하면 다음과 같이 출력됩니다.

 

sudo 명령을 사용하여 tcpdump 명령을 실행하면 다음과 같이 출력됩니다.

 

imseng 계정 비밀번호를 입력하면

명령어가 잘 실행되는 것을 볼 수 있습니다.

 

 

2. su 명령으로 root 계정으로 전환

su 명령을 사용하여 root 계정으로 전환할 수 있습니다.

su 명령을 실행하면 root 계정의 비밀번호를 입력하라는 메시지가 표시됩니다.

 

비밀번호를 입력하면 root 계정으로 전환됩니다.

예를 들어, su 명령을 사용하여 vi 편집기를 실행하면 다음과 같이 출력됩니다.

imseng-virtualbox : ~$                                          (일반 사용자의 기본 프롬프트)
imseng-virtualbox : /home/imseng #                    (root 사용자의 기본 프롬프트)

 

위처럼 su 명령으로 root 계정으로 전환이 가능하지만 

사실 혼자 쓰는 계정이면 

본인이 PC나 단말기 보안에 신경쓴다는 가정하에 

 

root 계정을 보다 쉽게 접속하고 싶을 것입니다.

 

 

3. /etc/sudoers 파일 수정

/etc/sudoers 파일을 수정하여 일반계정에게 root 권한을 부여할 수 있습니다.

/etc/sudoers 파일은 sudo 명령을 사용하여 root 권한을 얻을 수 있는 사용자를 지정하는 파일입니다.

/etc/sudoers 파일을 수정하려면 다음 명령을 실행합니다.

 

vi /etc/sudoers

저는 아래와 같이 읽기 전용으로 열리기에 (W10: Warning:!@$!@%!%^!@$)

 

 

nano /etc/sudoers 

명령어로 문서를 편집하였습니다.

 

/etc/sudoers 파일이 열리면 다음과 같은 내용을 추가합니다.

<일반계정 이름> ALL=(ALL) NOPASSWD: ALL

예를 들어, 일반계정 이름이 "test"라고 가정하면 다음과 같이 추가합니다.

test ALL=(ALL) NOPASSWD: ALL

 

 

저는 imseng 이라는 계정을 추가해 보겠습니다.

 

 

imseng ALL=(ALL:ALL) NOPASSWD: ALL

 

 

 

 

명령어를 입력 뒤 ctrl(컨트롤키) + x

Y 입력하여 저장하였습니다

이렇게 하면 test 계정은 su 명령을 사용하여

root 계정의 비밀번호를 입력하면 root 권한을 얻을 수 있습니다.

 

 

 

 

 

 

vi /etc/sudoers 또는 nano /etc/sudoers 명령어로

username ALL=(ALL) NOPASSWD:ALL ( 저의 경우 test ALL=(ALL) NOPASSWD:ALL)

입력 후 저장하여 service ssh restart -> reboot 하여 로그인해봤지만

해당 방법은 root 권한을 바로 가져오진 못했습니다.

 

4. /etc/passwd  권한변경

마지막으로 추천하지 않는 방법이지만(후술) 

일반 계정이 로그인하자마자 root 권한을 가져올 수 있는 

/etc/passwd  권한을 변경하는 방법입니다.

/etc/passwd 파일에는 시스템에서 사용자 계정을 관리하는 데 필요한 중요한 정보를 제공합니다.

1. 사용자 이름: 각 사용자의 로그인 ID를 나타냅니다.
2. 비밀번호: 원래는 사용자의 비밀번호가 암호화된 형태로 저장되었지만, 보안상의 이유로 이제는 'x' 문자로 대체되었고, 3. 실제 암호화된 비밀번호는 /etc/shadow 파일에 저장됩니다.
4. 사용자 ID(UID): 시스템에서 사용자를 구별하기 위한 고유한 번호입니다.
5. 그룹 ID(GID): 사용자가 속한 기본 그룹을 나타내는 번호입니다.
6. 사용자 정보: 사용자에 대한 추가 정보를 나타내는 필드로, 보통 사용자의 전체 이름이 들어갑니다.
7. 홈 디렉토리: 사용자의 홈 디렉토리 경로입니다.
8 로그인 쉘: 사용자가 로그인했을 때 기본적으로 사용하는 쉘입니다.

 

vi /etc/passwd 또는 nano /etc/passwd

계정에 uid와 gid 자리에 숫자를 아래의 그림과 같이

test:x:0:0::/home/test:/bin/bash 처럼 0으로 통일시켜 줍니다.

 

그러고 나서 service ssh restart 하고 혹시나 몰라 재부팅을 하고

계정으로 로그인하시면 바로 로그인이 가능합니다.

 

하지만 이 방법을 추천하지 않는 이유는

제가 현업에서 리눅스 서버 중 몇 대를 이런 방식으로 세팅하고 사용하다가

재부팅하고 나서 세팅한 일반계정으로 로그인 시,

permission denied 가 나오는 상황을 맞이해서

모든 리눅스 서버 세팅을 다시 했던 진땀을 뺀 경험을 했기 때문입니다.

아마도 root와 권한 문제로 일반계정이 잠긴 것 같았습니다.

 

그때 /etc/ssh/sshd_config 쪽 세팅에 root 계정이 접근 안 되는

PermitRootLogin no 세팅으로 해놔서 root 계정으로도 접근이 안되어,

콘솔로 물리서버에 접근해서 바꿨던 기억이 있습니다.

 

혹시나 해당 세팅을 하실 경우는 

vi /etc/ssh/sshd_config 또는 nano /etc/ssh/sshd_config 에서

PermitRootLogin yes로 세팅하시고 

재부팅 후에도 정상적으로 로그인되는지 확인하고 사용하시길 추천드립니다.

 

 

주의 사항

일반계정에게 root 권한을 부여하면 보안상의 위험이 있으므로 신중하게 사용해야 합니다.

 

 

반응형