백지부터 시작하는 리눅스 강좌 – 명령어와 PATH

명령어 중에는 셸에 내장되어 있는 것도 있습니다. 이런 것을 내부(internal)명령어라고 하며, 셸이 실행 파일의 경로를 찾아 실행시키는 명령어를 외부(external)명령어라고 합니다. 내부 명령어는 부팅할 때 셸과 함께 메모리에 적재되는 특징이 있어 외부 명령어와는 다르게 실행할 때 새로운 프로세스를 만들 필요가 없습니다. 생각해 봅시다. DOS를 사용할 때에도, 실행 파일이 있어야만 사용할 수 있는 명령(format 등 대부분의 명령)과, 실행 파일 없이도 사용할 수 있던 명령이 있었습니다. 아마도 이것이 내부 명령어와 외부 명령어의 차이로 생각할 수 있을 것입니다. 내부 명령어는 시스템에 꼭 필요한 명령으로 되어 있어 별도의 실행 파일 없이도 동작하는 것이 보통입니다만, 외부 명령어의 경우에는 해당하는 실행 파일이 있는지의 여부가 중요하게 작용합니다. 그렇다면 어떤 명령어가 내부 명령어이고 어떤 명령어가 외부 명령어인지 확실하게 알기 위해서는 어떻게 해야 할까요? 다음과 같이 입력한 다음, 결과를 살펴봅시다.

# help

많은 명령어들이 나옵니다. 이것이 바로 리눅스에서 사용하는 내부 명령어입니다. 그렇다면 그 중 한 가지 명령을 더 자세히 살펴보도록 하겠습니다.

[folder@hanbit test]$ help cd

help 명령 뒤에 자세히 알고 싶은 내부 명령어를 입력하면, 이 명령의 기능 등의 설명을 자세히 볼 수 있습니다.

내부 명령어별 간단한 소개를 해 주시면 좋겠어요. 표로 그려 주시면 더욱 좋고요. 분량은 좀 되지만 필요한 부분이라고 생각합니다.

셸에서 프로그램을 실행하는 데는 세 가지 방법이 있습니다. 우리가 가장 흔히 사용하는 외부 명령어인 ls로 이런 방법을 확인해 보겠습니다.

첫 번째는 파일의 절대 경로를 이용하여 프로그램을 실행하는 것입니다. ls의 실행 파일은 /bin 밑에 자리하고 있습니다. 한번 ls 대신에 /bin/ls를 입력해 보겠습니다. 분명히 조금은 다르죠? 컬러링 옵션도 없고요. 그야말로 아무런 옵션 없는 순수 ls를 보실 수 있습니다.

두 번째는 우리가 일반적으로 사용하는, 프로그램의 이름만을 입력하여 실행하는 방법입니다. 이 방법을 이용하기 위해서는 실행하려는 프로그램이 기본적으로 명령을 탐색하는 디렉토리 안에 들어 있어야 합니다. 이런 기본 검색 디렉토리는 PATH라는 변수에 기록되어 있습니다. 물론 필요에 따라 얼마든지 수정할 수 있는 부분입니다. 그러면, 우리가 실행하고자 하는 ls 가 들어있는 /bin이 PATH에 설정되어 있는지 확인해 보겠습니다.

[heyjin@heyjin Work]$ echo $PATH /bin:/usr/bin:/usr/local/bin:/usr/bin/X11:/home/heyjin/bin

물론 PATH의 내용은 개인의 설정에 따라 다를 것입니다. 설정을 보면, /bin이 PATH 안에 기록되어 있다는 사실을 확인할 수 있습니다. 우리가 ls를 입력하면, PATH 안에 지정된 경로 안에 ls 가 있는지 찾아서 확인합니다. PATH에 대한 더 자세한 내용은 조금 뒤에 설명하겠습니다.

마지막으로, 링크를 이용하는 방법이 있습니다. 복잡한 경로의 특정 파일을 종종 이용하거나, 혹은 중구난방으로 흩어진 라이브러리 파일이나 설정 파일 등을 쉽게 관리하기 위한 방법으로도 사용되는 링크는 윈도에서의 바로 가기와 같은 것이라고 생각하시면 이해하기 쉬운 내용입니다. 링크에는 소프트 링크와 하드 링크가 있으며, 약간의 차이는 있지만 사용하는 입장에서는 크게 다를 것은 없습니다. 우리가 일반적으로 사용하는 것은 소프트 링크입니다.

링크를 거는 명령어는 ln입니다. 이것으로 소프트 링크와 하드 링크를 다음과 같이 테스트하겠습니다.

[heyjin@heyjin heyjin]$ ln -s /etc/fstab fstab [heyjin@heyjin heyjin]$ ls -l fstab lrwxrwxrwx 1 heyjin heyjin 10 5월 6 09:32 fstab -> /etc/fstab [heyjin@heyjin heyjin]$ rm fstab [heyjin@heyjin heyjin]$ ln /etc/fstab fstab [heyjin@heyjin heyjin]$ ls -l fstab -rw-r–r– 2 root root 769 3월 13 14:50 fstab

소프트 링크를 만들 경우에는 ln 뒤에 -s 옵션을 붙입니다. 옵션 없이 사용하면 하드 링크가 되지요. 소프트 링크 파일은 원본 파일의 위치 정보만을 기억하기 때문에 용량이 작으며, ls -l로 살펴보았을 때 링크된 파일이라는 뜻의 l과, 파일 이름 뒤에 적힌 원본 파일의 경로를 볼 수 있습니다. 이 파일을 열어 보면, /etc/fstab의 내용으로 바로 연결됩니다. 하드 링크의 경우에는 특별히 링크라고 표시 나는 점은 없습니다. 있는 그대로 용량이 보이고 ls를 해 보는 것 만으로는 링크라는 티도 나지 않습니다. 하지만 이 파일을 열어 수정하면 원본 파일도 함께 수정됩니다. 물론 이 파일을 삭제하더라도 원본에는 이상이 없습니다.

링크는 복잡한 경로의 파일이나 디렉토리에 쉽게 접근하여 사용할 수 있는 방법입니다. 그러나 상대 경로로 여러 파일들을 참고하는 프로그램의 경우에는 링크를 이용하여 실행하는 것은 좋은 방법이 아닙니다. 이 경우에는 PATH 환경변수에 이 경로를 넣어 주시는 것이 더 현명한 방법입니다.

백지부터 시작하는 리눅스 강좌 – rpm 이만큼만 알자

어떤 리눅스 서버를 관리하게 되었다면, 아니, 서버라는 말이 거창하다 면, 한 컴퓨터의 루트가 되었다면 당연히 관련된 프로그램들을 깔아 주어 야 할 것입니다. 물론 가장 기본적이며, 확실하고, 자기가 원하는 대로 자 유롭게 설정하여 깔 수 있는 방법은(물론 그 모든 것에 관해 웬만큼 안다 는 전제 조건이 있겠지만.) 바로 소스를 받아 컴파일 하는 것입니다. 그러 나 모든 관리자가 시간이 남아 도는 것도 아니고, 또 모든 관리자가 모든 것을 다 찾아서 알아낼 정도로 성실한 것도 아니기 때문에 존재하는 녀석 들이 있습니다. 그 중 하나는 바이너리 파일이며, 또 다른 것은 rpm입니 다.

바이너리는 받아서 놓고 설정파일만 손 봐 주면 된다는 점에서는 편리하지 만, 하여간에 rpm보다는 덜 쓰이는 추세입니다. RPM은 레드햇 패키지 관리 자를 줄인 말이며, 여기에는 레드햇이라는 이름이 들어 있지만, 누구나 사 용할 수 있는 개방된 패키징 시스템으로 만들어 졌습니다. RPM은 사용자 가 새로운 프로그램의 소스 코드를 소스와 바이너리로 패키징이 가능하도 록 합니다. 이렇게 되면 바이너리를 쉽게 설치하고 찾아내고 소스를 쉽게 다시 빌드할 수 있게 됩니다. 이것은 모든 패키지와 파일의 데이터베이스 를 관리하는데, 이는 패키지를 검증하고 파일과 패키지의 질의에 쓰입니 다.

레드햇 소프트웨어는 다른 배포본 제작자들이 RPM을 살펴보고 사용하는 배 포본에 채용할 것을 권장합니다. 이렇게 많은 부문에서 확장 가능한 기반 을 제공함에도 불구하고도, RPM은 매우 유연하고 사용하기 쉽습니다. 게다 가 이것은 GPL을 따르고 있으므로 로열티 없이 배포되고 있습니다. 아주 멋지구리하죠. ^^

도니 바니즈가 쓰고, 이기동 님 께서 번역하신 레드햇 패키지 하우투에 보 면 다음과 같이 RPM의 장점들이 나와 있습니다. 일단 먼저 살펴 보겠습니 다.

첫째로, 필자가 RPM을 바탕으로 하는 철학을 설명하고자 한다. 설계한 목 적중 하나는 사용자들이 소스를 “그대로” 사용할 수 있도록 하는 것이 다. RPP(RPM 이전의 패키징 시스템)로 만든 소스 패키지들은 우리가 빌드 한 소스에서 “해킹” 한 것이었다. 이론적으로, 한 사람이 RPP로된 소스 를 설치하는 것은 아무런 문제가 없다. 그러나 소스가 오리지널이 아니 면, 소스를 빌드할 때 어떠한 것을 수정해야 하는지 참조할 만한 것이 없 다. 결국 사용자는 원래 소스를 별도로 받아야 한다. RPM을 사용한다면, 여러분은 컴파일할 때 사용한 패치와 함께 원래 소스를 그대로 사용할 수 있다. 우리는 여기서 커다란 이득을 얻을 수 있다. 왜 일까? 여러 가지 이 유가 있다. 하나는, 프로그램이 버전업되면, 여러분은 레드햇 리눅스에서 처음부터 컴파일할 필요가 없다. 그리고, 여러분은 어떠한 일을 할 필요 가 있는지 보기 위하여 패치를 살펴볼 수 있다. 컴파일할 때 기본값은 이 러 한 방법으로 쉽게 볼 수 있다.

