리눅스 root 계정으로 전환하는 방법과 이유, 그리고 주의할 점

리눅스에서 root 권한으로 전환하기: su와 sudo 명령어 활용법 - 리눅스에서 root 권한이 필요할 때 su와 sudo 명령어를 사용하는 방법을 알아봅니다. 두 명령어의 차이점과 장단점, 사용법과 주의사항을 설명합니다.
인프라코디
리눅스 root 계정으로 전환하는 방법과 이유, 그리고 주의할 점

리눅스는 다중 사용자 운영체제로, 각 사용자는 자신의 계정과 권한을 가지고 있습니다. 그중에서도 root 계정은 운영체제의 최고 관리자로, 모든 파일과 프로세스에 접근하고 수정할 수 있는 특권을 갖고 있습니다. 하지만 이런 특권은 위험도가 높으므로, 일반적으로는 root 계정으로 로그인하지 않고, 필요한 경우에만 임시로 전환해서 사용합니다.

왜 root 계정으로 전환해야 하는지, 언제 root 계정으로 전환해야 하는지, 그리고 어떻게 root 계정으로 전환할 수 있는지 알아보겠습니다.

환경 정보

  • 운영 체제 : Rocky Linux 9.2
  • 실행 계정 : root

리눅스 root 계정으로 전환해야하는 이유

root 계정은 운영체제의 모든 자원에 접근할 수 있는 권한을 가지고 있으므로, 시스템 설정이나 관리를 위해 필요한 작업을 수행할 수 있습니다. 예를 들어, 다음과 같은 작업은 root 계정이 아니면 할 수 없습니다.

  • 시스템의 시간이나 날짜를 변경하기
  • 시스템의 네트워크 설정이나 호스트 이름을 변경하기
  • 다른 사용자의 비밀번호를 변경하거나 삭제하기
  • 시스템의 소프트웨어를 설치하거나 업데이트하기
  • 시스템의 하드웨어를 인식하거나 설정하기
  • 시스템의 부팅 과정이나 서비스를 관리하기
  • 시스템의 로그 파일이나 백업 파일을 관리하기

root 계정은 시스템의 핵심적인 부분을 제어할 수 있는 강력한 도구입니다. 그러나 이 도구를 잘못 사용하면 시스템에 치명적인 손상을 줄 수도 있습니다. 예를 들어, 다음과 같은 실수들은 root 계정에서 하면 안 되는 것들입니다.

  • 중요한 파일을 삭제하거나 수정하기
  • 잘못된 명령어를 입력하거나 스크립트를 실행하기
  • 알 수 없는 소프트웨어를 설치하거나 실행하기
  • 보안상 취약한 설정이나 권한을 부여하기
  • root 계정의 비밀번호를 잊어버리거나 공개하기

root 계정은 시스템의 위험한 부분을 노출할 수 있는 위험한 도구입니다. 그래서 root 계정은 꼭 필요한 경우에만 사용하고, 가능한 한 빨리 다시 일반 계정으로 전환해야 합니다.

리눅스 root 계정으로 전환해야할 경우

root 계정으로 전환해야 하는 경우는 시스템 설정이나 관리를 위해 root 권한이 필요한 작업을 수행할 때입니다. 예를 들어, 다음과 같은 경우에는 root 계정으로 전환해야 합니다.

  • 시스템의 시간이나 날짜를 변경하려고 할 때
  • 시스템의 네트워크 설정이나 호스트 이름을 변경하려고 할 때
  • 다른 사용자의 비밀번호를 변경하거나 삭제하려고 할 때
  • 시스템의 소프트웨어를 설치하거나 업데이트하려고 할 때
  • 시스템의 하드웨어를 인식하거나 설정하려고 할 때
  • 시스템의 부팅 과정이나 서비스를 관리하려고 할 때
  • 시스템의 로그 파일이나 백업 파일을 관리하려고 할 때

하지만 이럴 때에도 root 계정으로 로그인하는 것은 권장되지 않습니다. 왜냐하면 root 계정으로 로그인하면 시스템에 영구적인 피해를 줄 수 있는 실수를 하기 쉽기 때문입니다. 그래서 대신에 일반 계정에서 임시로 root 권한을 얻는 방법을 사용하는 것이 좋습니다. 이 방법에 대해서는 아래에서 설명하겠습니다.

