JooTC
network-access-card

CentOS 7 Linux 일반계정에게 root 권한을 ‘모두’ 부여하기

경고 : 이 문서는 CentOS 7에서 테스트되었습니다. 다른 리눅스 배포판이나 CentOS 다른 버전에서 확인되지 않았으며 위험성이 높으므로 테스트 머신에서 미리 확인해보시기 바랍니다.

root 권한 전체를 특정 계정에 부여하기


root 권한 자체를 특정 계정에 부여할 수 있습니다.

일반적으로 sudo를 사용하여 root 권한을 ‘빌리는’ 방법들이 있습니다. 그렇지만 단순히 root 권한을 빌리는 것이 아니라 root 계정으로 할 수 있는 모든 것을 특정 계정에 부여하도록 하는 방법 또한 존재합니다. 이는 su – root를 하여 root 계정으로 전환하는 것과 같은 역할을 하게 될 것입니다.

이 포스트에서는 sudo 명령을 사용하지 않고 특정 계정을 root 계정처럼 동작하도록 하는 방법을 소개할 것입니다.

 

 

이렇게 하는 이유가 있나요?


이 방법은 서버 운영자의 운영 정책에 따라 필요하기도 한 방법이지만, 권장되는 사항은 아닐 수 있습니다.

다만 서브 루트 계정을 별도로 만들고 기존 root 계정에 접근하기 어렵도록 바꾼다면 단순한 서버 공격에 대해서는 조금의 안전성을 보장받을 수 있을 것입니다.

 

이제 작업을 위해 수정해야 할 파일은 총 3개입니다. 이 모든 과정은 먼저 root 계정으로 로그인한 후에 진행해야 합니다.

  • /etc/sudoers (sudo 권한 부여하기)
  • /etc/group (root 그룹 부여하기)
  • /etc/passwd (root의 uid, gid로 변경)

 

먼저 /etc/sudoers 파일을 수정하여 sudo 명령어를 사용 가능하도록 변경합니다.

## Next comes the main part: which users can run what software on
## which machines (the sudoers file can be shared between multiple
## systems).
## Syntax:
##
##      user    MACHINE=COMMANDS
##
## The COMMANDS section may have other options added to it.
##
## Allow root to run any commands anywhere
root    ALL=(ALL)       ALL

 

이 부분에서 root    ALL=(ALL)    ALL의 아래에 다음과 같이 입력해주시면 됩니다.

[계정명]    ALL=(ALL)    ALL

여기까지만 설정했다면, 일반적인 sudo 명령어로 root 권한을 빌릴 수 있습니다.

 

다음으로, /etc/group 파일을 수정합니다. 위쪽에 있는 root 계정을 찾습니다.

root:x:0:

 

여기에 다음과 같이 자신의 계정명을 추가해주세요. 계정 이름이 user인 경우 root:x:0:user가 됩니다. 콤마(,)로 다른 사용자를 추가할 수도 있습니다.

root:x:0:[계정명]

 

또는, /etc/group 파일을 건드리지 않고도 gpasswd -a [계정명] [추가할그룹명] 명령어를 통해 빠르게 현재 계정에 특정 그룹에 소속될 수 있도록 설정할 수 있습니다.

물론 이 방법으로도 /etc/group에서 위와 같이 바뀌게 됩니다.

 

마지막으로 /etc/passwd를 수정합니다.

하단에 있는 자신의 계정명을 찾아서, 아래처럼 UID와 GID부분을 모두 0으로 설정해줍니다. (…x:uid:gid::/home…)

만약 유저 이름이 user인 경우 user:x:0:0::/home/user:/bin/bash 가 될 것입니다. (혹시 모르니 기존의 UID/GID는 기억하거나 백업해둡시다.)

haldaemon:x:68:68:HAL daemon:/:/sbin/nologin
ntp:x:38:38::/etc/ntp:/sbin/nologin
saslauth:x:499:76:"Saslauthd user":/var/empty/saslauth:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
tcpdump:x:72:72::/:/sbin/nologin
oprofile:x:16:16:Special user account to be used by OProfile:/home/oprofile:/sbin/nologin
named:x:25:25:Named:/var/named:/sbin/nologin
[계정명]:x:0:0::/home/[계정명]:/bin/bash

 

이렇게 모두 설정해주신 후 로그아웃 후 다시 로그인하게 되면 정상적으로 적용될 것입니다.

단, 이렇게 하면 일부 서비스에 즉시 타격을 받을 수 있습니다. 예를 들면 가장 먼저 SSH 접속에 영향을 받아 접속에 문제가 발생할 수 있습니다.

아직 root 계정에서 로그아웃하지 마시고 하단의 지침을 따라 root 계정으로 SSH 로그인을 허용하도록 변경해야 합니다.

 

SSH 서버에 접속할 때 root 계정 허용하기


위와 같이 root 계정이 된 사용자로 SSH 로그인을 시도하면, 서버 환경에 따라 서버에 접속되지 않는 현상이 발생할 수 있습니다.

 

경고 : root 계정으로 즉시 로그인하는 것은 보안상 권장되지 않으며 첫 로그인은 일반 사용자로 진행하는 것을 권합니다. 이 방법을 사용하면 root 계정 또한 SSH 접속 및 인증이 가능해질 수 있습니다.

 

vim 이나 emacs 등의 터미널 텍스트 에디터를 사용하여 SSH 서버 설정 파일(/etc/ssh/sshd_config)을 편집합니다.

 

이후 해당 파일이 열리면 다음 부분을 찾습니다 : PermitRootLogin

이 부분의 값이 다음 중 하나라면,

  • prohibit-password
  • without-password
  • no

이를 다음과 같이 변경한 후 파일을 저장하여 빠져나와줍니다.

PermitRootLogin yes

 

모든 설정이 완료되었다면 sshd 서비스를 재시작해줍니다. 다음 명령어를 사용합니다.

[root@localhost ~]# service sshd restart

 

systemd를 사용 중이라면 아래와 같이 사용해주셔도 됩니다.

[root@localhost ~]# systemctl restart sshd

 

이제 해당 사용자로 다시 로그인하면 정상적으로 SSH 접속이 될 것입니다.

이 글에 대해 어떻게 생각하시나요?

8
여러분의 의견을 댓글로 남겨주세요.

avatar
3 댓글 스레드
5 답변 스레드
2 팔로워
 
답변 많은 댓글
인기 있는 댓글
5 댓글 작성자
julianNagneJooTCㅇㅇjavamon 최근 댓글 작성자
javamon
유저
javamon

[계정명]:x:0:0::/home/[계정명]:/bin/bash
하단에 있는 자신의 계정명을 찾아서, 아래처럼 UID와 GID부분을 0으로 설정해줍니다.

=> 해당 명령을 실행한 뒤 해당 서버에 ssh 접속이 불가해졌습니다.
아래 링크는 저와 같은 사례 더군요.
OS버전은 우분투 18.04 LTS 이며, 위의 내용이 정상적으로 작동 되는지 다시 검토 후 포스팅 유지 유무를 결정해주시길 바랍니다.

https://pram.tistory.com/entry/django-aws-deploy-%EC%8B%9C-%ED%8F%AC%ED%8A%B8-%EB%B3%80%EA%B2%BD-%EC%97%90%EB%9F%AC-Error-You-dont-have-permission-to-access-that-port

ㅇㅇ
유저
ㅇㅇ

아 따라했다가 로그인안되네요

julian
유저
julian

저도 지금 따라했다가 밑에 글 못보고 reboot 시켜버려서 지금 로그인이 안되는데 어떻게 해야되나요

error: Y