RPM은 강력한 질의 옵션을 둘 수 있도록 설계되었다. 여러분은 전체 데이 터베이스에서 특정한 패키지나 파일을 찾을 수 있다. 역시 여러분은 어떠 한 파일이 어느 패키지에 담겨 있는지 쉽게 알아낼 수 있다. RPM 파일 자 체는 압축되어 있지만, 알아야 필요가 있는 모든 (압축이 풀어진 형태의) 정보와 함께 패키지에 첨가한 특별한 바이너리 헤더 덕분에, 여러분은 개 별적인 패키지를 쉽고 빠르게 검색 할 수 있다.

또하나의 뛰어난 기능은 패키지에 이상이 있는지 검증할 수 있는 능력이 다. 걱정된다면 어떠한 패키지의 중요한 파일을 지우고, 검증해 본다. 여 기서, 여러분은 필요한 패키지를 다시 설치할 수 있다. 가지고 있는 설정 파일은 모두 보존된다

자, rpm이라는 녀석이 마음에 드시나요? 그러면 다음으로 넘어가도록 하겠 습니다.

rpm은 리눅스, 특히 레드햇 배포판에서 사용하도록 만들어진 녀석입니다 만, 다른 배포판은 물론이고, 유닉스 등에서도 사용할 수 있습니다. RPM 을 설치하기 위한 최소 요구 사항은 이것을 소스에서 빌드하는 데 꼭 필요 한 gcc와 make 등이 있을 것입니다. 이 정도라면 무슨 짓을 하려고 해도 기본으로 깔게 되는 것이니까 크게 신경쓸 일은 아닙니다만.

rpm을 찾으려면 어떻게 하면 될까요? rpm은 레드햇이나 기타 등등의 리눅 스 회사의 ftp 사이트를 통하여 얻을 수 있으며, 우리 나라에서는 적수네 동네의 ftp 등을 통해 구할 수도 있습니다. 한번 들어가 보죠…….

# ftp linux.sarang.net

username을 물어 보면 다른 엉뚱한 것 쓰지 마시고(!!) anonymous 라고만 적으세요. 그러면 익명 로그인이 가능하게 됩니다. 패스워드로는 메일 주 소를 적으시면 되는데, 사실 아무 문자열이나 넣어도 상관은 없습니다만, 자신의 메일 주소를 남기는 것이 에티켓입니다. 이상한 데 사용되는 것은 아닐테니 제대로 적으세요. 들어가 보면 뭐가 잔뜩 있는데, 자세한 것은 돌아다녀 보시면 알고……. ftp는 다양한 곳을 다녀 보며 사용하는 방법 에 익숙해 지는 것이 중요합니다. 익숙해지기 전에는, 그러니까 구조 같 은 것을 대충 잘 알게 되기 전에는 헤매는 것도 장난이 아니랍니다. ^^ 조 금 머리를 써서 빨리 익숙해 지는 것이 좋은 관리자가 되는 지름길입니 다. 혹은, rpmfind에 가 보셔도 좋겠지요. 끝이 com 이었는지 net 이었는 지 아니면 org였는지는 기억이 나지 않습니다만…… 북마크되어 있어서 일일히 타이핑할 필요가 없거든요. ^^;;;; 게을러서 말이죠. 이 곳에 가 보시면 관련된 rpm 들을 쉽게 찾으실 수 있습니다만, ftp 사이트만큼 최신 의 자료가 빨리빨리 올라오지는 않습니다. 주의하세요. ^^

데비안에서도 rpm 을 쓸 수 있습니다…… 참고하시고. 아, 물론 시작하 면서부터 데비안을 쓰시는 분은 가뭄에 콩 나는 것 보다 조금 적게 본 것 같습니다만. ^^ 이 강좌 보시는 분들이 쓰시는 리눅스래야 뭐….. 레드 햇 계열들이겠지요. 아마도. 가장 대중적이니까요…….

먼저 설치하는 법을 살펴 보겠습니다. 가장 간단한 형태로, RPM 은 패키지 를 설치할 때 다음과 같이 사용할 수 있겠습니다. 물론 여기서 i라는 옵션 은 당근 install의 i 겠지요.

rpm -i foobar-1.0-1.i386.rpm

