로그인과 로그아웃

login / shell account / logout

log in, 그리고 log out은 시스템에 들어가고 나가는 것이며, 비유하자면 칼잡이가 칼을 꺼내는 동작과 (일을 끝내고) 다시 칼집에 꽂는 동작에 해당한다.

로그인과 로그아웃 과정은 웹 상에 무수히 퍼져있는 회원제 싸이트를 생각해 보면 쉽게 이해할 수 있을 것이다. 하지만 정확히 말해, 이른바 유닉스 시스템의 사용자 계정은 웹싸이트 또는 MS-Windows 시스템의 그것과는 "차원"이 다르다. 예를들어 어떤 거대한 회원제 싸이트 전체의 내용과 기능도 알고 보면 몇 개의 유닉스 특수 계정에 지나지 않는다. 회원제 싸이트에서 웹브라우저를 통해 로그인하고 메일이나 게시판 정도 둘러보는 일은 껌 씹는 것만큼이나 쉽지만 - 만약 그들에게 전화를 걸어 "내가 좀 전에 당신네 시스템에 쉘 계정으로 접속했는데 ..." 이런 소리를 한다면 매우 재미있는 사태가 벌어질 것이다.

쉘 계정(shell accounts)이란?

어떤 시스템에 로그인해서 어떤 명령어 또는 프로그램을 자유롭게 이용할 수 있는 권한이 있는 계정이다. 유닉스 계열에서는 사용자 명령과 시스템 사이에 쉘이라는 번역사가 있어야 대화가 통하므로 쉘 계정으로 로그인하게 되면 자동적으로 쉘이 함께 동작하게 된다. 현재 많은 GNU/Linux 시스템에서는 기본 쉘로 bash라는 것을 이용.

앞으로 별도의 언급이 없으면 "계정"이라 함은 바로 이 쉘 계정을 말한다. 또 C P U 시스템에 쉘 계정을 가지게 되면 (관리자에게 밉보이지 않는 한) 이제부터 설명할 모든 과정이 바로 자기 자신에게도 해당된다는 사실도 기억하자.

어떤 GNU/Linux 시스템에 정상적으로 로그인하려면 그 시스템 바로 앞에서 사용자명과 패스워드를 입력하거나 또는 원격지에서 Telnet이나 Secure Shell 어플리케이션을 이용한다. 아직 한 번도 이런 것을 해보지 못한 사람들은 아마 현재 MS-Windows 환경에서 인터넷 익스플로어를 이용해서 이 문서를 읽고 있을 것이다. 그렇다면 '시작'버튼 -> '실행'메뉴를 선택해 보자. 뭔가 입력하십시오-라는 메시지 창이 뜨면 다음을 입력한다.

telnet cpu.phys.cau.ac.kr

별 이상이 없으면 새 창이 뜨면서 - 이것을 텔넷창, 터미널창이라 부르자 - 사용자명과 패스워드를 요구할 것이다.

Red Hat Linux release 7.2 (Enigma)
Kernel 2.4.7-10 on an i686
-* -----------------------------------------------------------
-* Welcome to CPU, Computational Physics Unlimited!
-* More info about us? Please visit http://cpu.phys.cau.ac.kr/
login: jedi
Password:
Last login: Mon Aug 19 16:05:43 from 165.194.21.1
[jedi@cpu jedi]$

사용자명과 패스워드를 잘못 입력해도 몇 번의 기회를 더 주니까 안심하자; 주의할 것은, 사용자명을 입력할 때는 무엇이 입력되는지 보이지만 패스워드의 경우 (몇 글자라는 사실도 보안상 중요하므로) 화면에 아무것도 나타나지 않는다!

MS-Windows 환경에서 telnet이라는 어플리케이션을 이용해 로그인하는 경우만 보였지만 정말 이것이 첫경험(?)이라면 이쯤해도 충분할 것이다. 사실 다른 어떤 경우라도 지금과 비교해서 대부분 더 쉽고 시각적이다. 시스템의 콘솔(console), 즉 본체에 직접 붙어있는 키보드와 모니터는 언제나 "접속"이 되어 있는 상태이므로 텔넷이나 보안쉘으로 접속하는 과정을 건너뛰고, 그냥 사용자명과 패스워드를 입력하는 것으로 로그인할 수 있다. 더 나아가 엑스 윈도우를 통해 콘솔 로그인을 할 수도 있으며 이 때는 MS-Windows 시스템에 로그온(?)하는 것과 적어도 겉으로는 아무런 차이가 없다. 마지막으로 UNIX 계열의 시스템은 원격지에서도 엑스 윈도우 로그인이 가능한데, 이것은 네트웍에 대해 매우 투명한 구조를 가지고 있는 엑스 윈도우의 특징에 의한 것이다. 엑스 윈도우(X Window System)에 대해서는 며칠 후에 다시 소개하겠다.