root 계정으로 전환하는 2가지 방법

일반 계정에서 임시로 root 권한을 얻는 방법은 크게 두 가지입니다. 첫 번째 방법은 su 명령어를 사용하는 것이고, 두 번째 방법은 sudo 명령어를 사용하는 것입니다.

su 명령어를 사용하여 root 계정으로 쉽게 전환하는 방법

su 명령어는 switch user의 약자로, 다른 사용자의 계정으로 전환할 수 있게 해주는 명령어입니다. 이 명령어를 사용하면 일반 계정에서 root 계정으로 전환할 수 있습니다. 예를 들어, 다음과 같이 입력하면 root 계정으로 전환할 수 있습니다.

$ su - Password: (root 비밀번호 입력)

(root 프롬프트 "#" 가 나타남)

여기서 - 옵션은 로그인 쉘을 실행하는 옵션으로, root 계정의 환경 변수와 설정을 적용합니다. 이 옵션을 생략하면 현재 쉘의 환경 변수와 설정을 유지합니다.

su 명령어로 root 계정으로 전환한 후에는 원하는 작업을 수행할 수 있습니다. 예를 들어, 다음과 같이 시스템의 시간을 변경할 수 있습니다.

# date -s “2023-07-27 08:30:00” Thu Jul 27 08:30:00 KST 2023

# date
Thu Jul 27 08:30:01 KST 2023 

작업을 마친 후에는 exit 명령어로 다시 일반 계정으로 돌아갈 수 있습니다.

# exit
$ (logout 일반 프롬프트가 나타남) 

su 명령어의 장점은 간단하고 빠르게 root 계정으로 전환할 수 있다는 것입니다. 하지만 su 명령어의 단점은 root 비밀번호를 알아야 한다는 것이고, root 비밀번호가 노출되면 보안상 위험하다는 것입니다. 또한 su 명령어로 전환한 root 계정은 로그에 남지 않기 때문에, 누가 언제 어떤 작업을 했는지 추적하기 어렵다는 것입니다. 그래서 su 명령어보다는 sudo 명령어를 사용하는 것이 권장됩니다.

sudo 명령어를 사용하여 root 권한을 부여받는 방법

sudo 명령어는 superuser do의 약자로, 다른 사용자의 권한으로 명령어를 실행할 수 있게 해주는 명령어입니다. 이 명령어를 사용하면 일반 계정에서 root 권한으로 특정 명령어를 실행할 수 있습니다. 예를 들어, 다음과 같이 입력하면 시스템의 시간을 변경할 수 있습니다.

$ sudo date -s "2023-07-27 08:40:00"
[sudo] password for user:(일반계정비밀번호입력)
$ date
Thu Jul 27 08:40:01 KST 2023

여기서 sudo 명령어는 root 권한으로 date -s “2023-07-27 08:40:00” 명령어를 실행하라는 의미입니다. 이때 일반 계정의 비밀번호를 입력해야 합니다. root 비밀번호가 아닙니다.

sudo 명령어의 장점은 root 비밀번호를 알 필요가 없다는 것이고, root 비밀번호가 노출되지 않아 보안상 안전하다는 것입니다. 또한 sudo 명령어로 실행한 작업은 로그에 남기 때문에, 누가 언제 어떤 작업을 했는지 추적하기 쉽다는 것입니다. 그러나 sudo 명령어의 단점은 모든 사용자가 sudo 명령어를 사용할 수 있는 것이 아니라, /etc/sudoers 파일에 등록된 사용자만 sudo 명령어를 사용할 수 있다는 것입니다. 그래서 sudo 명령어를 사용하려면 먼저 /etc/sudoers 파일을 편집해야 합니다.

/etc/sudoers 파일 편집하기

/etc/sudoers 파일은 sudo 명령어를 사용할 수 있는 사용자와 권한을 정의하는 파일입니다. 이 파일을 편집하려면 visudo 명령어를 사용해야 합니다. visudo 명령어는 /etc/sudoers 파일을 안전하게 편집할 수 있게 해주는 명령어입니다. 예를 들어, 다음과 같이 입력하면 /etc/sudoers 파일을 편집할 수 있습니다.

