슈퍼유저

내위키

Superuser.

다중 이용자를 지원하는 컴퓨터의 운영체제를 이용하는 사용자 중, 가장 많은 권한을 부여 받은 사용자를 뜻한다. 운영체제가 설치된 시스템의 관리자가 시스템을 관리하기 위해서 특별히 사용하는 사용자 계정으로, 운영체제가 단일 사용자만 지원하는 경우, 예를 들어 MS-DOS나 윈도우 1~3까지는 슈퍼 유저라는 개념이 없다.

시스템 관리자의 계정이므로 거의 제한이 없는 권한을 가지고 있다. 심지어는 운영체제의 모든 데이터를 지우고 초기화시키거나, 기존 운영체제를 지우고 다른 운영체제를 설치한다거나 하는 것까지 가능하다. 따라서 슈퍼유저의 계정 정보가 누군가에게 유출되면[1] 그 사람은 시스템을 마음껏 주무를 수 있다. 해커들의 목표도 결국은 슈퍼유저 계정 정보를 알아내는 것이다. 컴퓨터 보안에서 가장 신경 써야 할 부분 중에 하나도 슈퍼유저 계정의 유출을 막는 것이다.

유닉스의 계열의 경우, 보통은 보안을 위해서 root로 바로 접속하지 못하게 한다. root 계정 정보를 알고 있는 사용자라고 하더라도 별도로 만든 일반 사용자 계정으로 접속한 다음 su 명령어로 root 권한을 사용하거나, 사용하는 계정을 'sudoer'로 등록한 다음 sudo 명령어 뒤에 root 권한으로 사용하고자 하는 명령어를 붙여서 사용한다. sudo 명령어를 사용하면 처음에 암호를 물어보는데,[2] 이 때 한번 입력해 주면 일정 시간 동안은 sudo 명령어를 써도 다시 물어보지 않고 시간이 지나면 다시 물어보는 식이다.

윈도우 관리자 권한

윈도우 계열은 처음에는 개인용 컴퓨터용으로 만들어진 MS-DOS에 뿌리를 두고 있었기 때문에 서버 사용을 목표로 만든 윈도우 NT가 등장하기 전까지는 슈퍼유저 개념이 제대로 없었다. 윈도우 제품군을 윈도우 NT 커널로 통합한 윈도우 2000에 와서야 개인용 컴퓨터에도 다중 사용자 개념이 도입되었지만 윈도우 XP까지는 개인 사용자들은 슈퍼유저 개념은 거의 알지 못하는 수준이었다. 대부분 사람들은 컴퓨터에 계정을 하나만 만들고,[3] 여기에 관리자 권한이 부여되었기 때문이다. 정확히는 최고 관리자 권한을 가진 Administrator 계정이 따로 있지만 그냥 일반 사용자도 앱 설치를 필요한 거의 대부분 작업을 불편 없이 할 수 있었다.

그러다가 윈도우 비스타에 들어서 '관리자 권한'이라는 개념이 개인 사용자들에게 처음으로 대두되었다. 사용자 계정 컨트롤(User Account Control, UAC)이라는 보안 정책이 도입되어 일반 사용자 계정에 더 이상 관리자 권한이 자동으로 주어지지 않았다. 또한 일반 사용자들이 앱을 설치하거나 이미 설치된 앱이 시스템을 건드리는 작업을 하면 윈도우가 이를 거부하고 관리자 권한으로 작업할 것인지 한 번 물어보기 때문이었다. 이는 사용자도 모르게 악성 소프트웨어가 설치된다거나 하는 보안 문제에 대응하기 위한 보안 강화 수단이었지만 사용자들에게는 앱 설치나 그밖에 시스템을 건드리는 작업을 할 때마다[4] 관리자 권한을 묻는 게 엄청 귀찮은 일이었다. 그 때문에 UAC 기능을 강제로 꺼버리고 쓰는 사람들이 많았는데 당연히 보안 문제에는 취약해진다. 사실 비스타 때에는 너무 불필요하게 관리자 권한을 요구한다든가 하는 문제점들이 많기도 했다. 리누스 토르발스였으면 UAC 개발자에게 자살하라고 했을 듯.[5] 이후 윈도우 7부터는 좀 덜 귀찮은 방식으로 바뀌었기 때문에 윈도우의 보안 정책으로 어느 정도 정착되었다.

그러나 유닉스에 비하면 여전히 권한 관리는 약한 게 현실이다. 윈도우 10부터 지원하는 윈도우 리눅스 서브시스템(WSL)을 통해 C 드라이브를 들여다 보면[6] 유닉스 같으면 root 소유였을 윈도우의 시스템 파일도 소유권이 윈도우를 설치할 때 만든 사용자 계정으로 되어 있는 것을 볼 수 있다.