그러나~~~~ 만약에 이것이 이미 설치되어 있는 것이라면 곤란합니다. 이 때는 i 대신에 업그레이드의 U를 쓰지요.(대문자 U 입니다.) 아예 외워 두 시면 좋은 것이, rpm -Uvh 식으로 외우시면 사용하기 편리합니다. 이 옵션 은 업그레이드 혹은 설치를 하는데, 얼마만큼 설치가 진행되었는지 해쉬 (#) 표시가 보이는 것입니다. 외우세요. ^^

다음의 간단한 명령은 패키지를 제거할 때 쓰는 것입니다. eraser의 e 일 것입니다.

rpm -e foobar

매우 쓸모 있지만 더욱 복잡한 명령중 하나는 여러분이 FTP를 통하여 설치 하는 것입니다만, 아직 실제로 써 본 일은 없답니다. 하여간 설명에 의하 면, 여러분이 네트웍에 연결되어 있고 새로운 패키지를 설치하기를 원한다 면, 여러분에게 필요한 것은 파일의 정확한 URL과 함께 파일의 위치를 정 하는 것인데, 다음과 같이 하면 됩니다.

rpm -i ftp://ftp.pht.com/pub/linux/redhat/rh-2.0-beta/RPMS/foobar-1.0-1.i386.rpm

이제는 FTP 를 통한 설치와 질의 기능을 사용할 수 있습니다. 이때 ftp/bin 디렉토리에 rpm 바이너리를 가져다 놓아야 할 것입니다. ftp 서버 가 rpm 질의를 받을 수 있게 하기 위해서 말이죠.

실수로 몇 가지 파일들을 지웠는데, 어느 것을 지웠는지 확신할 수 없다 고 합시다. 여러분이 전체 시스템을 점검해 보고 어떠한 파일이 빠져 있는 지 보려면, 다음과 같이 하면 됩니다.

rpm -Va

알 수 없는 파일을 보게 되었는데, 이것이 어떠한 패키지 안에 있는지 보 려면, 다음과 같이 하면 됩니다.

rpm -qf /usr/X11R6/bin/xjewel

혹은 asdf RPM을 발견하였지만, 이것이 무엇인지 알 수 없을 때가 있습니 다. 이것이 무엇에 쓰는 물건인지….. 가 아니라 하여간 정보를 얻고 싶 으면 다음과 같이 할 수 있습니다.

< -qpi>

이제 여러분이 asdf RPM을 설치할 때 어떠한 파일이 있는지 확인하는 방법 이 남았습니다.

rpm -qpl asdf-1.2-2.i386.rpm

이 정도만 능수능란히 다루어도 rpm 잘 만진다는 말을 듣기에 부족함이 없 을 것입니다.

백지부터 시작하는 리눅스 강좌 – 패스워드 관리

사용자를 만들어 보셨죠? 그런데 이 사용자가 처음 로그인 했을 때 자기 홈 디렉토리가 아니라 잘 쓰는 디렉토리로 들어갈 수 있다면 편리하겠지 요?

그런 것은 둘째치고, 한번 /etc/ passwd 파일로 들어가 봅시다. 보통 의 /etc/ passwd 파일은 다음과 같은 내용이 줄줄이 들어 있습니다.

username:passwd:UID:GID:full_name:directory:shell

username은, 사용자의 계정 이름으로서 유일하게 존재하는 문자열이 되겠 지요.

passwd는 입력한 그대로 저장되는 것이 아니라 encode된 상태입니다. 그래 야 그냥 열어봐서는 알 수 없으니까요. 하지만 이나마도 다 패스워드 파 일 읽어서 실제 패스워드를 찾아 주는 것이 많아서…… –+

UID는 숫자로 된 user ID로서, 유일합니다. 같은 UID를 가진 사람은 최소 한 같은 서버 안에는 존재하지 않는 것입니다. 이것은 문자열로 된 계정 을 컴퓨터가 인식하고 구분하는 데 쓰이는 것입니다만, 사람도 쓰려면 쓸 일이 생기는 녀석입니다.

GID는 숫자로 된 기본 group ID입니다. 리눅스를 사용하는 사람은 그룹을 주어 묶을 수 있는데, 바로 이럴 때 쓰이는 것이지요.

full_name이야말로 user의 실제 이름입니다. 실제로 이 필드는 GECOS (General Electric Comprehensive Operating System) field라고 불리우 며, 단지 실제 이름보다는 다른 정보를 가질 수 있습니다. 예컨대, 전혜진 이라는 이름 대신 Brenda 라고 넣어도 상관은 없다는 말이 되기는 합니다 만….. 아마 그 이름, 메일에도 붙어 나갈텐데 제발 욕 들어간 문자열은 넣지 마시길! 섀도 패스워드에서는 이 부분을 주석 정도로 생각합니다.

directory는 사용자의 홈 디렉토리, 로그인해서 처음 들어가는 것입니다. 아까 맨 처음에 뭐 하자고 했죠? 로그인 해서 들어가는 것을 바꾸자고 했 죠? 이 부분을 고쳐 주면 되는 것입니다.

shell은 사용자의 login shell을 의미합니다.

그럼 실제 사용되는 패스워드 파일의 한 줄을 볼까요?

hjjun:Npge08pfz4wuk:503:100:Jun Heyjin:/home/hjjun:/bin/sh

hjjun은 당연히 계정 이름이겠죠? Np는 salt이며, ge08pfz4wuk는 encode 된 password입니다. (잘 모르겠으면 넘어가도 되는 부분입니다.) encode 된 salt/password는 kbeMVnZM0oL7I가 될 수도 있고, 둘은 같은 password 를 가리킵니다. 같은 password에 대해서 4096개의 다른 encoding이 존재 할 수 있다고 합니다만. 여기서 예를 든 password는 ‘password’이며, 실제 로 이런것을 사용하는 사람도 없겠지요? 있을 지도 모르지만. 아, 여기 보 면, /home/hjjun이 홈 디렉토리입니다. 이것을

hjjun:Npge08pfz4wuk:503:100:Jun Heyjin:/usr/local/mysql:/bin/sh

로 바꾸게 되면, 로그인하면 /usr/local/mysql로 들어갈 수 있습니다. 홈 디렉토리도 이 곳을 찾게 되죠. 간단하죠?

보안을 위해 섀도 패스워드라는 것을 사용할 수 있습니다. shadow suite 가 설치되면, /etc/ passwd file은 다음과 같이 바뀌게 됩니다.

hjjun:x:503:100:Full Name:/usr/local/mysql:/bin/sh

두번째 field의 x는 아무 것도 아닙니다. 형식은 그대로인데 암호화된 패 스워드가 안 들어 있는 것 뿐이죠. 이 쪽이 안전합니다. 가급적 설치할 때 새도 패스워드와 MD5를 선택해 주시는 것이 좋겠지요!

백지부터 시작하는 리눅스 강좌 – 계정 만들기

일단 리눅스들은 다 깔아 보셨나요? 남는 컴이 있는 분들은 와우를, 하드 에 1기가의 여유도 안 남은 분들은 qlinux를 깔아 보셨으리라 생각됩니 다…… CD가 없다면, 인터넷에서 받아서 구워 버리셔도 되겠지요? ^^ 하 여간 앞으로의 강좌는, 리눅스를 설치하였다는 전제가 조금은 들어가게 하 겠습니다. 언제나 일반 유저로만 할 수는 없다는 말이 나와 버렸거든 요!!!!
새로 깔아 놓은 컴을 위해 제일 먼저 하실 일은 새로운 사용자를 만드는 것입니다. 이미 root로 로그인하여 하고 싶은 일을 마음껏 할 수 있는데 왜 귀찮게 새로운 사용자를 만드냐고요? 이유는 간단합니다. 섬세하고 귀 여운 컴퓨터를, 무식한 관리자의 실수에서 보호하기 위해서다! 라 고…… 기분 나쁘셨을 지 모르겠지만, 그것이 사실입니다. 물론…… 가끔 긴장하는 기분으로 작업하는 것이 좋아 root 로그인을 즐기고는 있습 니다만, 대개의 경우 개인 계정으로 로그인하여 root로 변신~! 을 하고 있 죠.
만약에, rm -rf bin/ 이란 명령을 한다고 가정합시다. 개인 유저라면 자 기 디렉토리에 사고를 당한 것 뿐이겠지요. 다른 사람들은 안녕할 것입니 다.
그렇다면 관리자가, / 디렉토리에서 그런 명령을 내렸다면? 아마 제정신 인 인간은 그런 짓을 하지 않겠습니다만, 대부분의 명령을 사용하지 못하 게 되지 않을까요? 물론 실제 명령어는 다른 곳에 있고, /bin 밑에는 심볼 릭 링크만 들어 있는 경우도 있으며, 그런 경우에는 상관 없겠지요. 조금 귀찮아 질 뿐.
그렇다면 관리자가, 자기 디렉토리 밑의 bin을 지우기 위해 rm -rf bin/ 하고 입력하다가, 실수로 다음과 같이 입력하면 어떻게 될까요? –;;;;;;
# rm -rf bin /
예…… bin이 깨끗이 날아가는 것은 웬만한 사람은 개인 스크립트나 바 이너리가 별로 없을테니 순간이고, 다음 순간 / 밑의 모든 파일들이 하나 하나 날아가기 시작할 것입니다. –+ 소위, 재난이라는 것이죠. 이 사실 을 깨달은 순간 바로 Ctrl+c를 누르거나, 컴을 꺼 버리면 피해는 줄어들겠 지만, 아마 상당히 재난이 되어 버릴 것이라는 점 만은 확실할 것입니다.
그렇기 때문에! 안전을 위해 일반 유저로서의 사용이 필요하다는 것이겠지 요. 일반 유저로 작업하다가 루트의 권한이 필요할 때는 잠시만 루트가 되 면 됩니다. 그 방법은 다음 강의에 적도록 하지요.
새로운 아이디를 만드는 것은 간단합니다.
# adduser hjjun
하면 hjjun 이라는 계정이 만들어 집니다. 대부분의 경우는 /home 이라는 파티션을 만드셨을 테고, 이 경우 /home/hjjun 과 같은 식으로 계정의 홈 디렉토리가 생깁니다. 다음으로 이 계정의 패스워드가 필요한데, 다음과 같이 해 줍니다.
# passwd hjjun
패스워드를 2번 물어 봅니다. 두 번 다 일치하면 이 패스워드가 hjjun 이 라는 계정의 패스워드로 저장이 됩니다. 다음부터는 이 계정으로 로그인 하실 수 있습니다.
계정 사용자를 삭제하는 경우도 종종 생깁니다. 예를 들면 학교에서라면 이 사람이 졸업했을 때. 호스팅 회사라면 계약기간 만료시. 회사에서라면 이 사람이 다른 곳으로 갔을 때 계정을 없애게 됩니다. (물론 친구들끼리 쓰다가 수틀려서 날려 버리는 경우도 있겠습니다만.) 안 쓰는 계정을 막거 나 없애지 않으면 나중에 곤란한 일이 생길 수도 있어요. 나쁜 놈들이 그 리 들어와서 노는 경우가 많으니까!
계정을 삭제하기 위해서는 먼저, 계정 내의 모든 파일들, 우편함, mail alia
ses, print 작업들, cron과 at 작업들 그리고 그 계정과 관련된 모든 작업들을 제거해야 겠죠. 그리고나서 /etc 밑의 passwd나 group 파일에서 관 련된 라인을 지웁니다. (username을 추가된 모든 group으로부터 지우는 것 도 잊지 마세요!) 내용물 제거를 시작하기 전에 계정을 사용하지 못하도록 조치해 두는 것이 좋습니다. 그렇게 함으로써 계정을 삭제하는 동안 사용 자가 계정을 이용하는 것을 막을 수가 있습니다.
사용자가 자신의 홈 디렉토리 외부에 파일을 가지고 있을 수도 있다는 것 을 염두하시고요. find 명령어로 그것들을 찾을 수 있습니다. find의 사용 은 기본적으로 다음과 같이 해 주세요.
# find / -user username
그러나 용량이 클 경우 위 명령은 오랜 시간이 걸린다는 것을 알아두세요. 
그러나~~~~ 이런 과정을 간단히 해 버리는 방법도 있습니다. 많은 리눅스 배포본에서 사용하는 명령은 외우기도 쉽습니다.
# deluser username
혹은
# userdel username
위와 같이 실행하면 해당 계정의 디렉토리, 계정과 패스워드가 날아갑니다. 물 론 손으로 하는 것도 어렵지도 않고, 능숙해지면 빼먹는 게 없어 좋습니 다. 프로그램이 모든 것을 해 주는 것은 아니니까요. 어느 쪽이건 마음에 드는 쪽으로 해 보세요.

백지부터 시작하는 리눅스 강좌 – telnet과 ftp

telnet은 많이 들어 보셨죠? 오늘은 이 telnet에 관해 간단히! 아주 간단 히 살펴보도록 하겠습니다. 일단….. 나우누리에 아이디 있는 분들은 이 렇게 해 보세요.

# telnet nownuri.net

웬 숫자가 뜨면서, 뭔지 모를 말이 뜨다가 연결이 되죠? 감격입니다. ^^

telnet는, 리모트 컴퓨터를 유저가 실제로 그 사이트에 있는것과 같이 사 용할 수 있는 프로그램입니다. telnet은 정확한 리모트관리를 할 수 있으 므로, 가장 강력한 Unix 용 툴중 하나이며, 사용자 측면에서도 편리한 프 로그램이라 할 수 있겠습니다. 인터넷상의 어디에서도 자신의 모든 파일램 에 억세스할 수 있으며 X 서버와 결합하면 콘솔 앞에 있는 것과 지구의 반 대측으로부터 사용하는 것은 -조금 느려 터진다는 것을 빼고는- 별 차이 가 없다 해도 과언이 아닙니다. telnet은 웬만한 정상적인 배포본에는 다 들어 있습니다. ^^

telnet을 사용하는 데는 엄청난 명령어를 배울 필요는 없고, 그냥 열어서 작업할 줄 알고, 끝낼 줄만 알면 됩니다. 그러면 시험적으로 mathzzang 이 라는 서버가 있다고 치고….. 서버에 접속을 해 봅시다.

# telnet mathzzang
Trying 111.222.33.4…
Connected to mathzzang
Escape character is ‘^]’.

WOWLINUX Release 7.0 (AllLiEs)
login: heyjin
Password: 어쩌구저쩌구

그러면 우리가 서버에서 로그인을 했을 때 보이는 화면과 같은 화면이 터 미널에 뜹니다. ^^ 사용하다가 Ctrl+]을 누르면 telnet> 이라는 프롬프트 가 뜨며, 이때 quit를 입력하면 끝납니다. 혹은 작업하다가 exit를 입력하 여 로그아웃 할 수도 있습니다.

그러나 우리가 예를 들어 나우누리에 로그인 했다면, 파일을 다운로드 하 거나 혹은 긴 글을 파일로 저장하고 싶을 수도 있습니다. 이 때는 어떻게 할까요? 이때는 telnet 이 아니라 ztelnet을 씁니다. 이것은 안 깔아 놓 은 경우도 있으니….. 필요하면 어떻게 하라고요? 관리자를 괴롭히면 됩 니다. ^^

로그인 하는 방법은 똑같습니다. 그러면 원하는 파일이 있을 때 Ctrl+]을 눌러 프롬프트를 띄운 다음……

telnet> rz

