집에서 가상환경(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 편집기를 실행하면 다음과 같이 출력됩니다.
![](https://blog.kakaocdn.net/dn/caHR9d/btsDHqgieyl/O0yn3dtVPQKFFS9mUyJ3f1/img.png)
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
![](https://blog.kakaocdn.net/dn/mCIUX/btsDGrT03KF/difk2gsfVP6tc7GeqQAhk0/img.png)
저는 아래와 같이 읽기 전용으로 열리기에 (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 권한을 부여하면 보안상의 위험이 있으므로 신중하게 사용해야 합니다.
'IT > 리눅스' 카테고리의 다른 글
리눅스 iptables 알아보기 (1) | 2024.01.31 |
---|---|
리눅스 쉘(shell)을 알아보자 (1) | 2024.01.30 |
[squid] proxy 서버 쉽게 만들기 (0) | 2024.01.21 |
let's encrypt 인증서 발급 및 적용 (0) | 2024.01.21 |
리눅스 NTP 서버를 통한 PC 시간 설정하기(feat. 폐쇄망) (0) | 2024.01.21 |