네트워크 구성/관리 기초 #5. 시스템 명령어 기초.

SSH 서버 설치 및 설정에 대해 언급하기 전 사용자 계정 관리에 대한 명령어들과 이들을 사용하는 방법에 대해서 몇 가지 기술하도록 하겠다.



0. 기본적으로 리눅스 시스템에 로그온 하게 되면 만나는 쉘 프롬프트이다.
0.1. 쉘(shell)이란 무엇인가?
많이 접해본 대로 ‘명령어’ 해석기 이다. 커널과 사용자간에 존재 하는 녀석으로써 과거에 도스를 사용하던 시절
에 많이 본 c:\> 이 녀석을 출력해주던 놈이 쉘이다. 쉽게 설명하자 하면 컴퓨터는 on/off로 구분된 이진수로
구성된 명령어만을 이해 할 수 있도록 만들어져 있는데 사람은 이를 잘 모르기 때문에 인간의 언어로 구성된 명
령어를 타이핑 하면 이것을 컴퓨터가 아는 언어(엄밀히 말하자면 인스트럭션 셑에 근접한)로 바꿔주는 녀석이라고
생각하면 된다.
당연히 쉘의 종류엔 여러 가지가 있으며 우리가 유닉스, 리눅스를 접할 때 기본적으로 만나는 녀석은 대개 배쉬
(bash) 쉘이다.
0.1.1. #은 root. 즉 Super-User. 다시 말해 Administrator. 한국말로 ‘시스템 관리자’를 의미한다. 시스템 내에서
Super-User는 모든 권한을 가진다. 삭제 할 수 없는 파일은 없으며(물론 현재 메모리에 로드된 프로세스와 관
련된 파일이나 스왑 데이터들은 삭제 할 수 없다. 그렇다고 절대 불가능한 것은 ‘아니다.’)볼 수 없는 내용도 없
다. 하지만 당신이 시스템을 구축한 사람이 아니라면 애석하게도 root의 프롬프트 대신 다음의 프롬프트를 접하
게 될 것이다.
0.1.2. $는 일반 유저를 의미한다. Super-User가 허락한 권한만을 가지고 시스템을 운영 할 수 있다. 하지만 권한
에 따라서 꼭 위 두가지 문자만 사용해야만 하는 것은 아니다. 사용자의 마음대로 바꿔서 사용할 수도 있다.

0.2. 유닉스 시스템에서 사용하는 명령어는 무엇이 있는가? 유닉스 시스템에서는 Microsoft사의 시스템처럼 확장자
(file.exe .뒤의 문자세개)로 구분하지 않는다. 대개의 명령어들은 /bin 디렉토리 아래에 존재하며, 시스템 설정
과 관련된 명령어들은 /sbin 디렉토리, 그 외 다른 디렉토리에 존재하기도한다. 하지만!! 자주 사용하는 명령어
들은 위의 두 개 디렉토리에 거의 들어가 있으며, 그 외의 명령어들은 사용자가 설치하면서 어디에 설치되는지를
알기 때문에 어디있는지 고민해야 할 필요는 없다.
0.2.1 현재 내가 있는 디렉토리 상의 위치는?
0.2.1.1 먼저 유닉스 시스템의 범용 디렉토리 위치에 대해 ‘간략하게’ 보도록 하자.


/ : 최상위 디렉토리이다.
/bin : 앞서 언급한 대다수의 일반 명령어들이 존재한다.
/dev : 시스템에 연결된 디바이스 목록이 존재한다.
/export/home : 솔라리스 8의 경우는 사용자 디렉토리가 존재하며, 리눅스 시스템의 경우는 /home이다.
/etc : 윈도우 시스템의 제어판이라고 생각하면 쉽다. 시스템 관련 설정 파일들이 존재한다.
/lib: 시스템 라이브러리등이 존재한다.
/mnt : 일반적으로 분리 가능한 디바이스를 마운트 할 디렉토리를 생성하기 위해 사용한다.
/opt : optional 디렉토리로 추가적 프로그램 등을 설치하기 위함이지만 사용빈도는 낮은 편이다.
/proc: process관련 가상 디렉토리로서 생성된 프로세스들의 PID가 존재한다.
/sbin : 시스템 설정과 관련된 명령어 파일들이 존재한다.
/usr : 추가 설치된 프로그램들이 설치되는 장소이다.
/var : variable 디렉토리. 수시로 변하는 파일들이 존재한다.
/var/log : 각종 로그들이 존재하는 디렉토리이다.
※한 가지 유의할 점은 이 디렉토리 명들과 사용 용도가 절대적인 것은 아니며, 유닉스 시스템은 대소문자를 구분
한다는 사실이다.