$ sudo visudo
[sudo] password for user: (일반 계정 비밀번호 입력)

/etc/sudoers 파일의 내용은 다음과 같은 형식으로 되어 있습니다.

사용자명 호스트명=(실행할 사용자) 실행할 명령어

예를 들어, 다음과 같은 줄은 user라는 사용자가 모든 호스트에서 모든 사용자의 권한으로 모든 명령어를 실행할 수 있게 해줍니다.

user ALL=(ALL) ALL

이렇게 /etc/sudoers 파일에 사용자를 추가하면, 해당 사용자는 sudo 명령어를 사용할 수 있게 됩니다. /etc/sudoers 파일을 편집한 후에는 Ctrl+X 키를 눌러서 저장하고 종료합니다.

sudo 명령어의 옵션과 환경 변수

sudo 명령어는 다양한 옵션과 환경 변수를 사용할 수 있습니다. 여기서는 몇 가지만 소개하겠습니다.

  • -u 옵션: 실행할 사용자를 지정할 수 있습니다. 예를 들어, sudo -u infracody ls는 infracody의 권한으로 ls 명령어를 실행합니다.
  • -l 옵션: 현재 사용자가 sudo 명령어로 실행할 수 있는 명령어의 목록을 보여줍니다.
  • -k 옵션: sudo 명령어를 실행할 때 비밀번호를 입력하면, 일정 시간 동안 다시 비밀번호를 입력하지 않아도 됩니다. 이 옵션은 이 기능을 취소하고, 다음에 sudo 명령어를 실행할 때 비밀번호를 다시 입력하게 합니다.
  • SUDO_USER 환경 변수: sudo 명령어를 실행하기 전의 사용자의 이름을 저장합니다. 예를 들어, user가 sudo로 root 권한을 얻었다면, SUDO_USER는 user가 됩니다.
  • SUDO_UID 환경 변수: sudo 명령어를 실행하기 전의 사용자의 ID를 저장합니다. 예를 들어, user가 sudo로 root 권한을 얻었다면, SUDO_UID는 user의 ID가 됩니다.
  • SUDO_GID 환경 변수: sudo 명령어를 실행하기 전의 사용자의 그룹 ID를 저장합니다. 예를 들어, user가 sudo로 root 권한을 얻었다면, SUDO_GID는 user의 그룹 ID가 됩니다.

마치며

이 글에서는 리눅스 root 계정 전환에 대해 알아보았습니다. 왜 root 계정으로 전환해야 하는지, 언제 root 계정으로 전환해야 하는지, 그리고 어떻게 root 계정으로 전환할 수 있는지에 관해 설명했습니다. root 계정은 시스템의 최고 관리자로, 강력한 권한을 가지고 있습니다. 그래서 필요한 경우에만 임시로 사용하고, 가능한 한 빨리 다시 일반 계정으로 전환해야 합니다. root 계정으로 전환하는 방법은 su 명령어와 sudo 명령어가 있습니다. su 명령어는 간단하고 빠르게 root 계정으로 전환할 수 있지만, 보안상 위험하고 로그에 남지 않습니다. 그래서 /etc/pam.d/su 파일에 wheel 그룹의 사용자만 su 명령어를 사용할 수 있도록 제한하고, /etec/login.deps 파일에 su 명령의 로그를 설정하고 사용해야 합니다. sudo 명령어는 root 비밀번호를 알려주지 않아도 되기 때문에 보안상 안전하고, /etc/sudoers 파일에 등록된 사용자만 사용할 수 있습니다. 이 두 가지 방법 중에서 적절한 것을 선택해서 사용하시기 바랍니다.

인프라코디
서버, 네트워크, 보안 등 IT 인프라 관리를 하는 시스템 엔지니어로 일하고 있으며, IT 기술 정보 및 일상 정보를 기록하는 블로그를 운영하고 있습니다. 글을 복사하거나 공유 시 게시하신 글에 출처를 남겨주세요.

- 블로그 : www.infracody.com

이 글이 유익했나요? 댓글로 소중한 의견을 남겨주시거나 커피 한 잔의 선물은 큰 힘이 됩니다.
댓글