위와 같이 입력하면 파일의 다운로드가 진행됩니다.

파일을 업로드 하고 싶을 때는 다음과 같이 합니다. 예를 들어, apple.zip 이라는 파일을 업하고 싶으시다면……

telnet> sz apple.zip

해 주시면 되기 때문에 기본적인 파일 전송은 가능합니다.

그러나 본격적인 파일 전송에는 역시 ftp가 제격이죠. 꼭 필요한 것만 조금만 배워 보겠습니다. ^^

우리 과의 리눅들 중에는 윈도에서 쓰는 ftp와 비슷한 모양을 가진 것이 깔려 있는 것도 한두 대 있습니다…… 라는 것은 다시 말하면, 대개는 텍스트 상에서 써야 한다는 말입니다. 그러나 개인적으로는 이 편을 더 선 호하고 있으며, 더 빠르기도 합니다. ^^ 아마 안 깔아 주시는 이유는, 쓰 는 녀석이 별로 없다는 이유 때문이 아닐까 싶군요…….

여담이지만, 웹서버에다가 마작을 깔아 놓으면 어떨까 생각중입니다. 들키 면 사망이겠지요? ^^ 그럼 ftp 를 써 봅시다. 웹서버 프로그램이 안 깔려 있는 컴을 웹브라우저로 봐도 소용 없듯이, ftp 서버 프로그램이 있어야만 돌아갑니다. 주의하세요!!!!

# ftp 접속할 호스트

에? 안된다고요? 보안을 위해 특정 컴이 아니면 접속 안 되게 해 놓았나 보죠. 많은 경우 그리 하고 있고, 그런 것은 ^^ 어쩔 수 없습니다…… 그러나 우리 과 서버는 아마도 외부 접속이 가능한 것이 1대 있는 것으로 알고 있으니 확인해 보세요. 그럼 들어가 봅시다……

ftp를 실행하면

Connected to mathcom
220 mathcom FTP server (SunOS 5.7) ready.
Name (math:heyjinism): heyjinism
331 Password required for heyjinism.
Password:
230 User hjchun logged in.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp>

이런 썰렁한 화면이 뜹니다. ^^:;;;;; 그러면 간단한 명령어를 살펴보죠.

일단 아스키와 바이너리라는 말은 뭔지 아시죠? 간단하게 구별하면, 메모 장이나 vi로 열어봐서 글자가 제대로 보이는 것은 아스키, 이상한 문자와 숫자들 같은 것만 가득한 것은 바이너리입니다. ^^ 바이너리를 아스키로 보내면, 그림이나 실행 파일이 제대로 보이지 않거나 혹은 실행이 안 되 는 불상사가 생길 가능성이 상당히 높아지며, 아스키를 바이너리로 보내 면 파일을 읽을 때 귀찮은 일이 많이 생깁니다. ^^ 아스키 파일을 전송할 때는 ascii, 바이너리 파일을 전송할 때는 bin을 입력한 다음 시작하는 것 이 안전하죠.

파일을 전송하는 명령어는? put 입니다. 그러면 가져오는 것은 당연히 get 이겠죠? ^^ 그러면 여러 파일들, 예를 들면 haha1.zip 부터 haha10.zip 까지 10개의 파일이 있다면 어떻게 할까요? 일일히 하나하나 보내는 것은 낭비입니다. mget haha* 하면 1번부터 10번까지의 파일을 가 져올 것인지 물어봅니다. y를 쳐 주면 전송됩니다. 보낼 때는 mput을 같 은 방식으로 사용하면 되겠지요. ^^

파일이 큽니다. 보내거나 받는 것을 해 놓고는 제대로 가고는 있는지 궁금 해 질 수도 있습니다. 이럴 때 쓰는 것이 hash 입니다. 이것을 사용하면 진행됨에 따라 ####### 하고 표시가 뜹니다. ^^

그 밖에, ls, cd 등의 명령은 기본적으로 먹습니다. ^^ chmod도 사용 가능 합니다. 자세한 것은 ftp의 프롬프트에서…….

 

ftp> help
Commands may be abbreviated. Commands are:
! debug mdir sendport site
$ dir mget put size
account disconnect mkdir pwd status
append exit mls quit struct
ascii form mode quote system
bell get modtime recv sunique
binary glob mput reget tenex
bye hash newer rstatus tick
case help nmap rhelp trace
cd idle nlist rename type
cdup image ntrans reset user
chmod lcd open restart umask
close ls prompt rmdir verbose
cr macdef passive runique ?
delete mdelete proxy send
ftp> help chmod
chmod change file permissions of remote file
ftp> 

 

이런 식으로 알아볼 수 있습니다. 위에서 보시다 시피 꽤 많은 명령을 사 용할 수 있어요. 기본적인 것을 배웠으니 자세한 것은 각자 확인하도록 합 시다!

백지부터 시작하는 리눅스 강좌 – 리눅스에서 사용하는 메일

이번 강의는 정말 정리가 잘 된 것이 있어서요. 예전에 컴퓨터 개론의 강 의록으로 사용되었던 파일에서 따 왔습니다. 이 정도만 아셔도 수학과에 서 리눅스 메일을 사용하시는 것은 아주 간단하실 겁니다.

근데 자기 계정을 갖고 계시면서도 메일을 쓸 수 있다는 것을 모르시는 분 들이 계시더군요. –+ 자기계정@math.inha.ac.kr이라고요. –+ 공짜 메일인데다가 쿼터 제한이 없어서 상당히 큼직한 것도 왔다갔다 할 수 있는 좋은 메일인데, 그걸 모르셨다니 이런……


# mail
 Mail version SMI 4.0 Mon Sep 28 18:3:13 KST 1992 Type ? for help.
 "/var/spool/mail/hsbyun": 2 messages 2 new|
 >N 1 snoopy Sat Sep 26 10:1 14/225 Greeting|
 N 2 sonnim@ring.kotel.co.kr Sun Sep 27 20:24
10/100 Test|

헤더가 아래와 같은 경우 각 필드의 의미는 다음과 같습니다.