0.2.1.2. 현재 내가 위치하고 있는 디렉토리를 확인하고 싶다면 다음과 같은 명령어를 입력하면 된다.



0.2.2. 내가 알고 있는 명령어는 어디에 존재하는지 궁금하다!


위의 명령어를 입력하면 현재 디렉토리 내에 존재하는 파일들이 나열된다.

0.2.2.2. 현재 디렉토리에는 내가 찾고자 하는 파일이 없다. 파일 시스템 전체에서 특정 문자열을 포함하는 파일을
찾고 싶다면?


앞서 솔라리스 시스템의 네트워크 설정 편에서 간략히 언급한 적이 있다. 루트 이하의 모든 파일을 find하되 이
결과를 파이프를 이용해 grep라는 명령어로 보낸다. grep명령어는 파이프를 통해 받은 문자열이 포함된 내용을
잡아낸다고 이해하도록 하자.
※두개 이상의 명령어를 사용하면서 | <- 파이프 문자를 사용하는 경우는 상당히 많다. 그리고 기본 파이프를 사
용하는 방법은 대개 같으므로 꼭 익혀두도록 하자. 대표적인 예로 ls | more 등을 들수 있다.

0.2.3.1. 현재 나는 / 디렉토리에 위치한다. /var/log 디렉토리로 이동하고 싶다!!
cd라는 명령어를 이용한다. cd는 Change Directory 의 머리글자이다.


절대 경로를 이용하는 방법이다. /var/log 라는 경로는 해당 시스템 내에선 언제 어디서도 변하지 않는다. 따라서
현재 내가 위치한 디렉토리가 어디가 됐건 위의 명령어를 입력하면 /var/log 디렉토리로 이동하게 될 것이다.


이경우는 절대경로를 이용하는 방법과는 달리 결과 값이 변할 수 있다. 현재 내가 있는 디렉토리가 /home디렉토
리인데 그 하위에 var디렉토리가 있고 또 그 하위에 log 디렉토리가 있다면 최종 결과값은 /home/var/log 에 위
치한 자신을 발견하는 것이다.

0.2.3.2 하위의 디렉토리로 이용하는 방법은 알았다. 그러면 상위로 이동하려면 어떻게 할것인가?
간단하다. 0.2.3.1.의 명령어를 입력하면 현재 위치와 상관 없으니 상위디렉토리의 절대 경로명만 적어주면 된다.
아~ 타이핑하기 너무 길다고?



(dot 문자 X2. ‘점’이다. ‘점’) 점 두 개가 무어냐고? ls -l 이라고 타이핑 해봐라. 출력 결과중에 ‘.’ 과 ‘..’ 이 보일
것이다. ‘.’은 현재 디렉토리의 심볼릭 링크이고, ‘..’은 부모(상위) 디렉토리의 심볼릭 링크이다. 심볼릭 링크가 뭐
냐고? 그냥 간단하게 ‘바로가기’정도로 생각하자. 지금 이 장의 내용이 유닉스 전체를 다루는 것은 아니지 않은
가? 차후 다루게 될 장에서 자세히 설명토록 하겠다.

0.2.4.1. 사용자의 계정을 추가하는 방법


-m : skell디렉토리를 사용하겠다는 의미이다. skell의 사전적 의미는 ‘부랑자’라는 뜻으로써 최초 사용자가 생성
될 경우 초기 값으로 사용하게 될 사용자 환경 설정 파일을 담는 디렉토리를 의미한다.
필수 사항은 아니지만 일일이 사용자 환경 설정 파일을 입력하기는 귀찮으니 지정해두는게 편하다.
-k : -m으로 사용하겠다고 했으니 그 위치를 지정해줘야 한다.
-d : 사용자 홈 디렉토리를 설정하는 부분이다.
-g : 사용자가 속할 그룹을 지정하는 부분이다.
HAEDONG : 사용할 계정 이름을 입력한다.

