기타/미분류

리눅스 루트계정 이해하기

여러명의 사용자가 한 대의 컴퓨터를 이용하는 것이기 때문에 시스템 전체를 관리할 특정한 사용자(supervisor)가 필요하다. 이 수퍼바이저는 보통 “root”라는 계정을 가지며, 시스템 전체를 관리한다.

모든 사용자는 계정이 주어지면, 사용자 이름과 홈 디렉토리 등을 갖게 된다. 일반 사용자는 보통, 시스템의 다른 사용자들에게나 그들 자신에게도 손상을 주지 못하도록 제한되어 있다. 시스템의 파일 사용 허가는 모든 사용자를 위한 공유 디렉토리의 파일들을 일반 사용자가 지우거나 수정하지 못하게 되어 있으며, 또한 대부분의 사용자는 다른 사용자가 자신의 파일들을 액세스하거나 수정하지 못하도록 하기 위해서 적당한 파일 사용 허가로 그들 자신의 파일들을 보호하게 된다.

그러나, root는 아무런 제한을 받지 않는다. 시스템의 어떠한 파일이라도 읽고, 수정하고, 지울 수 있으며, 파일의 사용 허가를 바꿀 수도 있고, 드라이브 파티션을 잡거나 파일 시스템을 만드는 등의 특별한 프로그램을 실행할 수 있다. 리눅스 사용자로써는 사용자가 곧 관리자이므로, root 의 계정이 필요할 경우 root로 login하여 조심스럽게 시스템을 운영해야 한다.

따라서, root는 무엇이든지 할 수 있기 때문에 이 계정으로 login하면 큰 실수를 하기 쉽다. 예를 들면, 일반 사용자로서 만일, 부주의하게 /etc의 파일들 모두를 지우려 한다면, 시스템은 그렇게 하는 것을 허용하지 않을 것이다. 그러나, root로서 login을 했다면, 시스템은 아무런 제재을 가하지 않는다. 따라서, root를 사용하면 시스템의 어떤 작업이라도 할 수 있지만, 동시에 망가뜨릴 우려가 있다. 이런 경우를 막는 최선의 방법을 아래에 소개한다.

  • 명령을 입력하고 [return]을 누르기 전에 어떤 손상이 오지 않는지 검사한다. 예를 들어, 디렉토리를 깨끗이 지우려고 할 때, [return]을 누르기 전에 지금까지 입력한 전체 명령을 다시 읽고, 올바른지 확인한다. 유닉스에서는 Undelete나 Unformat 같은 기능이 없다.
  • root를 많이 사용하지 않는다. root 사용자로서의 역할이 더 편안하다면, 일반 사용자에 대한 관리자의 특권을 너무 남용하고 있는 것이다. 예를 들면, larry로 login했을 경우와 root로 login했을 경우를 생각해 보라.
  • root 계정을 위해 다른 프롬프트를 사용한다. root의 .bashrc 나 .login 파일을 일반 사용자 프롬프트와는 다른 shell 프롬프트로 설정해 놓는다. 예를 들면, 많은 사용자들은 일반 사용자들의 프롬프트로 "$"을 사용하고, root사용자의 프롬프트는 "#"으로 정해 놓는다.
  • root로서의 login은 정말 필요할 경우에만 하고, root로서의 작업이 끝나면, 바로 logout 하여라. root 계정으로서의 사용이 없을 수록, 시스템이 손상되는 일도 없을 것이다.