Chapter 8. 로그인과 로그아웃

Table of Contents
터미널을 통한 로그인
네트워크를 통한 로그인
login 프로그램이 하는 일
X와 xdm
접근 제어
쉘의 시작

"I don't care to belong to a club that accepts people like me as a member." (Groucho Marx)

"나같은 사람을 멤버로 받아주는 클럽에 몸담고 있지만 뭐 별로 걱정은 안됩니다. " (Groucho Marx: 미국의 코미디언)

여기서는 사용자가 로그인하고 또 로그아웃할 때 어떤 일이 일어나는 지를 살펴보도록 하겠다. 또한, 각종 백그라운드 프로세스들의 다양한 상호 작용과, 로그 파일, 설정 파일 등에 대해서 상세히 알아보게 될 것이다.

터미널을 통한 로그인

Figure 8-1은 터미널을 통한 로그인이 어떻게 이루어지는 지를 보여주고 있다. 우선, initgetty 프로그램을 각각의 터미널(혹은 콘솔)에 실행시킨다. getty는 터미널에서 로그인하려는 사용자가 있는지 살펴보면서 기다린다(즉, 사용자가 뭔가를 타이핑하지 않는지 살펴본다). 사용자가 있다면, getty는 환영 메시지를 출력하고(이 메시지는 /etc/issue에 들어있다) login: 같은 프롬프트를 띄운 뒤 마지막으로 login 프로그램을 실행시킨다. login 프로그램은 username을 매개변수로 전달받고, 해당 password를 묻기 위해 password: 같은 프롬프트를 띄운다. password가 정확하면, login은 설정되어 있는 쉘을 실행시킨다. password가 틀리다면, login 프로그램은 단순히 종료된다(보통은 몇번 정도 기회를 더 준 뒤에 종료된다). initlogin 프로그램이 종료된 것을 감지하고, 터미널에 새로운 getty를 띄워 놓는다.

Figure 8-1. 터미널을 통한 로그인: init, getty, login, 그리고 쉘의 상호작용.

위에서, 새로운 프로세스는 오직 init에 의해서만 생긴다는 점을 주목하기 바란다(fork 시스템 호출을 사용한다). gettylogin은 단지 실행 중인 프로그램과 교대를 할 뿐이다(exec 시스템 호출을 사용해서).

각각의 시리얼 라인에는 그 라인만을 전담하는 개별적인 getty를 미리 띄워 놓는데, 이렇게 하는 이유는 사용 중인 터미널만 감지해서 getty를 띄우는 일이 좀 복잡하기 때문이다. 또한, 각각의 연결은 그 설정과 속도가 제각각일 수 있기 때문에, getty는 그 각각에 알맞게 적응하도록 되어 있다. 이것은 특히, 각 전화 접속마다 그 설정과 매개변수들이 바뀔 수 있는 다이얼-인 연결인 경우에 중요한 기능이다.

gettyinit에는 여러가지 버전이 있는데, 각각 장단점이 있다. 현재 자신의 시스템에 설치된 버전 뿐만 아니라, 다른 버전들에 대해서도 알아두면 좋을 것이다(이런 것들은 Linux Software Map에서 찾을 수 있다). 만일 시스템에서 다이얼-인 연결 서비스를 제공하지 않을 계획이라면, 아마도 getty에 대해선 별로 신경쓸 필요가 없을 것이다. 그러나 init에 대해서는 언제나 주의를 기울여야 한다.