0.2.4.2. 삭제를 원한다면




0.2.4.3. 사용자 정보를 수정하기를 원한다면?


-c : 사용자 코멘트를 넣는다. 아이디만으로 구분이 안될 경우를 위해 사용하는 이름이라고 생각하자.
나머지 옵션은 useradd와 같다.

0.2.4.4. 사용자 암호 설정


로그온 한 사용자 프롬프트에서 passwd만 입력해도 똑같은 결과를 얻을 수 있다.
명령어를 입력하면 2번째행이 출력되므로 패스워드 입력, 재입력, 성공 메시지.

0.3. 소프트웨어를 추가하는 방법.
유닉스와 리눅스는 소스가 공개 되어있다. source.c 의 형태로 우리가 자주 보는 c혹은 c++등으로 만들어진 코
드파일이 공개되어있다는 말이다. 이들을 구해서 직접 컴파일 해서 사용하는 것과 별도로 배포되는 배포 패키지
를 구해서 설치하는 방법, 즉 패키지 매니저를 사용하는 방법 두가지가 있다.
0.3.1. 레드햇 계열의 배포본은 RPM (Redhat Package Manager) 데비안 계열은 .deb로 배포된다. 업데이트 및 설
치 매니저로는 YUM(Yellowdog Update Manager : 레드햇 계열용)과 apt-get과 synaptic(GUI)의 데비안 계열
용 등이 있다.
0.3.2. 솔라리스의 경우 설치된 패키지를 확인하기 위한 명령어로는 아래와 같은 것을 사용한다.


아마도 미처 다 읽어보기도 전에 엄청난 내용이 지나갔을 것이다. 파이프를 사용하자. 0.3.3. ssh 데몬을 설치하기 위해 openssh-5.0p1-sol8-sparc-local 패키지를 얻었다. 이것을 설치하는 명령어는
다음과 같다.


0.3.4. 필요없는 패키지의 삭제를 위한 명령어이다.

by HaeDong™ | 2008/07/26 02:47 | 지식-컴퓨터일반 | 트랙백 | 덧글(0)

네트워크 구성/관리 기초 #4. 솔라리스 시스템 사용자 편의 환경 구축.

솔라리스 시스템 사용자 편의 환경 구축
작성일 08.7.25
소개된 패키지/소스의 버전들은 문서를 읽는 시점과 다를 수 있다.

허전한 GUI환경에서 터미널을 뛰웠지만 터미널에서 이전 명령어 리스트도 그 편한 pushd와 popd 도 사용 할 수 없을 것이다. 무엇보다 sudo 명령어가 없다는 것과 path 가 지정되어 있지 않다는 것이 여간 불편하지 않을 수 없다. 조금은 쾌적한 터미널 환경을 만나기 위해 필요한 몇가지 패키지를 설치하고 간단하게 세팅해보도록 하자.

패키지들을 구하려면 http://www.sunfreeware.com을 참조하도록 한다. 제작사와 소스들 모두 링크 되어있다.
패키지의 설치는 (Super-User 권한으로) ‘pkgadd -d 패키지 명‘ 의 형식으로 입력 해주면 된다.

1. 소스건 패키지건 컴파일러가 있어야 설치 할 수 있다. Gnu C Compiler를 설치하자.
ftp://ftp.sunfreeware.com/pub/freeware/sparc/8/gcc-3.4.6-sol8-sparc-local.gz
1.1. gcc를 위해선 livconv과 libntl 패키지를 필요료 한다.
1.1.1. libiconv
ftp://ftp.sunfreeware.com/pub/freeware/sparc/8/libiconv-1.11-sol8-sparc-local.gz
1.1.2. libintl
ftp://ftp.sunfreeware.com/pub/freeware/sparc/8/libintl-3.4.0-sol8-sparc-local.gz