>N 1 snoopy Sat Sep 26 10:1 14/225 Greeting

 

  • > : 인덱스 표시자
  • N : 메세지의 상태 : N – 새로 도착된 메세지
  • U – 아직 읽지 않은 메세지
  • * – 저장된 메세지
  • (blank) – 읽은 후 저장 않된 메세지
  • 1 : 메세지의 번호
  • snoopy : 메세지를 보낸 사용자의 ID
  • Sat Sep 26 10:1 : 메세지를 보낸 날짜, 시간
  • 14 : 메세지의 라인수
  • 225 : 메세지의 문자수
  • Greeting : 메세지의 subject쉽죠? 그러면 이번에는 메일을 보내 봅시다. 홍길동에게 메일을 보낸다고 생각을 하죠. 우리 과에서는 이니셜 뒤에 성을 붙이는 방식이니까, 홍길동 이면 kdhong 이 되겠죠?

    # mail kdhong
    subject: Hi

    메일 쓰기 상에서 알아두면 편리한 명령들이 또 있죠. 이것들은 모든 줄 의 첫번째 칸에서 시작합니다.

  • ~v : vi editor 실행.
  • ~r filename: file을 불러 들임(attached).
  • ~s subject: subject의 내용을 바꿈.또한 cc 라는 명령이 편지 끝 혹은 제목 아래에 뜨는데, 여기에는 같은 내용의 편지를 보낼 다른 사람을 적을 수 있습니다.

    mail prompt 상의 명령어. (& : mail prompt)

  • 1==>번호에 해당되는 mail을 읽는다.
  • d==>방금 읽은 mail 삭제
  • d 2==>2번 mail 삭제
  • d 1-5==>1번부터 5번까지 메일 삭제.
  • d a=>모든 메일 삭제.(Linux에서만 사용 가능)
  • u *=>삭제된 메일 복구.
  • s 1 doug.mail==>1번 mail을 doug.mail 이란 file 로 저장한다.
  • q==>읽은 mail을 삭제한 다음 mbox에 저장하고 종료
  • x==>읽은 mail을 삭제하지 않고 종료
  • h==>mail list display
  • h 21==>21번 mail 이 나타나도록 mail list display
  • r==>방금 읽은 mail의 sender 에게 mail 보내기
  • r 2==>2번 mail 의 sender 에게 mail 보내기
  • ?==>Help물론 수학과 밖의 사람에게 메일을 보내실 때는? mail hjchj@nownuri.net 하고 해 주시면 되겠지요?

    그런데….. 리눅스에서 작업을 신나게 하다가….. 메일이 왔는지 안 왔는지 궁금하실 때가 있을 겁니다. 물론 요즘은 메일이 오면 핸드폰으로 문자가 오게 해 놓을 수도 있고 하지만, 눈 앞에 있는 컴에 메일이 왔는지 알아보기에는 간단한 무엇인가가 필요하겠지요? xbiff는 아주 작고 간단한 프로그램입니다. 다음과 같이 일단 쳐 보세요.

    # xbiff&

    자, &는 뭘까요? 예, 원래는 xbiff가 실행되는 동안에는 프롬프트가 안 떠야 하는 거겠죠? 그러나~~~~!!!!! &를 입력하면 말입니다, 프롬프트가 뜹니다!!!!! 즉, &는, 백그라운드로 명령을 실행하게 해 주는 것이예요.

    그럼 백그라운드는 뭘까요?

    우리는 윈도에서 프로그램을 쓸 때, 아래아 한글로 작업하는 척 하면서 익스플로러를 띄워 놓고 묘한 사이트들을 누빌 수도 있을 것이고요, 혹은 게임을 할 수도 있겠지요? 이와 같은 것을 멀티 태스킹이라고 합니다. 즉, 한 컴퓨터 갖고 여러 가지 작업을 동시에 진행할 수 있는 것이죠.

    이럴 때도, 맨 위에 지금 사용하고 있는 프로그램이 있으며, 뒤에서 계속 작업을 해 주는 프로그램이 있습니다. 예를 들면 아주 복잡한 계산을 띄워 놓고는 기다리는 동안 다른 작업을 할 수 있다면 좋겠지요? 이때 계산하는 프로그램을 백그라운드로 실행하면 다른 작업을 할 수 있는 것입니다.

    # ps

    하고 쳐 보시면, 지금 프롬프트가 떠 있지만, 뒤에서 아까 실행시킨 프로그램들이 열심히 작업을 하고 있는 것을 보실 수 있습니다. ^^

    그러면, 명령 뒤에 &를 친 것은 상관없지만, 이미 넷스케이프 같은 것을 띄워 놓고 있다면 어떻게 할까요? 터미널을 하나 또 띄우나요? 낭비죠. 넷스케이프가 실행되는 바람에 프롬프트가 뜨지 않아 다른 명령을 실행 할 수 없다면, 이렇게 해 보세요. 먼저 ctrl+z를 누릅니다. 그러면 중단되었다고 화면에 한 줄 뜹니다. 이 상태로

    # bg

    하고 입력하면, 지금 중단되었던 넷스케이프가 백그라운드로 전환되어 계속 작업을 하게 됩니다. 혹시 포그라운드로 작업(백그라운드의 반대) 하고 싶으시다면 이렇게 하면 되죠.

    # fg

    그러나 이 쪽은 당장에는 별 쓸모 없겠는데요? ^^

    하여간 xbiff가 실행되면, 작은 우체통 그림이 있는 아주 작은 창이 하나 생겨납니다. 바탕은 하얀 색이거나 그럴 것입니다. 그러면 한번 메일이 오기를 기다려 볼까요? 연습하는 차원에서 서로 메일을 보내는 것도 좋은 생각이겠지요.

    메일이 도착했습니다~~~~ 짜잔. 어떻게 되나요? 바탕색이 변하면서, 우체통 그림에 꽂혀 있던 깃발이 딱 위로 서죠? 그러면 이제 얘를 클릭하고, 메일을 보시면 되는 거죠. 작지만 아주 쓸모있는 프로그램 입니다.

    혹시 이것이 컴에 깔려있지 않다면? 관리자를 쪼시기 바랍니다. ^^

    음, 그리고 예를 들어서 말이죠, 미국에 어학연수라도 가셨 다고 치자고요. 거기서 리눅스 계정을 임시로 받을 수 있겠지요? 그런데, 매일매일 학교에 텔넷으로 들어와서 보는 것은 귀찮지요….. 그것도 늘 쌍 인터넷에 연결된 컴이라면 또 모를까, 혹시나 노트북에 핸드폰 연결해 서 봐야 하거나, 혹은 모뎀을 사용해야 하는 경우도 있기는 하겠지요? 그 때 쓰는 방법입니다. (물론 메일 클라이언트를 사용하여 해결할 수도 있습 니다만. 일단 써 보죠. ^^) fetchmail 이라는 명령을 사용하겠습니다.

    # fetchmail –version

    해 보시면 버전과, 현재 설정이 나옵니다. 버전이 너무나 낮거나, 혹은 깔 려 있지 않다면 관리자에게 깔아 달라고 부탁하세요. ^^ 설치하는 방법도 다루고 싶지만 여기서는 엔드유저로서의 리눅스 사용을 우선적으로 다루 기 때문에 넘어가겠습니다. ^^ fetchmail이 정상적으로 깔려 있을때

    # ls -a

    해 보시면, .fetchmailrc 라는 파일이 있는 것을 확인하실 수 있을 것입니 다. 혹시 없다면, 보통은 /usr/doc/fetchmail-버전/sample.rcfile 파일 을 .fetchmailrc라는 이름으로 계정에 복사하셔서 고치시면 될 것입니다. 다른 것은 크게 손대실 것 없고, 이 부분만 잠시 보죠.

    defaults
    user 계정이름
    fetchall
    no rewrite
    pass8bits
    # Use this for production
    poll 메일서버 이름 protocol pop3:
    password 패스워드;

    이렇게 고치시면 다른 곳의 서버에 있는 메일들을 긁어 오실 수 있습니 다. 처음에는 한두 번 시험을 해 보기 위해서, pop3서버에 있는 편지를 없 애지 않게 해 주기 위해서 pass8bits 아래에 keep 을 추가해 주시는 것이 좋겠지요? 나중에 잘 돌아가는 것이 확인되면 없애주면 됩니다.

    여기까지 하시고 나면, sample.rc파일에 보면 주석문으로 나와 있는 것과 같이 .fetchmailrc 파일의 퍼미션을 본인만 읽고 쓸 수 있게 600으로 고 쳐 줘야 할 것입니다. 퍼미션 고치는 방법은 이미 알고 계시죠? ^^ 생략하 겠습니다.

    다 되었습니다! 이제 fetchmail 이라고 입력하시면 저쪽 서버의 편지를 긁 어오기 시작합니다. 간단하죠?

    더 간단한 방법이 있기는 합니다. 저쪽 서버에 갖고 계신 계정 아래에 이 런 파일을 하나 만들어 두는 것이지요. .forward 라는 파일입니다. 파일 앞에 점이 있는, 숨겨진 파일이니까 주의하세요. 여기 파일 안에다가, 이 쪽의 메일 주소를 적어 놓으세요. 그러면 그 쪽의 서버에 메일이 도착하 면 자동으로 이 쪽으로 날려 줍니다. ^^ 간단하죠? ^^

    여러분은 아웃룩이나 그런 것을 사용해 보셨는지 모르겠네요. 리눅스에서 는 가장 간단한 것이 pine 입니다. 일단 각설하고, 바로 써 보도록 하죠. pine을 실행해보면 처음에 메일 디렉토리를 만든다는 메세지가 나오고 처 음 화면이 뜹니다.

    
    # pine
    
     PINE 3.95K MAIN MENU Folder: INBOX 0 
    Message 
     ? HELP - Get help using Pine 
     C COMPOSE MESSAGE - Compose and send a message 
     I FOLDER INDEX - View messages in current folder 
     L FOLDER LIST - Select a folder to view 
     A ADDRESS BOOK - Update address book 
     S SETUP - Configure or update Pine 
     Q QUIT - Exit the Pine program 
    
    Copyright 1989-1996. PINE is a trademark of the University of 
    Washington.
    ? Help P PrevCmd R RelNotes O OTHER CMDS 
    L [ListFldrs] N NextCmd K KBLock 
    

    여기서는 pine의 세세콜콜한 사용법까지는 설명할 필요가 없으리라 봅니 다. 사용이 아주 간단하며 메뉴가 쉽기 때문이죠. C를 누르면 보낼 편지 를 작성할 수 있고, L이나 I를 통해 메일들을 볼 수 있으며, A에서는 자 주 쓰는 메일 주소록을 만들 수 있습니다. 또한 어떤 화면에서도 M을 누르 면 맨 처음 화면으로 돌아오고, Q 를 누르면 종료됩니다. 이 정도면 기본 사용법은 다 된 것 같은데요. ^^.

    조금 더 잘 사용해 보기 위해, 설정을 보도록 하죠. Setup -> Config으로 들어가 보면 옵션을 보실 수 있습니다. 여기서

  • personal-name = 이름 혹은 별명
  • user-domain = 도메인 이름
  • smtp-server = 메일서버 이름
  • nntp-server = : 뉴스그룹도 Pine을 쓰고 싶으면 여기에 적어줍니다.다른 것은 크게 신경 쓰실 것이 없습니다. 에에, 한글에 관한 설정이 조 금 있지만, 이미 관리하시는 분이 알아서 해 놓으셨을 겁니다. ^^ 기본적 인 것만 보죠?
  • [X] enable-8bit-esmtp-negotiation : 이메일을 보낼때 8bit로 보내는 걸 처리
  • [X] pass-control-characters-as-is
  • [X] compose-send-offers-first-filter : 작성이 끝나고 hcode란 필터를 거쳐서 보낼 것인지 안 쓸것인지를 정하는데, 이 옵션이 체크되어 있으면 기본적으로 필터를 거치는 것을 택한다.
  • character-set = EUC-KR : 원래 iso-2022-kr 로 되어 있던 것입니다. ^^ 바꾸세요.다 되셨나요? 파인을 쓰는 것을 배우셨으면, 제게 메일이라도 한 통…. 어떨까요? ^^

 

백지부터 시작하는 리눅스 강좌 – vi 에디터 사용하기

자, 드디어 에디터입니다. 참고로 꽤 골치 아프고요, 직접 사용하셔야만 외워 질 것입니다. 저는 에디터 사용을 공부하기 위해 vi로 소설을 쓰곤 했지요. ^^ 소설이나 연애 편지 등등, vi를 이용해서 쓰시다 보면 실력이 엄청 늘어날 것입니다. 또한 프로그래밍을 하실 때도 좋겠지요?

예전에 모든 스탠다드 유닉스에서는 ed라는 에디터를 사용하였습니다. 그 러나 ed는 상당히 후졌다고 알고 있습니다. 저도 본 적은 없고요. 그 이 후 이맥스와 vi가 유닉스, 리눅스 진영에서 가장 대표적인 에디터의 양대 산맥으로 자리잡았습니다. 지금 흔히 보이는 vi는 오리지널이 아니라, vi 클론이 대부분입니다. 과에서 쓰고 있는 vim은 vi의 기능은 물론 다른 여 러 편리한 점이 있으므로 가장 많이 쓰인다고 하죠. 하지만 대부분의 리눅 스, 유닉스 머신에서 vi를 입력하면, vi 클론이 바로 실행되니까 골치아프 게 생각하시지는 마세요. ^^

