상세 컨텐츠

본문 제목

root 권한, root 사용자… 도대체 root란 무엇인가?

애플 스페셜, 특집

by 애플양™ 2019. 3. 5. 08:00

본문

맥을 쓰면 macOS의 기원은 UNIX라는 말을 듣게 됩니다. 그리고 root라는 말도 한 번쯤은 들어봤을 겁니다. 일반인에겐 생소한 root라는 말, 도대체 이게 뭘까요? root에 대해 알면 macOS의 사용자 계정에 대해 어느 정도 이해할 수 있을 것입니다.



뭐든지 할 수 있는 슈퍼 유저

root(루트)는 UNIX에 존재하는 특권 사용자의 이름을 말합니다. 일반적으로 사용자가 키보드를 눌러 명령을 입력하거나 마우스로 더블 클릭해서 프로그램을 실행했다면, 이것들은 모두 사용자의 권한에서 실행됩니다. 그리고 해당 사용자의 권한에 속한 파일만 읽고 쓸 수 있도록 되어 있습니다. 쉽게 말하면 다른 사용자의 파일은 읽거나 쓸 수 없다는 말이죠. 그러나 root 사용자라면 누구든지 파일을 읽고 쓸 수 있습니다. 또한 OS를 구성하는 프로그램과 설정 파일 대부분은 root가 소유하므로 이런 파일 변경을 쉽게 할 수 있습니다.

결과적으로 어떤 방법으로든지 root 사용자로서 프로그램을 실행할 수 있게 된다면 그 운영체제에서는 무엇이든 할 수 있게 됩니다. 무엇이든 할 수 있으므로 편리하게 보이지만, 어떤 면으로는 실수 때문에 중요한 파일을 삭제하거나 악의적인 목적으로 사용하는 것도 가능하므로 대단히 위험하다고 말할 수 있습니다.











생각보다 간소한 구조

그러면 root에 왜 그런 광범위한 권한이 부여된 걸까요? 사용자 계정 사이에 완전한 벽을 만들고 서로의 프라이버시를 침범하지 않게 만들 순 없는 걸까요?

macOS의 기반이기도 한 UNIX는 이 운영체제의 사용자가 자신이 무엇을 하는지, 어떤 명령 입력이 어떤 결과를 유발할지 알고 있을 것이라는 전제하에 개발되었습니다. 평소에 사용하는 사용자 계정에 불편함이 없도록 충분한 권한이 할당될 수 있도록 하면서 그것을 초과하는 경우, 무엇이든 할 수 있는 root라는 사용자 권한으로 이동한다는 간단한 구조로 되어 있습니다.

UNIX가 테크니션과 같은 관련 분야 사용자 사이에서는 인기 있는 운영체제였지만, 비즈니스 분야에 사용되기 시작하면서 간단하게 더 높은 권한이 부여된다는 것이 문제가 되기 시작했습니다.

시스템 프로그램은 뭐든지 root에 의해 움직이는 것이 아니고 기능별로 사용자 계정을 만들고 그 사용자의 권한으로 동작합니다. 그래야만 root 권한이 남용되는 것을 최소화할 수 있거든요. 그리고 파일에 더욱 섬세한 권한을 부여하거나 root에서도 쉽게 접근할 수 없도록 하는 ACL (Access Control List)과 MAC (Mandatory Access Control)과 같은 기능이 개발되어 적용됐습니다.

그러나 지금도 UNIX에서는 root가 막강한 권한을 가지고 있다는 것엔 변함이 없습니다. 평소엔 거의 사용할 일이 없지만, 소프트웨어 설치 시, 시스템 유지 보수 시에 사용하고자 하는 사용자를 위해 root 계정으로 로그인하고 조작할 수 있습니다. 그렇기에 root 암호가 노출되면 사용자의 컴퓨터는 위험에 빠진다는 것을 반드시 기억해두십시오.



root는 있지만 사용할 수 없는 macOS