2. 일단은 컴파일러가 설치 되었다. 콘솔에서 명령어 입력하기가 여간 불편하지 않을 수 없다.
(필자는 bash 쉘을 사용한다.) bash 셀의 새 버전으로 설치하자.
ftp://ftp.sunfreeware.com/pub/freeware/sparc/8/bash-3.2.17-sol8-sparc-local.gz
위의 배쉬 쉘 패키지 설치에는 libiconv, libintl 패키지와 libgcc-3.4.6혹은 gcc-3.4.6 이상의 패키
지를 필요로 한다.
2.1. 필자의 아이디는 haedong. haedong이란 아이디의 기본 쉘을 bash로 바꿔주자.
/etc/passwd 파일을 편집기로 연다.
haedong 유저에 해당하는 행의 끝부분의 쉘을 바꿔주자. bash 쉘은 /bin 디렉토리에 위치 하여 있
으므로 다음과 같이 수정해주자.
...생략...:/bin/bash
다시 로그인 하였을 때 다음과 같이 프롬프트가 떨어지면 정상이다.
bash-2.03$
2.2. korn shell이나 c shell, tc shell등을 사용한다면 해당 패키지를 찾아서 설치해주도록 하자.

3. 루트의 권한을 필요로 하는 작업을 해야 할 일은 많지만 root로 로그온 하거나 하는 것은 보안상 상
당한 위험을 동반한다. 이런 부분에서 sudo (Super-User Do) 명령어는 상당한 이점을 가진다.
-sudoers 파일에 등록된 사용자에 한해서만 동작한다.
-root의 패스워드를 공개하지 않아도 된다. sudo 명령어는 등록된 유저의 패스워드로 동작한다.
-해당 명령행 한줄에 한해서만 한시적으로 루트의 권한을 가지게 된다.
3.1. 이제 필요성을 느꼈으면 설치하자.
ftp://ftp.sunfreeware.com/pub/freeware/sparc/8/sudo-1.6.9p16-sol8-sparc-local.gz
sudo 역시 libiconv, libintl 패키지와 libgcc-3.4.6혹은 gcc-3.4.6 이상의 패키지를 필요로 한다.
3.2. sudo의 설치가 완료 되었으니 당장 루트는 로그아웃 하고 내 계정으로 접속하자.
$ sudo vi passwd
하지만 파일이 없다는 메시지를 뿌릴 뿐이다. 이제 파일 경로 path를 지정하도록 하자.
4. 유닉스 계열에서 명령어를 입력하면 쉘은 기본적으로 $PATH에 등록된 디렉토리 순서대로 파일을 검
색하고 그 순서대로 파일을 실행한다. 다음을 입력해보자.
echo $PATH
($PATH 변수를 의미한다. 쉘스크립트와 관련 된 내용이니 설명하지 않고 넘어간다. 일단은 외우자.)
아마 대부분의 경우라면
/~;/bin;/sbin
정도만 표시 될 것이다.(~는 home 디렉토리의 의미이다.) 우선 다음 열을 입력하자.
path = $path : /~ ; /bin;/sbin ; /usr/local/bin ; /usr/local/sbin ; /usr/local/share
우측에서 왼쪽으로 읽는다. 경로 지정 할 디렉토리를 path 변수에 넣고 이것을 path롤 지정하라.
5. vi에디터는 쪼~~~금 불편하다. vim을 설치해서 사용하도록 하자.
ftp://ftp.sunfreeware.com/pub/freeware/sparc/8/vim-7.1-sol8-sparc-local.gz
vim은 다음의 패키지들을 필요로 한다.
5.1. gtk+ 패키지. 여러 플랫폼의 GUI를 위한 도구 정도로 이해하자.
ftp://ftp.sunfreeware.com/pub/freeware/sparc/8/gtk+-2.12.0-sol8-sparc-local.gz
gtk+패키지는 또 다음의 패키지들을 필요로 한다. (....)
5.1.1. atk. gnome x-window 추가 도구 패키지.
ftp://ftp.sunfreeware.com/pub/freeware/sparc/8/atk-1.18.0-sol8-sparc-local.gz
5.1.2. glib. GDK, GTK+, gnome x-window 등등의 응용프로그램에서 사용되는 도구 라이브러리.
ftp://ftp.sunfreeware.com/pub/freeware/sparc/8/glib-2.14.1-sol8-sparc-local.gz
5.1.3. pango. 여러 형식의 text를 보여주기 위한 패키지.
ftp://ftp.sunfreeware.com/pub/freeware/sparc/8/pango-1.18.2-sol8-sparc-local.gz
정말 애석하게도 이녀석 역시 또 다른 라이브러리들을 필요로 한다.....
5.1.3.1. expat. XML 파싱과 관련된 라이브러리이다.
ftp://ftp.sunfreeware.com/pub/freeware/sparc/8/expat-2.0.1-sol8-sparc-local.gz
5.1.3.2. freetype. 소프트웨어 글꼴 엔진.
ftp://ftp.sunfreeware.com/pub/freeware/sparc/8/freetype-2.3.1-sol8-sparc-local.gz
5.1.3.3. render. X 관련 확장 인스톨을 위해 필요한 헤더와 문서.
ftp://ftp.sunfreeware.com/pub/freeware/sparc/8/render-0.8-sol8-sparc-local.gz
5.1.3.4. Xrender. X렌더링 클라이언트 라이브러리.
ftp://ftp.sunfreeware.com/pub/freeware/sparc/8/xrender-0.8.3-sol8-sparc-local.gz
5.1.3.5. fontconfig. 폰트 설정, 사용자화와 관련된 라이브러리.
ftp://ftp.sunfreeware.com/pub/freeware/sparc/8/fontconfig-2.4.2-sol8-sparc-local.gz
5.1.3.6. zlib.
ftp://ftp.sunfreeware.com/pub/freeware/sparc/8/zlib-1.2.3-sol8-sparc-local.gz
5.1.4. cairo. 다중 출력 디바이스를 위한 2D 그래픽 라이브러리.
ftp://ftp.sunfreeware.com/pub/freeware/sparc/8/cairo-1.4.10-sol8-sparc-local.gz
다음의 패키지를 필요로한다.
5.1.4.1. libpng. PNG그래픽 포맷 파일을 위한 PNG라이브러리 루틴.
ftp://ftp.sunfreeware.com/pub/freeware/sparc/8/libpng-1.2.29-sol8-sparc-local.gz
5.1.5. new curses. CRT처리와 최적화 패키지.
ftp://ftp.sunfreeware.com/pub/freeware/sparc/8/ncurses-5.6-sol8-sparc-local.gz
5.f. 정말 뭐가 뭔지 알기도 힘든 패키지들을 많이도 설치했다. 많이 설치하긴 했지만 vim과 관련된
패키지 중 gtk+ 하위 패키지들은 콘솔 환경에서는 없어도 되는 녀석들도 꽤 많다. 실제 gtk+의 경
우 gtk+를 위한 의존성 패키지들은 없어도 무방하단 이야기다. 알아서들 설치하도록 하자.......
6. 쉘에 vim을 입력해보자. 정상적으로 동작 하는가? 그렇다면 이제 자신의 홈 디렉토리로 이동하자.
4절에서 입력했던 path는 시스템이 재 시작하면 사라지는 내용들이다. 이제 로그온 할때마다
읽어들일 수 있도록 환경설정 파일에 넣어주도록 하자.
$ vim .dt_profile
문서 내용의 아무곳에나 다음의 라인을 추가해준다.
path = $path : /~ ; /bin;/sbin ; /usr/local/bin ; /usr/local/sbin ; /usr/local/share

그 외에도 일반적으로 콘솔환경이나 GUI환경에서 작업에 상당히 많은 영향을 주는 설정이나 프로그램들이 있지만 적어도 콘솔에서는 위의 프로그램들이나 환경 설정 등만 있으면 무방하다. 시스템 설정 초기에는 적어도 위의 환경 설정정도는 자신의 입맛에 맞게 꾸며놓도록 하자.

by HaeDong™ | 2008/07/25 23:23 | 지식-컴퓨터일반 | 트랙백(1) | 덧글(0)

네트워크 구성/관리 기초 #3. netmask를 이용한 호스트 영역 도출



무슨 내용인지 모르겠다고?
우선 이진수 계산하는 방법을 공부해라!!

by HaeDong™ | 2008/07/22 01:07 | 지식-컴퓨터일반 | 트랙백 | 덧글(0)

◀ 이전 페이지          다음 페이지 ▶