아마 여러분이 사용하시기에 vi는 좀 썰렁할 지도 모르겠습니다만, 그 썰 렁한 화면에 얼마나 많은 기능이 있는지는 귀신도 며느리도 모릅니다. 일 단 vi에는 저장이니, 새 파일이니 하는 메뉴라는 것이 일절 없습니다. 그 러면 어떻게 편집을 할까요? vi에는 3가지 모드가 있습니다. 바로 그 ㅁ호 드 전환을 통해 편집과 저장 등등등, 그 모든 것을 할 수 잇는 것입니다. 다음은 그 3가지 모드입니다.

 

  • 명령 모드
  • 입력 모드
  • ed 모드명령모드는 입력모드에서 ESC키를 누르고 난 상태를 의미하는데 완성된 문 장을 편집하는 모드입니다. 이때 키보드 자판의 문자, 특수키, 숫자들은 각각 뜻을 지닌 명령이 되는데, 쉽게 말해서 단축키의 개념을 생각하시면 됩니다. 즉, 엽기적으로 말하자면 vi는 모든 기능이 단축키로만 존재하는 에디터라는 말이 됩니다. –;;;;; 예를들어 문자 x를 누르면 x가 화면에 찍히는 것이 아니라 커서가 위치한 문자를 지우라는 의미로 간주되는것과 같은 예입니다.입력모드는 말 그대로 입력하는 모드입니다. 타이프된 각 문자들은 화면 에 디스플레이 됩니다.

    ed모드, 혹은 라스트 라인이라고 하는 분도 보았는데, 이 모드는 명령모드 에서 콜론을 입력한 후의 모드입니다. ed모드에서는 텍스트를 치환, 대 치, 그리고 디스크에 파일이나 파일의 일부등을 기록할 수 있는 등의 일 을 할수가 있습니다. 이것이 ed 모드라고 불리게 된 것은, ed 에서 사용하 던 명령들이 상당히 많이 내려왔기 때문이라고 하는군요. ^^

    그러면 먼저 입력모드를 자세히 살펴 보겠습니다.

    # vi [ENTER]

    먼저 새로 만들 파일 또는 기존의 편집할 파일의 이름을 넣고 vi를 실행 합니다. 다음은 vi를 실행시킬때의 여러 명령어행에 따른 기능을 분류해 놓은 것입니다.

  • vi ==> 파일이름에 해당하는 파일을 연다.
  • vi +n ==> 파일의 n라인에 해당되는 부분이 화면 제일 상단에 오게 한다.
  • vi + ==> 파일의 마지막 라인에 해당되는 부분이 제일 상단에 오게 한다.vi로 들어간 지금의 상태는 명령모드입니다. 이제 입력모드로 바꾸고 원하 는 문자를 타이프 해 봅시다. 아래는 입력모드로 들어가기 위한 명령어 입 니다.
  • a ==> 텍스트를 커서 다음에 덧붙인다.
  • A ==> 텍스트를 현재행의 끝에 덧붙인다.
  • i ==> 텍스트를 커서 앞에 삽입한다.
  • I ==> 텍스트를 현재행의 맨 앞에 삽입한다.
  • o ==> 현재행 아래에 새로운 행을 만들고, 커서는 새로 만든 행의 맨 앞에 위치한다.
  • O ==> 현재 행위에 새로운 행을 만들고, 커서는 새로 만든 행의 맨 앞에 위치한다.자신의 원하는 문장을 모두 타이프 한다음에 ESC키를 눌러 명령모드로 바 꾸어 봅시다. 글씨가 더 입력되나요? 되면 이상한 겁니다. ^^ 만약에 다 시 문장을 추가할 경우가 생길때에는 위와 같은 입력모드 전환 명령어로 입력모드로 들어가 추가한후에 명령모드로 다시 바꾸시면 됩니다. 여기까 지는 쉽죠?명령모드를 살펴봅시다.

    커서 옮기기

  • [스페이스], l, 오른쪽 방향키 ==> 오른쪽으로 옮김.
  • h, 왼쪽 방향키 ==> 왼쪽으로 옮기기.
  • w ==> 오른쪽으로 한 워드 옮기기.
  • W ==> 오른쪽으로 한 워드 옮기기(여기서 한워드는 블랭크로 구분)
  • b ==> 왼쪽으로 한 워드 옮기기.
  • B ==> 왼쪽으로 한 워드 옮기기.(여기서 한워드는 블랭크로 구분)
  • $ ==> 현 라인의 끝으로 옮기기.
  • e ==> 오른쪽 한 단어의 끝으로 옮기기.
  • E ==> 오른쪽 한 단어의 끝으로 옮기기.
  • 0 ==> 라인의 처음으로 옮기기.
  • [ENTER] ==> 다음 라인의 처음으로 옮기기.
  • j, 아래쪽 방향키 ==> 한 라인 아래로 옮기기.
  • – ==> 전 라인의 처음으로 옮기기.
  • k, 오른쪽 방향키 ==> 한 라인 위로 옮기기.
  • ) ==> 문장의 끝으로 옮기기.
  • ( ==> 문장의 처음으로 옮기기.
  • } ==> 한 문단의 끝으로 옮기기.
  • { ==> 한 문단의 처음으로 옮기기.
  • ctrl+D ==> 화면의 반이 위로 스크롤.
  • ctrl+U ==> 화면의 반이 아래로 스크롤.
  • ctrl+F ==> 한 화면이 위로 스크롤.
  • ctrl+B ==> 한 화면이 아래로 스크롤.
  • nG ==> n라인에 커서 위치.
  • H ==> 화면의 상단에.
  • M ==> 화면의 중간에.
  • L ==> 화면의 끝에.지우기
  • nx ==> n만큼의 문자를 지우기.
  • nX ==> n만큼의 문자를 커서 앞부분부터 뒤로 지우기.
  • dnw ==> n만큼의 워드 지우기.
  • ndd ==> n만큼의 라인 지우기.
  • D ==> 라인의 끝까지 지우기.바꾸기
  • r ==> 커서가 위치한 한문자를 바꾸기(r 입력후 원하는 문자 타이프)
  • R ==> 커서가 위치한 문자부터 ESC키를 누를때까지 바꾸기문자열 찾기
  • /aszBuffer[ENTER] ==> aszBuffer라는 문자열의 아래방향으로 찾기
  • ?aszBuffer[ENTER] ==> aszBuffer라는 문자열을 윗방향으로 찾기
  • n ==> 위 두 명령어로 원하는 문자열을 찾았을때 반복해서 같은 방향으로 찾기.
  • N ==> 위 두 명령어로 원하는 문자열을 찾았을때 반복해서 반대 방향으로 찾기.그 외의 명령어키들
  • J ==> 현재 라인과 다음라인을 한 라인으로 만들기.
  • . ==> .을 누르기 전에 실행했던 명령어 다시 실행하기.
  • ZZ ==> 편집된 파일 저장하고 vi 나가기.
  • ctrl+G ==> 파일이름과 현재라인을 아래에 디스플레이.
  • ynw ==> n개 만큼의 워드를 버퍼에 저장
  • nyy ==> n라인 만큼의 문장을 버퍼에 저장
  • Y ==> 현재 라인의 끝까지 버퍼에 저장
  • p ==> 버퍼에 있는 값을 커서 위에 삽입
  • P ==> 버퍼에 있는 값을 커서 아래에 삽입.
  • mx ==> 커서가 위치한 곳을 마크함 여기서 x는 a에서 z까지중 한 문자
  • ‘x ==> x라고 마크한 부분으로 커서 옮김. 여기서 x는 a에서 z까지중 한 글자
  • !!command == > 쉘 command 입력하면 그 실행의 결과가 커서 아래부분에 삽입.그러면 이번에는 vi의 백미…. 까지일지는 모르지만, 하여간 익숙해지면 아래아 한글에서도 esc : 를 치게 만드는 향정신성 중독 모드인 ed 모드 를 살펴 보겠습니다.일단 들어가려면 명령모드에서 콜론을 누르면 됩니다. 콜론을 누르면 화 면 제일 아래에 콜론이 찍히고 명령을 입력 받을 준비를 하게 됩니다.

    문자열 바꾸기

    :[address] s/string/replace[/gc]

  • address ==> 바꿀 문자열이 포함되어 있는 라인의 범위 예를들어 1라인에서 50라인이면 1, 50이라고 쓰면 됨.
  • string ==> 바꿀 문자열
  • replace ==> 바뀐 문자열.예를들어 1라인에서 50라인까지 DOS라는 문자열을 전부 dos로 바꾸고 싶다면:1, 50 s/DOS/dos/g

    위에서 /g를 붙이지 않으면 전부를 바꾸지 않고 처음에 찾는 것만 바꿈. 만약에 g다음에 c를(/gc) 써주면 정말 바꿀것인지 하나하나 확인하게 됩니다.

    저장

  • :w [] ==> 저장하기
  • :[address] w ==> 부분적으로 저장하기
  • :[address] w! ==> 부분적으로 저장을 원래의 파일에 함.예를들어
  • :w test ==> test라는 파일에 저장.
  • :w ==> 원래의 파일에 저장.
  • :1, 50 w test ==> 1라인에서 50라인까지 test라는 파일에 저장.
  • :1, 50, w! ==> 1라인에서 50라인까지 현재 파일에 저장.(기존의 파일에 덮어 씀)종료
  • :q ==> 나가기
  • :q! ==> 강제로 나가기편집된 파일이 저장이 되지 않았다면 쉘로 나갈수가 없습니다. 이럴때 저 장하지 않고 강제로 쉘로 나갈때 강제로 나가기를 합니다.그외의 명령어
  • :r ==> 파일을 읽어와서 현재 커서위치의 아래부분에 읽어온 파일의 내용을 삽입한다.
  • :e! ==> 기존의 편집중인 파일에서 쉘로나가지 않고 새로운 파일을 작성, 편집.
  • :!command ==> 쉘로 잠시 나가서 쉘 명령어를 수행하고 돌아온다.
  • :sh ==> 쉘로 잠시나가서 쉘 명령어를 수행한다. ‘exit’를 치면 다시 vi로 되돌아옴.

골치 아프시죠? 골치 아픈 것이 당연하고 안 아픈 분은 딴짓 하신 분입니 다. ^^ 까다롭기는 하지만, 손가락이 먼저 이 명령들을 외우게 될 것입니 다. vi를 잘 쓰는 사람은 상당히 폼이 나더군요. 꼭 이런 폼나는 일들을 하셔서 폼생폼사 하시기 바랍니다….. 가 아니라, vi는 대부분의 리눅 스, 유닉스에 다 있으므로, 어디서 일을 하게 되는 사태가 생기셔도 에디 터를 못 사용해서 일을 못하는 비극은 없어야 한다는 사실을 다시 한번 강 조하고 싶군요…..^^

백지부터 시작하는 리눅스 강좌 – 퍼미션

오늘 설명할 것은 퍼미션입니다. 우리는 모두 수학과이고, 숫자 갖고노는 것 정도야 여러분에게는 일도 아닐 것이라고 믿어 의심치 않고 있습니다. 저를 믿는 도끼에 발등 찍혀 쓰러지는 꼴 만큼은 나지 않게 해 주세요. ^^

리눅스를 사용하시다 보면, linux1에 김숙기가 로그인을 하고, 옆에서 제 가 텔넷으로 들어와 로그인을 하고, 좀 있다가 숙기가 일어나면 기다렸다 는 듯이 주행이 형이 앉아서 로그인을 하고…… 그렇죠? 그런데도, 똑같 은 컴 앞에 앉아 있는데도 다들 자기 파일만 보입니다.

아, 게다가 linux1에서 작업하고 점심먹고 와서 linux7에서 작업해도 파일 을 똑같습니다. (그 컴이 기본으로 윈도 메이커를 쓰느냐 그놈을 쓰느냐 에 따라 바탕화면만 좀 다를 뿐입니다.) 그것도 신기하죠? 기분 좋은 김에 설명해 드리겠습니다. ^_^ 여러 컴퓨터가 있을 때, 어떤 파일이나 드라이브를 공유해서 쓰면 편리하죠. 윈도에서도 공유해서 사용하고 그러지 않나요? 리눅스에서도 그게 된다는 겁니다. NFS라는 것을 사용해요. 지금 여러분의 계정홈은 모두 한 컴퓨터의 하드안에 있습니다. 이것을 다른 컴에서 공유하여 사용하는 것입니다. 또한, 여러분의 로그인 아이디와 패스워드도 한 컴퓨터 안에 있는 것입니다만, 이것은 NIS라는 것을 사용하여 다른 리눅스 컴퓨터에서도 동일하게 로그인할 수 있도록 설정된 것입니다. 뭔지 헷갈리시죠? 넘어가세요.

어쨌건, 자기 파일만 보이죠? 로그인 하세요. 뭔가 보여 드리겠습니다.

# cd ..
# ls

저게 뭔지 잊어버리신 분들은 없겠죠. 없으리가 믿어 의심치 말아야 하는 데…..^^ 네, 위의 디렉토리로 갑니다. 가서 보시면 웬 아이디들이 가득 ~ 하죠? 다 우리 과 학생들의 계정입니다. 그 중에서 하나 마음에 드는 것 을 찍어 보세요~! 누구 건지 알고 싶으면 이렇게 하시고요. # finger 계정 이름 예를 들어서 finger hjchun 하면 영어로 제 이름이 나오고요….. finger dsshin 하면 동선이 형의 이름이 나오죠. 자, 누구 건지 확인 하셨어요? 그러면 그 디렉토리에 들어가 보겠습니다.

# cd 계정 이름

잘 들어가 지나요? 일단은 들어가 집니다. 자, 그런데……

# ls

허가가 거부된다는 내용으로 한글이건 영어건 뭔가 메시지가 뜨지요? 그렇 습니다. 내가, 거길 들어가서 잘 헤집고 놀 수 있다면 남도 나에게 그럴 수 있는 거죠. 즉, 내가 남의 것을 들어가서 보고 읽고 쓸 수 없기 때문 에 우리는 안심하고 리눅스나 유닉스네 사촌들을 쓸 수 있는 것입니다.

혹시 파일들이 다 보이는 사람이 있습니까? 누구 계정이 잘 보이는지 말씀 해 주세요. 계정 주인이 제 후배라면 반죽음을 내 놓을 것이고, 저보다 학 번이 같거나 크면, 대학원실에 가서 말씀을 드리겠습니다. ^^;;;; 잔인무 도 하다고요? 그게 보안의 기본입니다. ^^;;;;; 잠잘 때는 자기 집 문을 잠그면서, 제가 들어가서 개인적인 편지 같은 거 보고 나오는 것은 괜찮 은 모양이지요? ^^ 여러분은 절대 그러지 마세요~~~~!!! 큰일나요.

자, 그러면 명령이 안 먹는 곳들은 정상이니까, 자기 디렉토리로 돌아오세 요. 어어, 일일히 돌아 나와서 가면 됩니까? 귀찮지 않아요? 이렇게 해 보 세요.

# cd

이래 주면 자기 디렉토리로 돌아옵니다. 간단하죠?

자, 그럼 생각해 봅시다. 파일로 사람이 하는 것은 많고 많지만, 그 중에 서도 핵심이 되는 것은 뭘까요?

파일을 읽고,
파일을 쓰고,
파일을 실행한다.

이 세가지가 기본이 되는 것입니다. 무엇이건 간에. 그렇다면 이야기는 간 단해 집니다. 읽는 것은 r, 쓰는 것은 w, 실행하는 것은 x로 표현할 수 있 다면 말이죠.

그리고 사용하는 사람도 세 부류가 있을 겁니다. 일단 파일 주인, 그리고 같은 그룹 안에 있는 사람들, 그리고 그 외의 모든 사람들. 여기서 그룹이 라는 것의 개념은 나중에 이야기 하겠지만, 만약에 같은 01학번들 끼리 어 떤 주소록 파일을 공유하고 싶다면 같은 그룹이니까 그룹 퍼미션을 열어 주면 된다는 것이죠. 즉, 공유의 개념이라고 보시면 됩니다, 일단은. 그렇 다면, 파일 주인은 u, 그룹이 같은 사람은 g, 그리고 그 외의 사람은 o로 놓을 수 있겠지요. 뭐의 약자인지는 각각 생각해 보셔도 아시겠지요?

그러면 지금 내가 읽고 쓸 수 있는 파일 ttt가 있습니다. 같은 그룹 안에 있는 01학번 모두가 읽을 수 있게 하고 싶으면 어떻게 하면 될까요?

# chmod g+r ttt

자, g(그룹)에게 r(읽기 권한)을 주니까 +를 쓰죠. 만약에 그룹 권한을 없 애려면 다시 이렇게 하면 됩니다.

# chmod g-r ttt

쉽죠? 그러면 조금 더 편안하게 퍼미션을 사용하는 방법을 생각해 보도 록 하겠습니다.

말씀 드렸겠지만, 사용자의 종류는 u, g, o 가 있었고, 파일로 할 수 있 는 것은 r, w, x 가 있었습니다. 이들을 +와 -로 연결해서 사용하는 것이 라는 점은 익히 알고 계시리라 생각합니다. 즉, 파일 주인은 읽고 쓸 수 있고, 같은 그룹 안에 있는 사람들은 읽을 수만 있는 어떤 파일이 있다면 다음과 같은 식으로 생각할 수 있을 것입니다.

 

u g o
r + +
w +
x

이것을 조금 더 머리를 굴려 생각해 봅시다. 읽는 권한을 4로 놓고, 쓰는 권한을 2로, 실행하는 권한을 1로 놓은 다음, 위의 순서대로 놓읍시다. 그 러면 어떻게 될까요? 위의 것은 640으로 생각할 수 있지 않을까요? 자, 그 러니까 다시 말하자면, 맨 앞자리는 u, 가운데는 g, 끝은 o로 생각하여, 각각의 권한을 더하는 것입니다. 상상이 가시나요?

이런 식으로 하면, 파일 주인은 읽고 쓸 수 있고, 다른 사람은 모두 읽을 수 있는, 홈페이지에 사용되는 기본 퍼미션은 다음과 같이 줄 수 있을 것 입니다. (나중에 기회가 되면 홈페이지 만드는 이야기도 할 거니까 기대하 세요.) 예를 들어 index.html 이 있다면…..

# chmod 644 index.html

이렇게 주시면 됩니다. ^^ 이해가 가시나요? 퍼미션의 문제는 보안상 중요 합니다. 일반 유저가 퍼미션 관리를 잘 해주면 관리자는 밤잠을 잘 잘 수 있습니다. ^^ 유념해 주시고요, 혹시라도 자기 계정의 퍼미션을 777로 풀 어 놓으신 분 있으면 즉시 수정해 주세요. ^^

참고로 말씀 드리지만, 그렇게 퍼미션을 막아 두어도 여러분이 갖고 있는 파일 내용을 모두 다 볼 수 있는 사람이 있습니다. 해커? 크래커? 아뇨, 그런 불법적인 인간들 말고, 바로 루트입니다. 루트는 여러분이 갖고 있 는 메일부터 시작해서 모든 것을(!) 다 볼 수 있습니다. 여러분의 계정을 아주 합법적인 경로로 사용할 수 있고, 필요하면 여러분의 패스워드를 바꿀 수도 있으며, 여러분이 나쁜 짓을 했을 때 는 – 예를 들면 전산실에서 채팅을 하거나, 남몰래 야동을 본다는 등…. 그런 온갖 종류의 나쁜 짓들^^;;;; 혹은 게임을 하는 것도 포함됩니다.- 아예 로그인을 못 하도록 할 수도 있습니다. 원한다면 데이터를 날려 버리 는 것도 가능하고요. 모든 것을 알고 있다는 산타할아버지와 비슷할지도….

전체 네트워크를 관리하시는 분 뿐이 아니라, 웹서버만 관리하고 있는 저 도 마찬가지입니다. 원하면 다 들어가서 볼 수 있습니다. 이것은 무엇을 시사하는 것일까요? 리눅스에다가 중요한 파일을 넣어서는 안 된다는 뜻일 까요? 어디다 해도 관리자는 전능합니다. ^^ 그러면 무슨 뜻으로 이런 말 을 하는 것일까요? 저도 다 볼수 있다고는 해도, 무슨 교수님의 심부름이 라던가, 그럴 때에만 들어가서 헤집었고요….. 그 외로는 ### 씨의 계정 에서 설정파일이랑 그런 것 참고할 게 있어서 한번…. 그게 전부입니다. 다른 분들 것은 요청이 없이는 절대 들어가지 않았습니다.

양심이라는 것을 말하고 싶습니다. 여러분 중에도 리눅스에 흥미를 느끼 고 시스템을 관리하기를 원하시는 분들이 계실 지도 모릅니다만, 그 이전 에 양심이 필요하다…… 는 것입니다. 관리자가 남의 소문이라던가, 뒤 를 캐고 다니는 것을 좋아하는 사람이라면 누가 리눅스 쓰겠습니까. 관리 자가 되고 싶은 분들은 남의 뒤를 캐고 싶은 욕망을 버리셔야 한다는 것 을 잠시 떠들어 보았습니다.

백지부터 시작하는 리눅스 강좌 – 파일, 디렉토리 만들고 쓰기/삭제

자, ls해 보세요~ 가르쳐 드린 옵션들도 마음껏 쓰시고요. 쓰시라고 알려 드리는 겁니다. 파일이 있나요? 홈페이지 계정이라도 public_html 정도는 있지요. 그 밖에도 기본적으로 몇 개는 있을 것입니다.
그러나! 공부를 하려고 해도 파일이 있어야 하겠지요. 일단은 파일을 만드 는 방법을 생각해 보도록 하겠습니다.
도스 배워보신 분들은 아시겠지만….. copy con 이라는 녀석이 있었습니 다. 파일에 내용을 넣을 수도 있고요, 혹은 파일을 읽을 수도 있었죠. 이 것의 원조가 따로 있습니다. 원조는 바로 유닉스에서 사용하던 cat 입니 다. 유닉스의 역사가 더 오래 되었다 보니, 도스는 유닉스에서 사용하던 많은 것들을 이름만 조금 달리 하여 사용하게 만든 게 꽤 있는 듯 합니 다. (하긴, 윈도의 GUI도 원조는 맥이 아니었습니까. ^^)
그러면 먼저 파일을 만들어 봅시다.
# cat > aaa
이렇게 입력하면 프롬프트가 안 뜨고 그냥 텅 빈 줄이 나옵니다. 이것은 라인 에디터와 같은 방식…..입니다. 엔터를 쳐서 밑으로 내려갈 수는 있 는데, 위로 올라갈 수는 없습니다. ^^ 즉, 치다가 틀렸는데 그냥 엔터를 치면 죽음이다…… 까지는 아니고요. 잘 모르시겠는 분들은 PC 통신에 서 글 쓰기 할때, 쪽 쓰기 말고 줄 쓰기 방식으로 사용해 보시면 아실 겁 니다. (나우누리는 기본 에디터가 줄 쓰기 입니다.)-혹시 > 기호가 무엇인지 궁금하신 분은 이곳을 참고해 주세요…
# cat > aaa
alalalalalalalal
slslslslslslslsl
dldldldldldldldl
ctrl+c
이렇게 치다가, ctrl+c를 누르면 파일에 저장이 됩니다. 여보세요~! 그걸 손으로 입력하는 것이 아니란 말입니다! 시프트 밑에 있는 컨트롤 키 말이예요. 그거하고 c를 같이 치는 거예요. 되셨습니까? 그러면 ls 해 보세요. 아까는 없었던 aaa가 생겨 있습니다~! 이것을 보시려면 다음과 같이 하면 됩니다.
# cat aaa
alalalalalalalal
slslslslslslslsl
dldldldldldldldl
아까 입력한 내용이 보이지요?
cat 뒤에 >를 쓰는 것은 리다이렉션이라고 합니다. 리눅스에서는 >, ./apple/aaa link test test test ctrl+c # ln -s ./apple/aaa aaalink
# ls
aaalink라는 녀석이 생겨 있습니다. 이 파일을 한번 볼까요? aaa와 같은 내용입니다. 이것만으로는 복사한 것과 다를 것이 없지 않느냐고 생각하실 수 있습니다. 그러면 ls -l을 해 볼까요? aaalink는 용량이 얼마나 됩니까? 원본의 용량이 아무리 크더라도 링크된 파일의 용량은 작습니다. 그리고 파일 이름 옆에 어떤 파일에서 링크된 것인지 표시가 나와 있군요.
이 파일을 수정하고 저장하면 원본도 변경됩니다. 즉, 이것은 일종의 바로가기 역할을 하는 것입니다. 그러나 이 파일을 삭제한다고 해서 원본이 삭제되지는 않습니다. 당연하겠죠? ^_^ 안전하게 사용할 수 있는 한 방편이 될 것입니다. 그러나…. 잘~~~ 쓰면 해킹시에도 사용할 수 있습니다. ^_^ 옛날에 유행하던 방법이라 지금은 거의 못 쓸 방법입니다만. ^_^

백지부터 시작하는 리눅스 강좌 – 개관

OS. 이것은 다들 아시다 시피 컴퓨터를 켰을 때 우리가 사용할 수 있는 상 태로 만들어 주는 것입니다. 우리가 이제부터 배우려고 하는 리눅스 역시 이와 같은 OS 중 하나입니다.
우리가 알고 있는 OS중 대표적인 것이 마이크로 소프트 사의 윈도일 것입 니다. 윈도와 윈도 NT, 그리고 PDA 등에 사용되는 윈도 CE 등의 몇 가지 종류가 있습니다만, 이것은 한 회사에서 만들어 지는 것으로서 그 코드는 공개되어 있지 않습니다. 윈도에는 사용하기 편리하다던가 하는 여러 좋 은 점이 있어서 그런지, 사람들이 많이 사용하고 있습니다만, 공포의 블 루 스크린(^^) 문제라거나, 혹은 보안상의 약점, 혹은 서버로서 윈도 NT 계열을 설치하려 할 때의 가격 문제 등 몇 가지 단점들도 생각해 볼 수 있 을 것입니다.
또한 여러분은 자바를 알고 계십니다. 자바는 요즘 프로그래밍 언어 중에 가장 뜨고 있는 것인데~~ 자바 가상머신만 설치되어 있다면 어디서든 작동 할 수 있을 만큼 이식성이 좋고 메모리 관리에서 우수하다는 등의 장점이 있습니다. 물론 자바가 OS는 아닙니다. 그러면 왜 자바 이야기를 할까요? 자바를 만든 회사는 선 마이크로 시스템즈입니다. SUN 이라는 회사 이름 은 자바에 관심이 있으신 분들은 다들 들어 보셨겠지요. 또 볼 수 있는 곳 은 어디일까요? 바로 수학과의 전산실입니다. 수학과에 있는 서버와 몇 대 의 워크스테이션에 SUN OS 가 깔려 있습니다. 이와 같은 것을 유닉스 (Unix)라고 합니다. HP (Hewlett Packard), IBM, DEC, Silicon Graphics 등의 회사에서 이와 같은 유닉스 워크스테이션을 만들고 있습니다. (참고 로 인하대 수학과 구석에 있는 밥통같이 생긴 녀석들이 실리콘 그래픽스 입니다.)
또한 디자인에 관심있는 분이라면 맥을 알고 계시겠지요. 여기에는 MAC OS 가 들어갑니다. 참고로, 우리가 윈도에서 보고 있는 환경, 즉, 그래픽 유 저 인터페이스(GUI:구이라고 읽는다더군요.)의 원조는 윈도가 아니라는 거 죠. 이것의 시초는 역시 맥이었습니다~~~~!!!! 윈도가 원조라고 했다가는 무식하다는 말을 들을 지도 모릅니다!
또한 FreeBSD나, NetBSD 같은 BSD 계열의 이름도 들어 보셨을까요? 이것 도 유닉스나 리눅스와 비슷한 애들입니다.
그렇다면 우리의 리눅스는 어디 있을까요? 리눅스도 유닉스와 비슷한 곳에 서 시작했습니다만, 리눅스를 유닉스라고 부르지는 않습니다. 이와 같은 것은 나중에 천천히 생각해 보고요. 리눅스는 낮은 사양의 컴퓨터에서도 무리 없이 돌아가지만, 고가의 유닉스에서 사용할 수 있는 많은 기능들을 사용할 수 있습니다. 리눅스는 수많은 배포본으로 나뉘어 있는 듯이 보입 니다만, 그 핵심이 되는 커널은 리눅스의 최초 커널을 만들어낸 리누스 토 발즈가 관리하고 있어 단일하게 유지되어 있습니다. 물론 그가 혼자서 개 발을 하는 것이 아니라, 세계의 여러 사람들이 이런 저런 패치 코드들을 만들어 보내고, 그것들이 반영되어 만들어 지는 것이 리눅스의 커널인 것 입니다.
여러분은 리눅스를 시작하셨습니다. 리눅스는 혼자서 할 수 있는 OS가 아 닙니다. 이것은 어려워서 혼자 공부할 수 없다는 말이 아닙니다. 리눅스 를 시작했다는 말은, 리눅스를 사용하는 다른 사람들이 만들어 놓은 문서 를 보고, 다른 사람들이 패치하고 만들어서 공개한 프로그램들을 사용하 며, 누군가 도움을 바라는 사람이 있다면 도와 주기도 해야 한다는 뜻입니 다. 차려놓은 밥상을 받아 먹기만 하는 것은 곤란하고, 내가 밥을 다 먹었 으면 남을 위한 밥상도 차려 주어야 한다는 것입니다. 그렇다고 겁 먹을 것은 없습니다. 이제 시작하시면 되거든요. 그렇게 어려운 일은 아니니까 요.