안드로이드 루팅

안드로이드유닉스 계열인 리눅스 커널을 기반으로 하고 있으므로 슈퍼유저, 즉 root가 존재한다. 하지만 구글에서는 일반 사용자나 앱[7]은 슈퍼유저 권한에 접근하지 못하도록 막고 있다. 안드로이드 초기에는 기기의 제원이 너무나 구렸다. 배터리도 빨리 닳고, 속도도 느리고, 용량도 너무 적었기 때문에 이를 극복하기 위해 루팅(rooting), 즉 슈퍼유저 권한으로 기기를 이용하는 사람들이 적지 않았다. 루팅을 한 기기는 원칙적으로 사후서비스가 불가능하지만 이를 감수하고서라도 루팅을 하는 사람들이 적지 않다. 루팅한 기기에서만 쓸 수 있는 기능을 탑재한 앱을 쓰기 위해서라든가,[8] 미리 기기에 설치되어 있는 앱 중에 안 쓰는 앱들을 지워서 용량을 확보한다든가, 어떻게든 최적화를 쥐어짜서 조금이라도 속도를 빠르게 해 보려고 한다든가, 아니면 아예 커스텀 펌웨어를 올려서 쓰는[9] 나름 눈물겨운 짓들을 많이 했다. 지금은 기기의 성능도 크게 향상되었고, 과거에는 루팅을 해야만 쓸 수 있었던 기능들을 사전에 설치한 구글 앱이 지원하는 경우도 있고, 백업과 같은 기능들이 훨씬 좋아져서 루팅의 필요성은 이제는 거의 사라졌다고 해도 무방하다. 그래도 구글의 안드로이드 보안 정책에 불만이 많은 사람들은 있게 마련이고, 구형 기기는 더 이상 버전 업데이트도 안 되고 하니 커스텀 펌웨어를 쓸 요량으로 루팅을 하는 사람들이 있기는 하다.

루팅한 기기는 당연히 해킹 위험에 취약하기 때문에 구글은 절대 권장한 바가 없지만, 그렇다고 애플만큼 죽어라고 막지는 않았다. 일부 안드로이드 기기 제조사들은 아예 공식적으로 루팅 툴이나 루팅 방법을 안내하기도 했다. 단, 루팅을 하면 사후 보증은 무효가 된다는 것을 동의해야 한다.[10] 심지어는 구글의 플레이스토어에 루팅한 기기에서만 지원하는 기능이 들어 있는 티타늄백업[11] 같은 앱이 버젓이 올라와 있기도 하다.

각주

  1. 유닉스 계열은 무조건 아이디가 root이므로, 비밀번호만 알아내면 된다.
  2. 이 때는 root 암호가 아니라 그 계정의 암호를 사용한다.
  3. 가족들이 함께 쓰는 컴퓨터라도 가족별로 따로 따로 계정을 만들어서 로그인하는 경우는 거의 없었다. 각자 자기 컴퓨터를 가지고 쓰는 경우가 대다수였다.
  4. 물론 고급 사용자가 아닌 일반 사용자가 이런 작업을 직접 할 리는 없고, 사용하는 프로그램이 이런 작업을 하려고 시도할 때 주로 나타난다.
  5. 리누스 토르발스는 오픈수세 리눅스가 불필요하게 관리자 권한을 요구하는 것을 두고 '부디 지금 그냥 자살해라. 그러면 세상은 더욱 살기 좋은 곳이 될 것이다...'라고 독설을 퍼부은 바 있다.
  6. cd /mnt/c 명령으로 C 드라이브에 접근할 수 있다.
  7. 구글이나 제조사가 만들어서 처음부터 기기에 심어놓은 시스템 관리용 앱들은 제외.
  8. 티타늄백업 같은 일부 백업 앱들, 시스템 파일까지 볼 수 있는 파일 브라우저 같은 앱들이 그랬다.
  9. 커스텀 펌웨어를 깔아서 쓰려면 루팅 말고 추가로 부트로더 언락을 해야 하는 기기들도 있다. 요즘 나오는 기기들은 대부분 부트로더에도 락을 건다.
  10. 루팅을 한 다음 다시 언루팅을 하고 사후 서비스를 받는 경우도 있었지만 지금은 언루팅을 했더라도 서비스 센터에서 루팅 흔적이 있는지 체크하고 루팅한 적이 있는 것으로 체크하면 보증 서비스를 거부한다.
  11. 일반 모드에서는 보통의 백업 툴과 별 차이가 없지만 루팅 모드에서는 시스템을 통째로 백업할 수 있다.