macOS에서는 어떻게 되어 있을까요? 사실 macOS는 처음 출시되었을 때부터 root라는 사용자가 있었고 macOS가 필요로 하는 소프트웨어는 root에서 실행하였지만, root 사용자로 로그인할 수 없게 되어 있습니다. 왜냐하면 macOS의 root엔 암호가 설정되어 있지 않기 때문이죠. 암호가 설정되어 있지 않다는 말은 암호 없이 쓰이고 있다는 말이 아닙니다. 어떤 암호가 입력되어도 일치하지 않는다는 말이며 이 때문에 로그인할 수 없다는 것입니다.



macOS의 기본 사용자 계정은 ‘관리자’

macOS에서 처음 만들어진 사용자는 ‘관리자’라는 역할이 부여됩니다. 하지만 macOS에서 관리자라 불리는 이 사용자 계정은 관리자라는 말이 무색하게도 특별한 권한이 없으며 UNIX에서는 일반 사용자에 불과할 뿐입니다. 다만, macOS에서 관리자로 되어 있는 사용자가 소프트웨어를 설치할 때나 시스템 환경설정에 접근할 때와 같이 몇몇 필요한 기능을 수행할 경우에는 사용자 암호를 넣는 것에 의해 일시적으로 root 명령을 실행할 수 있게 되어 있습니다. 이런 구조 덕분에 root 사용자로 로그인할 수 없어도 곤란한 일은 전혀 발생하지 않습니다.



그러면 iOS는?

macOS와 달리 iOS는 시스템의 세부 사항이 별로 공개되지 않았습니다. 그러나 iOS의 구조는 macOS와 같으므로 시스템의 중요한 프로세스만 root로 실행되며 일반적인 응용 프로그램은 일반 사용자로 실행되고 있다는 견해가 다수입니다. 따라서 응용 프로그램은 OS 차원에서 제공하지 않는 기능을 사용하려고 해도 권한에 막혀버립니다.
Linux를 기반으로 하는 안드로이드 역시 응용 프로그램은 일반 사용자 권한에서 실행됩니다. 흔히 말하는 루팅은 응용 프로그램이 root 권한을 상시, 또는 일시적으로 사용할 수 있도록 합니다. 루팅된 기기는 응용 프로그램이 허가 없이 특별한 기능이 수행될 수 있도록 하는 길을 열어줍니다. 허가하지 않았는데 연락처와 메일 내용 등을 다른 곳으로 보내거나 감시될 수 있으므로 루팅은 피하는 것이 좋습니다.



root와 일반 사용자의 차이



root
일반 사용자
Mac의 관리자
UID(사용자 ID)
0
정수
(Mac에선 500 이상이 일반 사용자, 500 미만은 시스템에서 사용
이름(사용자 이름)
숫자 이름이면 어떤 것도 관계없으나 보통은 root
뭐든지 관계 없음
프로세스 조작
모든 프로세서
자신의 프로세스만
파일 접근 권한
무시
적용 가능
TCP/IP 포트
모두 가능
1024번 이후의 포트 번호만 사용 가능
기타
시스템 종료 지시할 수 있음
-
관리자 계정은 프로그램 설치 등 본인의 암호를 입력함으로써 일시적으로 root 권한을 획득할 수 있음



root는 다양한 접근 권한을 무시할 수 있습니다. 예를 들어 root는 시스템에 무리를 주는 사용자나 프로세스를 종료할 수 있는데 일반 사용자는 본인이 실행한 프로세스만 종료할 수 있습니다. 웹 서버에 사용되는 80번 포트도 root만 가능하며 일반 사용자는 웹 서버를 마음대로 조작하여 80번 포트를 사용할 수 없습니다. 이것도 하나의 보안입니다.



관리자 권한의 행사


사파리와 같이 macOS에 기본 포함된 응용 프로그램 상당수는 root의 소유로 되어 있기 때문에 어떤 사용자라도 삭제할 수 없도록 되어 있습니다. 소프트웨어를 설치하거나 삭제할 때는 관리자의 암호를 묻는데요. 이때 일시적으로 root 권한을 얻어 파일을 조작할 수 있습니다.


관련글 더보기

댓글 영역