Telnet 서비스 대신 SSH를!

Telnet은 보안상 취약한 서비스로 취급받고 있으며 따라서 상대적으로 안전한 Secure Shell(보안쉘)을 이용하거나, 심지어 외부에서 이런 쉘 계정 접속을 하지 못하도록 막아두는 경우도 있다. 여기서 예를 보인 C P U 시스템도 최근(2002년 가을) Telnet 서비스를 중단했으므로 실제로 위와 같이 해서는 로그인 할 수가 없다.

그럼 어떻게 해야할까? 결국 적당한 보안쉘 소프트웨어를 구해다가 이용해야 할 것이다. 현재 MS-Windows 계열의 시스템을 이용하고 있다면 무료로 이용할 수 있는 XShell을 설치할 것을 추천한다. 이 설치 파일은 C P U Ftp에서도 다운받을 수 있다.[2] 하라는대로 고분고분 설치하고, 그것을 실행시키면 아래와 같은 프롬프트가 보일 것이다. 예를들어 C P U 시스템의 주소로 보안 쉘 접속을 하는 모습이다.

XShell> ssh cpu.phys.cau.ac.kr

지금처럼 처음으로 접속하는 주소에 대해서는 그 곳에 대한 인증키를 어떻게 하겠느냐는 대화창이 뜨는데, 매우 특이한 성격이 아니라면 그냥 순순히 긍정적으로 대답하면 된다(인증키 저장). 이렇게 하면 이후 그 주소에 대해 다시 같은 대화창이 뜨지 않을 것이다.

경 고 - 일부 이상한 친구들에게

멀쩡히 잘 돌아가는 시스템에 악질적인 공격을 퍼붓거나 또는 뒷구멍으로 어떻게 해보려고 시간을 보내는 무리가 있다.[3] 이 문서에서 예를 보인 C P U 시스템은 물론이고 다른 어떤 시스템에 대해서 - '어떻게 골릴까'를 고민하는 그 시간에 만화를 보거나 연애나 해라; 아니면 늘 부족할 잠이나 자거나! 정말 추천하는 일은 나의 지식과 능력으로 남을 도울 순 없을까를 살아있는 동안 한 번이라도 고민해 보는 것이다.

이제부터 모든 이야기는 무사히 로그인을 마친 것으로 가정하고 나아갈 것이다. 위의 로그인 화면에서 가장 마지막 줄, 마지막 문자인 $는 바로 로그인을 무사히 통과한 이용자들이 어떤 명령을 내릴 때까지 시스템이 대기하고 있음을 의미한다. 이렇게 하는 것이 이용자 쉘의 기본적인 기능이므로 이 $ 문자를(정확히는 그 줄 전체를) 쉘 프롬프트, 또는 현재 쉘의 이름을 추가해서 배쉬 쉘 프롬프트(Bourne Again SHell prompt)라고 부르자. 다시 말해 앞으로 $ 문자로 시작하는 구문이 있다면 그것은 똑같이 타이핑할 것이 아니라 $ 문자 이후의 내용을 타이핑하고 엔터키를 눌러서 시스템에 명령을 하라는 의미다.

어디에 떨어져도 일단 의식을 회복하고 나면 누구나 본능적으로 수많은 의문을 품게 된다 - 여기가 어딘지, 내가 누군지, 어쩌다 여기 떨어졌는지, 주위에 무엇이 있는지 등등 - 이어지는 이야기는 바로 이런 호기심을 따라가는 과정이라 할 수 있다.

잠깐! 넘어가기 전에 로그아웃을 먼저 알아야 할 것 같다. 원격지에서 접속을 한 경우나 콘솔에서 시스템을 이용한 경우나 아래와 같은 명령으로 시스템 밖으로 나갈 수 있다. 로그인과 마찬가지로 - 어떤 회원제 웹싸이트의 계정에서 로그아웃하는 것과 비슷하면서도 "차원"이 다른 과정이다.

$ logout
Connection closed ...
$ logout

여느 회원제 웹싸이트에서도 강조하듯이, 제발 로그아웃 명령 없이 터미널창을 그냥 닫지 말자! 여섯 글자나 되는 명령에 엔터키까지 누르는 것이 귀찮다면 로그아웃을 위한 쉘 단축키 Ctrl-D를 이용하라. 이렇게 편한 단축키를 두고 작고 이쁜 손을 억지로 뻗어서 Alt-F4를 누르려 하지 말고! :-(



[2] 이것 말고도 MS-Windows 시스템에서 이용가능한 보안 쉘 프로그램이 몇 가지 더 있다. 이런 프로그램에 대한 호기심은 각자가 해결하라.

[3] 이들을 해커(hackers)라 칭한다면 진짜 해커들이 분개할 것이다 - 이들은 단지 늙어버린 스크립트 베이비(script babies), 잘 되어 봐야 크래커(crackers)다.