64MB의 작은 USB 메모리 카드가 하나 있습니다.
설정 파일이나 작업 문서 등을 백업해두기 딱 좋습니다. /etc를 통채로 백업해도 남습니다. ^^

USB 메모리 카드를 USB 포트에 꽂으면 hotplugging되어 바로 인식합니다. 
dmesg 로 확인. lsmod로 모듈이 로딩된 것도 확인
/proc/bus/usb/devices, /proc/bus/usb/drivers, /proc/partitions 파일에서 더 자세한
정보를 얻을 수 있습니다.

--------------------------------------------------------------------
# dmesg

... 생략 ...
hub.c: new USB device 00:1f.2-2, assigned address 5
usb.c: USB device 5 (vend/prod 0x9a6/0x8001) is not claimed by any active
driver.
Initializing USB Mass Storage driver...
usb.c: registered new driver usb-storage
scsi1 : SCSI emulation for USB Mass Storage devices
 Vendor: KMIT   Model: UNI DRIVE     Rev: 1.00  <-- 국산입니다. ^^
 Type:  Direct-Access           ANSI SCSI revision: 02
Attached scsi removable disk sda at scsi1, channel 0, id 0, lun 0
SCSI device sda: 129408 512-byte hdwr sectors (66 MB)
sda: Write Protect is off <-- 쓰기 가능 상태
sda: sda1         <-- 디바이스와 파티션
WARNING: USB Mass Storage data integrity not assured
USB Mass Storage device found at 5
USB Mass Storage support registered.
#
# lsmod |grep usb
usb-storage      74592  1
scsi_mod       107608  4 [sg sd_mod usb-storage ide-scsi]
usb-uhci        26412  0 (unused)
usbcore        78944  1 [usb-storage hid usb-uhci]
--------------------------------------------------------------------

속에 있는 걸 다보여줬네요.
/dev/sda, /dev/sdb 디바이스를 통해 사용할 수 있습니다. 위에 보이는대로
저는 /dev/sda 입니다. 파티션은 하나여서 sda1만 표시됐습니다.
여러 개이면 sda1 sda2 sda3 .. 같이 표시됩니다.

1. mount해봅시다.

/etc/fstab에 다음과 같이 넣습니다. /dev/sda1은 자신의 환경에 맞게
--------------------------------------------------------------------
/dev/sda1  /mnt/usb  auto   noauto,iocharset=cp949,user 0 0
--------------------------------------------------------------------

mount 하면
--------------------------------------------------------------------
# mkdir /mnt/usb <-- 없다면 생성
# mount /mnt/usb
# df -k
Filesystem      1K-blocks   Used Available Use% Mounted on
... 생략 ...
/dev/sda1        64432   24624   39808 39% /mnt/usb
--------------------------------------------------------------------

2. 자동으로 마운트되도록

1) automount 데몬으로 사용할 때만 마운트하기

USB 메모리 카드로 접근을 하면 바로 mount되도록 /etc/auto.misc에 다음을 넣습니다.

--------------------------------------------------------------------
usb       -fstype=auto,iocharset=cp949 :/dev/sda1
--------------------------------------------------------------------

cd /misc/usb 또는 ls /misc/usb만 해도 바로 마운트되고 60초동안 사용이 없으면
unmount 됩니다. automount에 대해서는
http://coffeenix.net/board_view.php?cata_code=0&bd_code=27 를 참고

2) USB 메모리 카드를 꽂을 때 자동으로 마운트하기

hotplugging에 의해 usb-storage 모듈이 로딩이되고 이 때 쉘 스크립트를 통해 mount
명령을 실행할 수 있다.

/etc/hotplug/usb/usb-storage 파일을 만들고 다음을 입력합니다. 그런 후 chmod 755 usb-storage

--------------------------------------------------------------------
#!/bin/sh
#
# /etc/fstab 설정에 따라 /mnt/usb에 마운트
mount /mnt/usb
--------------------------------------------------------------------
2005/07/04 12:16 2005/07/04 12:16
어떤 도메인이 있을때 그 도메인으로 가는 메일을 받는 서버,
즉 메일 서버의 FQDN을 알아야 할 일이 있을 겁니다.

MTA를 제작한다거나, 아니면 메일의 목적지 메일 서버로 직접
SMTP를 이용해서 메일을 보내고 싶을 수도 있고요.

Linux 7.0인가부터 새로 들어있는 host 프로그램을 이용하는
방법입니다. 물론 nslookup도 됩니다. 자세한건 man page 참고.

DNS 설정해 보신 분은 아시겠지만, 메일 서버는 MX 레코드에 의해
지정됩니다.

다음과 같은 명령을 이용하면 hanmail.net 도메인의 메일 서버를
검색할 수 있습니다.

host -t mx hanmail.net

결과는 다음과 같네요.

[chaos@chaos ~]$ host -t mx daum.net
daum.net. mail is handled by 10 mx1.hanmail.net.
daum.net. mail is handled by 10 mx2.hanmail.net.
daum.net. mail is handled by 10 mx3.hanmail.net.
daum.net. mail is handled by 10 mx4.hanmail.net.
daum.net. mail is handled by 10 mx5.hanmail.net.
daum.net. mail is handled by 10 mx6.hanmail.net.
daum.net. mail is handled by 10 mx7.hanmail.net.
daum.net. mail is handled by 10 mx8.hanmail.net.
daum.net. mail is handled by 10 mx9.hanmail.net.
daum.net. mail is handled by 10 mx10.hanmail.net.
[chaos@chaos ~]$
2005/07/04 12:16 2005/07/04 12:16
D. J. Bernstein 이 만든 clockspeed는 NTP 프로토콜을 사용해 믿을만한 소스와의 시간 동기화에 쓰이는 sntpclock, 로컬 네트워크상의 컴퓨터들의 시간을 동기화 시키는데 쓰이는 데몬과 클라이언트 (taiclockd, taiclock)등을 포함하고 있다.
컴파일/설치
clockspeed 소스를 다운로드한다 clockspeed-0.62.tar.gz (local copy, RPM).

tar xzf clockspeed-0.62.tar.gz
cd clockspeed-0.62
make
make setup check

파일들은 /usr/local/clockspeed/에 설치되며 /etc/leapsecs.dat도 생긴다. 실행파일들은 /usr/local/clockspeed/bin/에 설치되므로, $PATH에 추가해준다.

glibc 2.3.1 이상에서는 컴파일이 되지 않을 것이다. 다음 패치를 적용 후 컴파일 한다. clockspeed-0.62.errno.patch


시간 조정
일단 정확한 시간 소스를 제공할 믿을 만한 NTP 서버를 사용해야 하는데 http://www.eecis.udel.edu/~mills/ntp/servers.htm에서 찾을수 있다 (나는 ntp.nasa.gov를 사용했다).

NTP서버의 ip를 1.2.3.4 라고 가정하고, 일단 자신의 시스템과 NTP 서버간의 시간차이를 보자.

[ gate@root ]$ sntpclock 1.2.3.4 | clockview
before: 2001-12-24 13:31:37.609422000000000000
after: 2001-12-24 13:25:37.718549326965332031

결과에서 보여지는 것처럼 꽤 차이가 나고 있음을 알수 있다. 다음과 같이 시간을 맞추어준다.
sntpclock 1.2.3.4 | clockadd

다시 얼마나 차이가 나는지 확인,
[ gate@root ]$ sntpclock 1.2.3.4 | clockview
before: 2001-12-24 13:37:07.265703000000000000
after: 2001-12-24 13:37:07.391163127197265624

이제 거의 차이가 없음을 알수 있다.

정확한 시간으로 유지하기
RTC 자체의 부정확함 때문에 한번 시간을 정확히 맞추었다 하더라고 얼마간의 시간이 지나면 다시 오차가 생기기 시작하게 된다. 이것을 막기 위해 clockspeed를 다음과 같은 방법으로 실행해준다.


clockspeed를 실행하고 NTP서버와의 오차를 기록한다.
clockspeed &
sntpclock 1.2.3.4 > /usr/local/clockspeed/adjust &

몇시간 뒤에 다시 오차를 clockspeed에게 알려준다.
sntpclock 1.2.3.4 > /usr/local/clockspeed/adjust &

몇일 후에 오차를 확인해보고 위 과정을 반복한다.
sntpclock 1.2.3.4 | clockview
sntpclock 1.2.3.4 > /usr/local/clockspeed/adjust &

3번 과정을 몇주후, 몇개월 후에 한번 실행해주면 NTP서버와 거의 오차가 없는 완벽한 동기화가 이루어 진다.

로컬 네트워크의 시간 동기화
이제 우리는 위의 과정으로 시간이 정확히 맞추어진 시스템을 기준으로 로컬 네트워크상의 다른 컴퓨터들의 시간을 동기화 할수 있다. 이때 기준이 되는 서버에서는 TAICLOCK 프로토콜을 제공하는 taiclockd 데몬을 실행주켜 주고, 다른 컴퓨터들은 taiclock 클라이언트를 사용하여 시간을 동기화 시킨다.

기준이 되는 서버의 ip가 192.168.1.1 이라고 가정하고,


기준이 되는 서버상에 taiclockd 를 실행시킨다 (root 권한으로 실행하지 않아도 된다). .
taiclockd &

이제 부터는 기준 서버와 시간을 동기할 클라이언트상에서 해야할 일이다. 일단 기준 서버와의 오차를 확인해 본다.
[ home@root ]$ taiclock 192.168.1.1 > /tmp/adjust
[ home@root ]$ clockview < /tmp/adjust
before: 2001-12-24 14:10:34.888573000000000000
after: 2001-12-24 14:17:14.884068500000000000

7분이나 차이가 나고 있었다! :(

시간을 맞춰주자.
clockadd < /tmp/adjust

위에서 설명한 것처럼 정확한 시간을 유지하기 위해 clockspeed 를 실행하고, 오차를 기록한다.
clockspeed &
taiclock 192.168.1.1 > /usr/local/clockspeed/adjust &

몇일후에 다시 이 과정을 반복한다.
taiclock 192.168.1.1 > /usr/local/clockspeed/adjust &


daemontools로 clockspeed 구동하기 다음 내용은 홍덕기 may@base.yonsei.ac.kr님께서 보내주셨습니다.
daemontools 에 clockspeed 서비스 디렉토리를 생성 $ mkdir /var/service/clockspeed


서비스의 실행 스크립트를 생성 $ vi /var/service/clockspeed/run
#!/bin/sh
exec 2>&1
PATH="/usr/local/clockspeed/bin:/sbin:/usr/sbin:/bin:/usr/bin:$PATH"
exec clockspeed


run 스크립트를 실행 모드로 설정해 준다 $ chmod 755 /var/service/clockspeed/run


daemontools 서비스로 실행 $ ln -s /var/service/clockspeed /service


이와 같이 하면 항상 백그라운드로 clockspeed 를 띄워 둘 수 있다.
2005/07/04 12:15 2005/07/04 12:15
Shell 접속을 아예 끊어 버리기

/etc/passwd 파일의 계정 내용중 마직막 부분이 Shell설정 부분입니다.

test:x:500:500::/home/test:/bin/bash <-- /bin/bash 부분입니다.

bash부분을 변경해 주면 ftp계정은 열어주되 Shell서비스는 막을수가 있습니다.

!!! 주의 !!!
/bin/false 나 /bin/true 로 하시면 ftp서비스까지 하실수가 없습니다.

:: 단계 1
cat /etc/shells
/bin/bash2
/bin/bash
/bin/sh
/bin/ash
/bin/bsh
/bin/tcsh
/bin/csh

쉘이 등록되어 있는 곳입니다.
이곳에 임의로 하나를 등록 합니다.
예를 들어 /bin/nosh 이라고 아래부분에 추가한후

cd /bin
touch nosh( 퍼미션 777 )

그리고 /etc/passwd 쪽에서 쉘부분의 세팅만 바꿔 주면 됩니다.
test:x:500:500::/home/test:/bin/nosh <-- 요깁니다.
2005/07/04 12:13 2005/07/04 12:13
ip 공유로 proftpd 의 ftp 서비스를 할때 ls 와 같은 명령을 하면 passive ... 메시지가 나오면서 목록을 못받아 올때가 있습니다.
그럴때 서버의 proftpd.conf 파일에다가 다음의 명령을 적어주면 됩니다.

AllowForeignAddress on
2005/07/04 12:13 2005/07/04 12:13

콘솔에서 beep 없애기

FAQ 2005/07/04 12:12
탭 키나 백스페이스를 쓸때, beep 이 나지요..
이 beep 음이 듣기 싫으신 예민한 분들을 위해
이 팁을 올립니다.(bash 셀에서입니다.)

1. 콘솔상에서 아래와 같이 하면 없어집니다.

$echo -e "\33[11;0]"
## '-e' 옵션은 역슬래쉬 가 esc 키 임을 의미합니다.
## 로그인할 때마다 없애려면 ~[id]/.bashrc 화일에 추가해주세요.

다시 beep 이 그리워지면 다음과 같이 하세요.
$echo -e "\33[10;750]\33[11;250]"

##위 사항에 대해 추가하면,
ESC-[10;xx]는 벨소리의 주파수대를 말하는거구요..
디폴트 는 750Hz 입니다.
ESC-[11;xx]는 벨소리가 얼마나 길게 울리느냐 하는겁니다.
디폴트는 125ms 입니다.

2. 다음은 x 상에서의 beep 없애기 입니다.
$xset -b
다시 듣고 싶으면,
$xset b

위와 같이 사용하면 됩니다.
2005/07/04 12:12 2005/07/04 12:12
웹호스팅 사이트를 돌아다니다보면
" 일일트래픽 500M , 혹은 일일 히트수 1000 히트 제한 "
이런 글을 볼 수 있습니다.


트래픽을 제어하는 방법은 mod_bandwidth 와 mod_throttle 두가지가 주로 많이 쓰이는데
mod_bandwidth 는 대역폭을 관리 하는 모듈이며
mod_throttle 은 트래픽을 제어하는 모듈입니다 ( 그게 그 소리 같은가 ? ㅡㅡ;; 하지만 두개의
역할은 분명히 다릅니다 )

예를들어 1M 짜리 파일을 받는다고 하면
mod_bandwidth 모듈을 이용하면 초당 얼마의 속도까지 전송이 가능한지를 관리 하고
mod_throttle 모듈은 1M 파일을 몇번까지 다운받을 수 있느냐를 관리 하게 되겠죠.

mod_bandwidth 모듈은 1M 파일을 다운 받는 속도를 apache 서버 관리자가 마음대로
조절할 수 있으나 다운 받는 횟수, 다시말해 총 다운로드 양은 조절이 안되고

mod_throttle 모듈은 1M 파일을 다운받는 속도를 조절할 수 없으나
다운받는 총 횟수, 즉 총 다운로드 양을 조절할 수 있다는 말입니다.

두개를 함께 쓰면 트래픽, 대역폭 관리에 유용하겠죠.


이번 강좌에서는 mod_throttle 모듈만 설명 하겠습니다.
아파치가 설치된 디렉토리는 /usr/local/apache 라고 가정하고 설명 합니다.

우선 mod_throtte.c 파일을 다운받아 아파치 경로의 특정 디렉토리로 가져다 놓습니다.

이걸 구할 수 있는곳은

http://www.snert.com/Software/mod_throttle/index.shtml

위 웹사이트입니다.

mod_throttle312.tgz 파일을 다운 받을 수 있네요 ( 2003년 10월 25일 현재 )
다운받아 압축을 풀면 여러개의 파일이 나오는데 그 중에서
mod_throttle.c 파일을 /usr/local/apache/src/module/extra 에 가져다 놓습니다.


그리고 아파치를 컴파일을 다시 하는데
아래와 같은 컴파일 옵션을 줘야 합니다.

[root@myserver /]# cd /usr/local/apache
[root@myserver apache]# ./configure --prefix=/usr/local/apache \
--activate-module=src/modules/php4/libphp4.a \
--add-module=src/modules/extra/mod_throttle.c


( 여기서 \ 표시는 줄이 바뀌며 라인이 지저분해 지는것을 방지 하기 위해
줄을 넘기면서 명령어를 계속해서 입력하기 위해 사용한 표시입니다 )


기존의 php 연동 옵션 (activate... ) 아래에 모듈을 함께 컴파일 하는것으로 옵션을 주었습니다.

이제 make 그리고 make install 로 컴파일을 합니다. ( 이 부분은 아래글 apache ,PHP 설치하기를
참조하시길 바랍니다 )


컴파일이 완료 되었으면 모듈이 제대로 추가 되었는지 확인해 봅니다.

[root@myserver apache]# /usr/local/apache/bin/httpd -l
Compiled-in modules:
http_core.c
mod_env.c
mod_log_config.c
mod_mime.c
mod_negotiation.c
mod_status.c
mod_include.c
mod_autoindex.c
mod_dir.c
mod_cgi.c
mod_asis.c
mod_imap.c
mod_actions.c
mod_userdir.c
mod_alias.c
mod_access.c
mod_auth.c
mod_setenvif.c
mod_php4.c
mod_throttle.c
suexec: disabled; invalid wrapper /usr/local/apache/bin/suexec


맨 아래쪽에 mod_throttle.c 라는 모듈이 보입니다.
제대로 컴파일이 된 상태입니다.

이제 모듈을 사용해 보겠습니다.

httpd.conf 파일을 열어서 이 있는 위치로 이동합니다.
( 꼭 거기에다 편집할 필요는 없지만 .. 같은 내용은 몰아 넣는것이 관리하기 좋겠죠 )

아래의 내용을 입력합니다.



ThrottlePolicy none


SetHandler throttle-status
Deny from all // 다른접근을 모두 거부하고
Allow from 123.123.123.123 // 특정 아이피에서만 throttle-status 를 확인 하도록



SetHandler throttle-me



Order deny,allow
Deny from all
Allow from all
SetHandler throttle-me




throttle-status 를 확인할 수 있는 아이피를 정해 놓은 부분(Allow from.. )을 주의 하시길 바랍니다.
아무나 서버 상태를 확인하게 하면 좇치 않겠지요 ? ㅋㅋ
위 설정은 123.123.123.123 에서만 서버 전체의 트래픽 상황을 모니터링 하도록 설정한 것입니다.


virtualhost 에서의 설정은 아래와 같습니다.


ServerAdmin dream@praise.co.kr
DocumentRoot /home/dream/public_html
ServerName myserver.co.kr
ServerAlias www.myserver.co.kr
Throttle Policy Volume 1024M 1d // 1일 1G 제한
ThrottlePolicy Request 1000 1d // 하루 히트수 1000회 제한
ErrorLog /var/log/httpd/error_log
CustomLog /var/log/httpd/access_log common



위의 내용대로
서버에서 운영되는 도메인에 대해 throttlepolicy 를 설정한 뒤
아파치를 재시작 하고

http://서버IP/throttle-status 를 확인 하면
서버에 설정된 대역폭의 모든 내용을 확인 할 수 있으며

서버에 설정된 특정 도메인의 트래픽을 확인 하려면
http://domain/throttle-me 를 확인 하면 됩니다.

* 아직은 APACHE v2에서 지원되지는 않고있습니다.
2005/07/04 12:11 2005/07/04 12:11
/proc는 가상 파일 시스템으로 메모리에 있는 시스템의 직접적인 반영이며 계층 형태로 표현됩니다.
즉 커널과 현재 수행되는 프로세스에 대한 정보를 쉽게 얻기 위해 존재하는 곳입니다.
ps로 시스템 상태에 관한 정보를 얻기 위해 /proc를 읽어 들이기도 합니다.
이곳에서 아래와 같은 일을 수행할수 있습니다..

- 통계적 정보를 보는 것
- 하드웨어 정보 알아내기
- 런타임 파라메터 수정하기
- 네트워크와 호스트 파라메터 보기 및 수정
- 메모리와 수행능력에 관한 정보

/proc의 구조(해당 파일및 디렉토리 설명)

loadavg : 지난 1,5,15 분간의 평균 시스템 부하
uptime : 부트 이래로 총 가동 시간(초) 과 프로세스에 의해 사용된 총 시간
meminfo : 메모리와 스왑의 사용 및 프리 바이트
kmsg : 커널에 의해 읽혀질 커널 메시지
version : 커널 또는/그리고 배포본의 버전
cpuinfo : 프로세서(CPU) 파라메터
pci : 현재의 PCI 슬롯 사용 정보
self/ : 현재 /proc를 억세스하고 있는 프로세스 정보
net/ : 네트워크 계층 설명
scsi/ : 개개의 scsi 장치에 관한 정보를 갖는 파일들이 위치함.
malloc : kmalloc 과 kfree 운영 정보 모니터링
kcore : 커널 코어 덤프
modules : 단일 적재 모듈에 관한 정보
stat : 일반 리눅스 통계
devices : 커널에 등록된 시스템 장치에 관한 정보
interrupts : 인터럽트 할당 정보
filesystems : 현재의 파일시스템 구현
ksyms : 커널에의해 익스포트된 심볼
dma : 사용중인 DMA 채널
ioports : 현재 사용중인 입출력 포트
smp : SMP가 활성화 돼 있을 경우 각 CPU 정보
cmdline : 부트시에 커널에 넘겨진 파라메터
sys/ : 중요한 커널과 네트워크 정보
mtab : 현재 마운트된 파일 시스템
md : 다중 디바이스 드라이버 정보(활성화 되었을 경우)
rc : 확장 리얼타임 클럭
locks : 현재 락(locked)된 파일
Numbered Directories : 숫자로 된 디렉터리는 그 PID의 실행 프로세서 정보이다.

해당 정보를 보고자 한다면(파일일 경우)

[root@dream root]# cat /proc/cpuinfo
processor : 0
vendor_id : GenuineIntel
cpu family : 15
model : 2
model name : Intel(R) Pentium(R) 4 CPU 2.40GHz
stepping : 7
cpu MHz : 2411.691
cache size : 512 KB
fdiv_bug : no
hlt_bug : no
f00f_bug : no
coma_bug : no
fpu : yes
fpu_exception : yes
cpuid level : 2
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm
bogomips : 4784.26

이처럼 자세한 정보를 볼수 있습니다.
이곳 파일들의 크기는 0으로 나타나는데.. 이는 신경쓰지 않으셔도 됩니다.
/proc 파일들은 수정을 하지 않는 것이 좋습니다.
그리고 /proc의 기능 및 그 내용들은 버전마다 다르다니 주의하기 바랍니다.
2005/07/04 12:10 2005/07/04 12:10

top 출력 내용 분석

FAQ 2005/07/04 12:09
[root@op root]# top

12:43pm up 10 days, 3:35, 1 user, load average: 0.98, 0.97, 0.91
49 processes: 46 sleeping, 3 running, 0 zombie, 0 stopped
CPU states: 94.6% user, 5.1% system, 0.0% nice, 0.1% idle
Mem: 61508K av, 60736K used, 772K free, 0K shrd, 13176K buff
Swap: 522072K av, 19204K used, 502868K free 20864K cached

PID USER PRI NI SIZE RSS SHARE STAT %CPU %MEM TIME COMMAND
598 root 20 0 16720 14M 428 R 99.6 23.4 1245m rcd
19464 root 10 0 1080 1080 860 R 0.1 1.7 0:00 top
1 root 8 0 92 64 44 S 0.0 0.1 0:04 init
2 root 9 0 0 0 0 SW 0.0 0.0 0:00 keventd
3 root 9 0 0 0 0 SW 0.0 0.0 0:00 kapmd
4 root 19 19 0 0 0 SWN 0.0 0.0 0:00 ksoftirqd_CPU0
5 root 9 0 0 0 0 SW 0.0 0.0 0:02 kswapd
6 root 9 0 0 0 0 SW 0.0 0.0 0:00 kscand
7 root 9 0 0 0 0 SW 0.0 0.0 0:00 bdflush

PID : process ID
USER : 해당 프로세서의 소유자
PRI : 일의 우선 순위 (높을 수록 우선 처리함)
NI : 일의 nice value 값.. 마이너스(-)를 가지는 nice value 는 우선 순위가 높음
SIZE : 해당 프로세스의 크기
RSS : 사용되어 지는 실제 메모리의 양(KByte 단위)
SHARE : 프로세스에 의해 사용된 메모리를 나눈 메모리의 총합
STAT : 프로세스의 상태를 나타냄.. 상태는 아래를 참조..
%CPU : cpu의 사용량을 %로 표시
%MEM : mem 의 사용량을 % 로 표시
TIME : 프로세스가 시작되어 사용된 총 cpu 시간을 나타냄.. 자식 프로세스가 있으면
그 자식 프로세스가 종료 될때까지의 시간도 포함이 된다.
2005/07/04 12:09 2005/07/04 12:09
리눅스에서 방화벽 설정으로 인해 Xmanager가 동작하지 않습니다. 어떻게 해야 하나요?

아래와 같은 배포판에서는 설치시에 기본적으로 방화벽이 설정됩니다.

레드햇 7.0, 7.1, 7.2
와우리눅스 7.0, 7.1 파란
한컴리눅스 2.0


ipchains를 사용하여 설정한 경우
/etc/sysconfig/ipchains 파일의 앞부분에 다음 문장을 추가시켜 주시기 바랍니다.

(*회색으로 표시된 부분은 설명을 위한 것으로 실제 파일에는 추가하지 않으셔도 됩니다.)

# If you want to use GNOME/KDE, add the following line.
-A input -p udp -s 0/0 -d 0/0 177 -j ACCEPT
# If you have set font server on Xconfig, add the following line.
-A input -p tcp -s 0/0 -d 0/0 7100 -j ACCEPT
# If you are to connect via remocon, add the following line(s).
-A input -p tcp -s 0/0 -d 0/0 telnet -j ACCEPT
-A input -p tcp -s 0/0 -d 0/0 ssh -j ACCEPT
-A input -p tcp -s 0/0 -d 0/0 login -j ACCEPT
-A input -p tcp -s 0/0 -d 0/0 exec -j ACCEPT
-A input -p tcp -s 0/0 -d 0/0 shell -j ACCEPT


iptables 을 사용하여 설정한 경우
/etc/sysconfig/iptables 파일의 앞부분에 다음 문장을 추가시켜 주시기 바랍니다.

<단,INPUT 이나 ACCEPT는 꼭 대문자로 하세요.>
(*회색으로 표시된 부분은 설명을 위한 것으로 실제 파일에는 추가하지 않으셔도 됩니다.)

# If you want to use GNOME/KDE, add the following line.
-A INPUT -p udp --dport 177 -j ACCEPT
# If you have set font server on Xconfig, add the following line.
-A INPUT -p tcp --dport 7100 -j ACCEPT
# If you are to connect via remocon, add the following line(s).
-A INPUT -p tcp --dport telnet -j ACCEPT
-A INPUT -p tcp --dport ssh -j ACCEPT
-A INPUT -p tcp --dport login -j ACCEPT
-A INPUT -p tcp --dport exec -j ACCEPT
-A INPUT -p tcp --dport shell -j ACCEPT

이렇게 하시고 iptables -L -n 명령을 사용하여 위의 내용이 맞게 설정되었는지 확인하십시오.


redhat 8, 9에서 lokkit 을 사용하여 설정한 경우
redhat 8, 9에서는 lokkit 프로그램을 이용하여 방화벽 설정을 할 수 있습니다.

lokkit 을 실행하면 /etc/sysconfig/iptables 파일이 생성됩니다.
그 파일의 앞부분에 다음 행들을 추가하면 됩니다.

-A RH-Lokkit-0-50-INPUT -p tcp -m tcp --dport 22 --syn -j ACCEPT
-A RH-Lokkit-0-50-INPUT -p tcp -m tcp --dport 23 --syn -j ACCEPT
-A RH-Lokkit-0-50-INPUT -p udp -m udp --dport 177 -j ACCEPT
-A RH-Lokkit-0-50-INPUT -p tcp -m tcp --dport 7100 --syn -j ACCEPT

그런 후에 다음 명령을 실행해서 방화벽을 재시작합니다.

# /etc/init.d/iptables restart
2005/07/04 11:52 2005/07/04 11:52
다음과 같이 포트를 열어주면 됩니다.


Inbound(incoming) TCP 6000 (Xmanager)
Outbound(outgoing) UDP 177 (XDMCP 연결 사용시)
Outbound(outgoing) TCP 512, 513, 514, 22, 23 (리모콘 사용시)
2005/07/04 11:52 2005/07/04 11:52
XDMCP를 이용 SUN Solaris에 연결하려고 했을 때 다음과 같은 에러메시지가 나옵니다. "원격호스트에 연결할 수 없습니다. ..."

XDM 연결을 하려면 리모트 호스트의 xdm이 동작하고 있어야 합니다. SUN Solaris의 CDE 환경을 사용하려면 xdm대신에 dtlogin을 사용합니다. 이것을 구동시키는 프로그램은 dtconfig입니다.

CDE환경을 enable하려면:
$ /usr/dt/bin/dtconfig -e [enter]

CDE환경을 disable하려면:
$ /usr/dt/bin/dtconfig -d [enter]
2005/07/04 11:51 2005/07/04 11:51

막강한 부트로더 GRUB

FAQ 2005/07/04 11:51
막강한 부트로더 GRUB

필자 : 이호석 (alee@debian-kr.org)





1. GRUB 소개

부트로더란 간단히 말해서 컴퓨터를 켰을 때 가장 먼저 실행되는 프로그램이다. 부트로더는 OS의 커널을 로드하고 몇몇 커널 파라메터를 커널에 넘겨주는 일을 한다. GNU GRUB은 원래 처음에는 GNU Hurd를 위해 개발되었지만 그 막강한 기능 때문에 리눅스에서도 점차 LILO 대신 GRUB을 사용하는 사람들이 늘고 있다. GRUB은 현재 리눅스를 비롯하여 많은 공개 운영체제와 chain-loading을 사용하는 상용 운영체제를 로드할 수 있다.

GRUB의 가장 큰 특징은 파일시스템과 커널 포맷을 이해한다는 점이다. 따라서 디스크상에서 커널의 물리적인 위치를 알 필요 없이 단지 파일명과 커널이 위치하고 있는 파티션만 알고 있으면 커널을 로드할 수 있다. LILO의 경우 부트로더가 커널의 하드디스크상의 물리적인 위치를 알고 있어야 한다. 따라서 커널을 다시 설치할 때마다 ‘lilo’를 실행해 부트로더를 다시 심어 주어야 하지만, GRUB의 경우 파일명만 알면 되기 때문에 파일명이 바뀌지 않는 한 다시 실행해 줄 필요가 없다.

현재 GRUB은 다음과 같은 기능들을 제공한다.

1. a.out 포맷과 ELF 포맷의 커널을 읽어들일 수 있다.
2. Linux, FreeBSD, NetBSD, OpenBSD등 비-멀티부트 커널을 지원한다.
3. 멀티플 모듈을 로드할 수 있다.
4. 텍스트 형식의 설정 파일을 제공한다.
5. 메뉴 인터페이스를 제공한다.
6. 유연한 커맨드라인 인터페이스를 제공한다.
7. BSD FFS, FAT16, FAT32, Minix, ext2 그리고 ReiserFS 파일시스템을 지원한다.
8. gzip으로 압축된 파일을 다룰 수 있다.
9. BIOS에서 인식되는 모든 장치에 엑세스할 수 있다.



2. GRUB 설치

GRUB은 다음 위치에서 다운받을 수 있다.

ftp://alpha.gnu.org/gnu/grub/

현재 최신 버전은 0.5.96이다. ftp 프로그램을 이용하여 grub-0.5.96.tar.gz 파일을 다운받아 압축을 풀고 컴파일하여 설치한다. 의존하는 라이브러리가 별로 없으니 대부분의 경우 쉽게 컴파일될 것이다.

$ wget ftp://alpha.gnu.org/gnu/grub/grub-0.5.96.tar.gz #한 줄임
$ tar -xvzf grub-0.5.96.tar.gz
$ cd grub-0.5.96
$ ./configure
$ make
# make install

데비안의 경우 이미 패키지로 제공되기 때문에 간단히 그냥 다음과 같이 입력하면 바로 다운받아 설치된다.

# apt-get install grub



3. 부트로더 설치

먼저 “/boot/grub”이라는 디렉토리를 만들고 “/usr/local/share/grub/i386-pc” 디렉토리에서 “stage1”, “stage2” 파일과 자신의 파일시스템에 맞는 “파일시스템_stage1_5” 파일을 복사해온다.
리눅스 커널이 위치하고 있는 파티션이 ext2라면 “e2fs_stage1_5” 파일은 반드시 복사해와야 한다. 여러가지 파일시스템을 사용하고 있다면 모두 다 복사해와도 상관없다. 데비안 패키지로 설치했을 경우에는 “/usr/share/grub/i386-pc” 디렉토리의 파일들을 복사해오면 된다.

# mkdir /boot/grub
# cp /usr/local/share/grub/i386-pc/*/boot/grub/

그리고나서 소스 디렉토리 안에 있는 “docs” 라는 디렉토리에서 “menu.lst” 라는 파일을 “/boot/grub” 디렉토리로 복사한다. 데비안 패키지로 설치했을 경우 “menu.lst” 파일은 “/usr/share/doc/grub” 디렉토리에 있다.

# cp doc/menu.lst /boot/grub

이제 복사해 온 “menu.lst” 파일을 자신의 시스템에 맞게 수정할 차례이다. 그 전에, 먼저 알아 두어야 할 것이 있다.

GRUB에서 사용하는 디스크 이름은 리눅스에서와는 조금 다르다. 예를 들어 리눅스의 “hda1”은 GRUB에서는 “(hd0,0)” 이다. GRUB에서 첫 번째 플로피 디스크 드라이브는 (fd0), 두 번째 플로피 디스크 드라이브는 (fd1)이다. 또, 하드디스크는 순서대로 (hd0), (hd1), (hd2)... 이고, 첫 번째 하드디스크의 첫 번째 파티션은 (hd0,0), 두 번째 파티션은 (hd0,1), 세 번째 파티션은 (hd0,2)... 이런 식으로 이름이 붙여진다.

GRUB은 IDE 하드디스크와 SCSI 하드디스크를 구별하지 않는다. 따라서 SCSI건 IDE건 첫 번째 하드디스크는 무조건 (hd0)이다. 이 때 번호가 “0”번부터 시작한다는 것에 유의해야 한다. 즉, 리눅스의 “hda2”는 GRUB에서는 (hd0,2)가 아니라 (hd0,1)이다. 리눅스에서와 비슷하게 GRUB에서 확장(Extended) 파티션은 4번부터 번호가 매겨진다. 예를 들어, 첫 번째 하드디스크의 첫 번째 확장 파티션(리눅스의 hda5)은 (hd0,4)이다.

또, 파일시스템에 있는 어떤 파일을 나타낼 때에는 “(hd0,0)/boot/vmlinuz”와 같이 파티션 뒤에 곧바로 이어서 파일의 절대 경로를 적어준다. 만약 파티션을 생략하고 그냥 “/boot/vmlinuz”로 적어주면 현재 GRUB의 루트 파티션으로 설정되어 있는 파일시스템 안에 있는 “/boot/vmlinuz” 파일을 가리키게 된다.

자, 이제 “menu.lst” 파일의 내용을 살펴보기로 하자. 쉘 스크립트에서처럼 “#”으로 시작하는 줄은 주석처리된 줄이다.
# Boot automatically after 30 secs.
timeout 30

# By default, boot the first entry.
default 0

# Fallback to the second entry.
fallback 1





위의 내용은 이미 짐작하고 있겠지만, 30초 동안 입력이 없으면 첫 번째 방법, 즉 파일에서 맨 앞 쪽에 기술되어 있는 방법으로 부팅하라는 뜻이다. 맨 아래 줄은 만약 첫 번째 방법으로 부팅하다가 실패했을 경우 두 번째 방법으로 부팅하라는 뜻이다.

아래로 조금 내려가다 보면 다음과 비슷한 내용이 있을 것이다.

# For booting Linux
title GNU/Linux
root (hd1,0)
kernel /vmlinuz root=/dev/hdb1

“title”로 시작하는 줄은 말 그대로 제목이다. 이 곳에 적어 둔 내용이 부팅시에 메뉴에서 나타나게 된다.

root (hd1,0)

리눅스 커널이 위치하고 있는 파티션으로, “root”는 해당 파티션을 현재 GRUB의 루트 디바이스로 지정하는 명령어이다. 루트 디바이스로 지정된 파티션은 GRUB에 의해 마운트되서 해당 파티션에 있는 파일들을 읽어들일 수 있게 된다. 대부분의 경우 리눅스 루트 파티션이 이에 해당할 것이다. 필자의 경우 hda1을 리눅스 루트파티션으로 사용하고 있으므로 (hd0,0)라고 적어주었다.

kernel /vmlinuz root=/dev/hdb1

해당 파티션상의 커널의 위치이다. 예를 들어 커널이 “/boot/vmlinuz-2.4.3” 이라는 파일이라면 “kernel /boot/vmlinuz-2.4.3” 이라고 적어줘야 한다. 또, 필요한 커널 옵션이 있다면 그 뒤에 덧붙여 적어주면 된다. 만약 “/boot” 파티션을 따로 잡아서 사용하고 있다면 약간 주의해야 하는데, 그럴 경우 해당 파티션 상에서의 위치를 지정해 주는 것이므로 커널의 위치는 “/boot/vmlinuz-2.4.3”이 아니라 “/vmlinuz-2.4.3”로 적어줘야 한다.

많은 사람들이 윈도우와 리눅스의 멀티부팅을 원할 것이다. 좀더 아래로 내려가 보면 다음과 같은 내용이 있을 것이다.
# For booting Windows NT or Windows95
title Windows NT / Windows 95 boot menu
rootnoverify (hd0,0)
makeactive
chainloader +1
# For loading DOS if Windows NT is installed
# chainload /bootsect.dos





“title”로 시작하는 줄은 앞에서 설명했듯이 제목을 나타내는 줄이다.

rootnoverify (hd0,0)

“rootnoverify”는 “root”와 비슷하지만 해당 파티션을 마운트하지 않는다. NTFS 파티션처럼 GRUB이 인식할 수 없는 파티션을 루트 디바이스로 지정할 때 사용된다.

makeactive

GRUB의 루트 디바이스를 부팅 가능한 파티션으로 지정한다. “makeactive” 명령어는 첫 번째 하드디스크의 프라이머리(Primary) 파티션에서만 사용할 수 있다.

chainloader +1

“chainloader +1”은 “makeactive” 명령으로 부팅 가능하도록 지정된 파티션의 첫 번째 섹터부터 읽어들이기 시작해 부팅을 시작하도록 하라는 뜻이다. “makeactive” 명령이나 “chainloader +1” 명령의 경우 특별한 일이 없다면 편집할 필요가 없을 것이다. 윈도우로 부팅하는 메뉴를 만들고 싶다면 위에서 단지 “rootnoverify (hd0,0)” 부분을 윈도우가 설치되어 있는 파티션으로 변경해 주며 된다.

마지막으로 “menu.lst” 파일의 맨 아래쪽을 보면 다음과 같은 내용이 있을 것이다.
# For installing GRUB into the hard disk
title Install GRUB into the hard disk
root (hd0,0)
setup (hd0)

# Change the colors.
title Change the colors
color light-green/brown blink-red/blue





GRUB을 하드디스크의 마스터 부트 레코드에 인스톨하기 위한 메뉴와 색깔을 바꾸어 주는 메뉴이다. 여기서는 잠시 후에 “grub-install” 이라는 명령어를 사용하여 인스톨 할 것이므로 위쪽의 내용은 필요하지 않다. 또, 색깔을 바꾸는 메뉴를 만들 경우 처음부터 해당하는 색깔이 적용되는 것이 아니라 메뉴를 선택해야 색깔이 바뀐다. 대부분의 사람들은 이렇게 하는 것 보다는 처음부터 원하는 색깔로 나오도록 하고 싶어할 것이다. 처음부터 원하는 색깔로 나오게 하려면 파일의 앞 부분에 다음과 같이 적어주면 된다.

color [글자색]/[배경색] [선택된글자색]/[선택된배경색]

글자 색과 배경색에 모두 사용 가능한 색깔은 black, blue, green, cyan, red, magenta, brown, light-gray 이고, dark-gray, light-blue, light-green, light-cyan, light-red, light-magenta, yellow, white는 글자 색에만 사용할 수 있다.

앞에서 설명한 부분 이외의 부분은 대부분의 사람들에게는 필요하지 않을 것이다. 그냥 삭제해 버리거나 주석 처리해 버리도록 한다. 이제 파일을 저장하고 편집기를 빠져 나와 “grub-install /dev/hda”를 실행한다. 다음 비슷한 메시지가 나온다면 GRUB이 성공적으로 첫 번째 하드디스크의 마스터 부트 레코드(MBR)에 설치된 것이다.
# grub-install /dev/hda
/usr/sbin/grub-install: -e: command not found
/usr/sbin/grub-install: -e: command not found
/usr/sbin/grub-install: -e: command not found
/usr/sbin/grub-install: -e: command not found
Installation finished. No error reported.
This is the contents of the device map /boot/grub/device.map.
Check if this is correct or not. If any of the lines is incorrect,
fix it and re-run the script `grub-install’.

(fd0) /dev/fd0
(hd0) /dev/hda
(hd1) /dev/hdb
#




자 부트로더의 설치가 끝났다. 이제 시스템을 재부팅 시켜보자.



4. 메뉴 인터페이스

다음과 같은 화면이 나온다면 성공이다.
GRUB version 0.5.96.1 (639K lower / 129984K upper memory)

┌─────────────────────┐
│ Debian GNU/Linux 2.2 │
│ Windows NT 4.0 Server │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
└─────────────────────┘
Use the ↑ and ↓ keys to select which entry is highlighted.
Press enter to boot the selected OS, ‘e’ to edit the commands before booting, or ‘c’ for command-line.
The highlighted entry will be booted automatically in 15 seconds.





자, 이제 화살표 키를 이용해 메뉴를 선택하면 부팅 될 것이다. 아무것도 선택하지 않을 경우 화면 맨 아래의 숫자가 0이 되면 자동으로 지정해둔 운영체제로 부팅이 될 것이다. 또, 메뉴에서 ‘e’를 누르면 직접 그 메뉴를 편집할 수 있다. 어떤 한 가지 항목을 선택하고 그 상태에서 ‘e’를 눌러보자. 화면에 “menu.lst” 파일에 적어두었던 내용이 그대로 나올 것이다. 화살표 키를 이용해 편집하고 싶은 줄로 이동한 후 다시 ‘e’를 누르면 다음과 같이 편집할 수 있는 화면이 나타날 것이다.

grub edit> kernel /boot/vmlinuz-2.4.3 root=/dev/hda1
언제든지 ‘Esc’를 누르면 편집 내용이 취소된다. 원하는대로 편집한 후 엔터키를 누르면 편집한 내용이 적용될 것이다. 또, ‘o’ 키를 이용해 줄을 하나 더 추가하거나 ‘d’를 이용해 선택된 줄 전체를 삭제할 수 있다. 편집이 끝난 후 ‘b’ 키를 누르면 편집한 내용대로 부팅이 된다. 이 기능은 싱글 모드로 부팅할 때처럼 커널 옵션을 추가해야 할 경우 편리하게 사용할 수 있다.



5. 커맨드라인 인터페이스

지금까지 설명한 내용만으로도 GRUB을 사용하여 리눅스로 부팅하는 것에는 아무 문제가 없을 것이다. 그러나 GRUB의 커맨드라인 인터페이스를 이용해 보지 않고는 그 막강함을 느낄 수 없다. 메뉴에서 ‘c’를 누르면 다음과 같이 GRUB의 프롬프트가 나타날 것이다.
GRUB version 0.5.96.1 (640K lower / 3072K upper memory)

[ Minimal BASH-like line editing is supported. For the first word, TAB lists possible command completions. Anywhere else TAB lists the possible completions of a device/filename. ESC at any time exits. ]

grub>





GRUB의 커맨드라인 인터페이스는 bash처럼 ‘Tab’ 키를 이용한 자동완성 기능을 지원하고, 키 바인딩 또한 비슷하다. ‘Tab’ 키를 누르면 다음과 같이 현재 사용가능한 명령어가 나타날 것이다. 또, 메뉴로 돌아가고 싶을 때에는 ‘Esc’ 키를 누르면 된다.

grub>
Possible commands are: blocklist boot cat chainloader cmp color configfile debug displaymem embed find fstest geometry halt help hide impsprobe initrd install ioprobe kernel lock makeactive map module modulenounzip partnew parttype pause read reboot root rootnoverify savedefault serial setkey setup terminal testload unhide uppermem

grub>

또, ‘help’ 명령어를 이용하여 특정 명령어의 사용법을 알아볼 수 있다.
grub> help makeactive
makeactive: makeactive
Set the active partition on the root disk to GRUB’s root device.
This command is limited to _primary_ PC partitions on a hard disk.

grub>





재미있는 명령어가 몇 가지 있는데, 그 중 하나가 ‘cat’ 이다. 다음과 같이 입력해 보자.

grub> root (hd0,0)
Filesystem type is reiserfs, partition type 0x83

grub> cat /etc/shadow

패스워드 파일이 그대로 화면에 출력될 것이다. 즉, ‘root’와 ‘cat’ 명령어를 적당히 이용하면 어떤 파일이라도 내용을 볼 수 있다. 그러면 보안에 문제가 있지 않을까? LILO처럼 GRUB에서도 패스워드를 걸어 둘 수 있다. “menu.lst” 파일의 적당한 위치에 다음과 같은 줄을 추가하고 ‘grub-install’을 다시 실행하면 부팅시 ‘p’를 누르고 패스워드를 입력해야 메뉴를 편집하거나 커맨드라인 인터페이스를 이용할 수 있다.

password [패스워드]

또, 명령어들을 적당히 이용하면 하드디스크 상의 어떤 커널이라도 이용해서 부팅할 수 있다. 앞에서 “menu.lst” 파일에 적어주었던 내용들도 사실은 GRUB의 명령어들이다. 커널을 다시 설치한 후 부팅에 실패했을 때, lilo의 경우 대책을 세워놓지 않았다면 복구하기 위해 머리를 좀 굴려야 하지만 GRUB의 경우 예전 커널이 하드디스크 어딘가에 들어있기만 하다면 다음과 같이 입력해서 그 커널로 간단히 부팅할 수 있다.

grub> root (hd0,0)
Filesystem type is reiserfs, partition type 0x83

grub> kernel /boot/vmlinuz-2.4.3
[Linux-bzImage, setup=0xa00, size=0xb20b7]

grub> boot
Uncompressing Linux... Ok, booting the kernel.
...

다른 여러가지 명령어들의 용도와 사용 방법은 ‘help’를 이용하여 알아볼 수 있으므로 여기까지만 설명하고 넘어가도록 하겠다.



6. 응급 부팅디스크 만들기

만약 GRUB이 인스톨된 플로피 디스크가 한 장 있다면 새 커널을 컴파일하거나 파일시스템을 변경할 때 훨씬 마음이 든든할 것이다. 이제 GRUB 응급부팅디스크를 한 장 만들어 보기로 하자.

우선 비어있는 디스켓 한 장을 준비해 ext2 파일시스템으로 포맷한다.

# mke2fs /dev/fd0

그리고 나서 마운트하고 “boot”라는 디렉토리를 만들어 그곳에 커널을 복사한다.

# mount -t ext2 /dev/fd0 /floppy
# mkdir /floppy/boot
# cp /boot/vmlinuz-2.4.3 /floppy/vmlinuz

마지막으로 “boot” 라는 디렉토리 안에 “grub” 디렉토리를 만들고 그 안에 앞에서 “/boot/grub” 디렉토리에 복사했던 파일들을 그대로 복사한다.

# mkdir /floppy/boot/grub
# cp /boot/grub/* /floppy/boot/grub

이제 플로피디스크로 복사한 “menu.lst” 파일을 좀더 쓰기 편하도록 편집해야 한다. 필자의 경우 다음과 같이 편집했다.

# GRUB 응급부팅디스크

color black/cyan white/blue
timeout 30
default 1
fallback 0

# 플로피에 있는 커널로 리눅스 부팅하기

title Boot Debian GNU/Linux from Floppy Disk
root (hd0,0)
kernel (fd0)/boot/vmlinuz-2.4.2

# 하드에 있는 커널로 리눅스 부팅하기

title Boot Debian GNU/Linux from Hard Disk
root (hd0,0)
kernel (hd0,0)/boot/vmlinuz-2.4.2

# 하드의 첫번째 파티션으로 부팅하기

title Boot from the First Partition of Hard Disk
rootnoverify (hd0,0)
makeactive
chainloader +1

# 하드의 두번째 파티션으로 부팅하기

title Boot from the Second Partition of Hard Disk
rootnoverify (hd0,1)
makeactive
chainloader +1
# 하드의 세번째 파티션으로 부팅하기

title Boot from the Third Partition of Hard Disk
rootnoverify (hd0,2)
makeactive
chainloader +1

# 하드의 네번째 파티션으로 부팅하기

title Boot from the Fourth Partition of Hard Disk
rootnoverify (hd0,3)
makeactive
chainloader +1

편집이 끝난 후 파일을 저장한 후 쉘 프롬프트에서 “grub”을 입력하면 GRUB의 커맨드라인 인터페이스에서와 비슷한 프롬프트가 나타날 것이다. 다음과 같이 입력해 플로피디스크에 GRUB을 설치한다.

# grub
grub> root (fd0)
grub> setup (fd0)
grub> quit
#

이제 만들어진 디스켓을 이용해 부팅 해 본다. 제대로 부팅이 된다면 이제 디스켓을 안전한 곳에 보관하면 된다.



7. 맺음말

막강한 부트로더인 GRUB의 사용 방법을 알아보았다. 모든 것이 그렇듯이 GRUB에도 장점만 있는 것은 아니다. 먼저, 윈도우 등 “chainloader”를 사용해야 하는 운영체제가 첫 번째 하드디스크 외의 다른 하드디스크, 예를 들어 “hdb”에 설치되어 있을 경우 GRUB을 사용해서는 이 운영체제로 부팅할 수 없다. 다음으로, 플로피 디스크나 CD-ROM 부팅을 지원하지 않는다. 마지막으로 다른 부트로더에 비해 덩치가 상당히 크다. 특히 GRUB 플로피디스크를 이용하여 부팅할 때에는 stage2가 로드되는 동안 GRUB 자체를 부팅하는 듯한 느낌이 들 정도다.

그러나 몇 가지 단점에도 불구하고 GRUB의 막강한 기능 때문에 필자는 이제 LILO를 버리고 GRUB만을 사용한다. 여러분들도 막강한 부트로더 GRUB을 한번 사용해 볼 것을 추천한다.
2005/07/04 11:51 2005/07/04 11:51
[JSP 포워딩]
<%
response.sendRedirect(" http://linuxnew.com" );
%>


[자바스크립트 포워딩]



※중요한 점은 이 두가지의 차이점은...
jsp는 뒤로가기를 하면 전 페이지로 가지만,
자바스크립트로 하게 되면 뒷페이지가 안나오고 리다이렉션된 곳으로 가게 됩니다.


[아파치 지시자 중 Redirect를 이용한 포워딩방법 ]

Redirect (이전 URL) (새로운 URL)

Redirect 지시자는 지금은 서버에 존재하지 않은 문서(URL)에 대해서 다른 URL로 포워딩 합니다. 서버입장에서 Redirect 지시자를 이용하여 쉽게 포워딩할때는 Redirect 지시자로 하면 좋습니다.

예제 1 : Redirect /new http://new.linuxnew.com
예제 2 : Redirect /linux/new.html http://new.linuxnew.com
예제 3 : Redirect /~new http://www.linuxnew.com/new.html

결과 1 : http://www.linuxnew.com/new → http://new.linuxnew.com
결과 2 : http://www.linuxnew.com/linux/new.html → http://new.linuxnew.com
결과 3 : http://www.linuxnew.com/~new → ttp://www.linuxnew.com/new.html

※ 가상 호스트일 경우의 Redirect 활용시에
(VirtualHost ...)
...
Redirect /index.html http://www.linuxnew.com/
..
(/VirtualHost)

틀린 경우(X) :
Redirect / http://www.linuxnew.com/
Redirect /~pbi12 http://pbi12.linuxnew.com/

맞는 경우(O) : / 같이 적은건 마지막으로 넣는다.
Redirect /~pbi12 http://pbi12.linuxnew.com/
Redirect / http://www.linuxnew.com/

즉 좁은 부분(/~pbi12)을 먼저 설정하고 나머지 부분(/)을 뒤쪽에 기입해야합니다.

(이전 URL) 마지막 설정에 "/"이 들어간다면 (새로운 URL)의 마지막에도 "/"를 꼭 넣어두어야 합니다. 그 반대로 "/"이 들어가지 않으면 (새로운 URL)에도 "/"을 넣지 않도록 해주세요^^;


[php 포워딩]

php로는 Header("Location: http://linuxnew.com" );


[메타 태그 포워딩]




[메타 처럼 시간 개념이 들어간 자바스크립트 포워딩]




부록 - [포트 포워딩 -_-]

iptables -t nat -A PREROUTING -p tcp --dport (원하는포트번호) -j DNAT \
--to 192.168.x.x(원하는 내부아이피):port (포트번호)
2005/07/04 11:50 2005/07/04 11:50
도스용 텍스트 파일을 유닉스 시스템에서
vi 로 읽으면.. 파일 포맷의 차이로..
^M같은 문자가 각 라인의 끝에 보이게 되지요..

아래에 tip으로 올려주신 분이 있는데..
편집명령으로 삭제하는 방법을 가르쳐 드릴께요..
vi 편집 명령은 ed 에디터의 명령 형식을 따르는데..
자세한건 찾아 보시고..^^;;

명령은 어떻게 하느냐면요..

:1,$ s/^M//

이렇게 하면 되는데.. 무슨 의미냐면..
"1,$" 는 1번째 줄부터 끝줄까지('$'표시가 끝줄을 의미하죠)
"s/^M//" 는 '^M'문자를 search해서 null로 바꾸란 의미지요..
여기서 '^M'문자를 vi에서 어떻게 입력하는가가 중요한데..
('^M'은 ^ + M 이 아니고..하나의 특수 기호를 나타내는 문자랍니다.)
Control-V를 누르고 M을 누르면 '^M'문자가 입력 된답니다..

이 명령은 지정한 줄마다 "^M"하나씩 삭제 하게 되는데..
한줄에 여러개의 '^M' 문자가 있을 경우에는..

:1,$ s/^M//g

처럼 해주시면 됩니다.. 여기서 g는 global..
전부 바꾸란 말이 되는 겁니다..

이런 식으로 하면..'^M'이나 다른 '^H'라든가 기타 특수문자들도
vi에디터에서 고칠수 있겠죠?..^^
2005/07/04 11:49 2005/07/04 11:49
내가 /usr/X11R6/lib/X11/fonts/misc 디렉토리에서 작업을 하다가...
/etc/httpd/conf로 디렉토리를 바꿨는데...
다시 /usr/X11R6/lib/X11/fonts/misc로 가야하는 사태가 생긴다면..

당신은 cd /usr/X11R6/lib/X11/fonts/misc 라고 하겠습니까?

이제부터는 그러지 마십시오..
cd -
하면 이전 디렉토리로 갑니다.
2005/07/04 11:48 2005/07/04 11:48

solaris tips

Solaris 2005/07/04 11:48
solaris에서 64bit 모드인지 32bit 모드인지
알고자 한다면, isainfo -vk 를 쳐보세요..
그럼 결과가 나온답니다.
2005/07/04 11:48 2005/07/04 11:48
우선 아래의 방법대로 하려면 root권한이 있어야 하며
없다면 root에서 httpd.conf부분만 이렇게 해달라고 요청하셔야 합니다.
--------------------------------------------
1. httpd.conf를 수정한다.
먼저 /usr/local/apache/conf/httpd.conf에서
AllowOverride None으로 되어 있으면 AllowOverride All로 바꾸어준다. 그리고
# AccessFileName .htaccess줄이 주석줄로 되어 있으면 주석을 풀어준다.

2. .htaccess파일을 만든다.
인증을 받고 싶은 디렉토리로 가서 vi로 아래와 같은 파일을 만들어 준다.
AuthType Basic
AuthName qpiss
AuthUserFile /home/piss/public_html/qorentks/.htpasswd
require valid-user
이 내용을 .htaccess로 저장하고 퍼미션을 777로 준다.

3. .htpasswd파일을 만든다.
암호파일(.htpasswd)은 암호화되어서 저장이 되므로 그냥 텍스트로 입력해서는 저장이 안된다. 그래서 /usr/local/apache/bin에 있는 htpasswd라는 프로그램을 이용하여야 한다.
그래서 만드는 방법은 아래와 같다.
--- # /usr/local/apache/bin/htpasswd -c /home/piss/public_html/
qorentks/.htpasswd piss(한줄에 쭉 달아서 친다.)
의 형식으로 치면 암호를 넣으라고 나오는데 여기에 암호를 적어 넣으면 된다.
(이때 -c 옵션은 처음 넣을때만 하면되며 그 다음 부터 추가할때는 필요가 없다. 그 다음에도 -c 옵션을 추가하면 이전 것(.htpasswd)은 지워버리고 새로 작성한다.)
그러면 .htpasswd의 파일이 아래와 같이 생성되어진다.
piss:NoWPewwtesgrTR

4. 아파치를 새로 기동시킨다.
# killall httpd
# /usr/local/apache/bin/apachectl start
2005/07/04 11:47 2005/07/04 11:47
바로 콘솔상에서의 단축키입니다. 한번사용해 보니 편하더군요.

# 콘솔 (xterm 상이 아닌)

Shift-ScrollLock
메모리 정보 보기

Ctrl-Scrolllock
프로세스 보기

alt-(f1-f12)
콘솔 옮겨다니기

alt-(오른쪽/왼쪽 방향키)
이전/다음 콘솔로...


# sysrq
이 단축키를 사용하려면 커널에 이 기능을 넣고 컴파일 해야합니다.

sysrq-(0-9)
콘솔 로그 레벨 정하기
sysrq-b
비상 리부팅
sysrq-e
init를 제외한 모든 프로세스 죽이기(SIGTERM)
sysrq-i
init를 제외한 모든 프로세스 죽이기(SIGKILL)
sysrq-k
현재 콘솔상의 모든 프로그램 죽이기
sysrq-l
init를 포함한 모든 프로세스 죽이기(시스템 정지)
sysrq-m
shift-scrolllock 과 동일 (메모리 정보 보기)
sysrq-o
apm poweroff
sysrq-p
레지스터 보기
sysrq-r
키보드를 XLATE로 설정?
sysrq-s
디스크 싱크
sysrq-t
ctrl-scrolllock 과 동일 (프로세스 보기)
sysrq-u
모든 파일 시스템을 언마운트하고 읽기 전용으로

# bash

TAB
tab-completion(tab 자동 채워주기?)
예를 들어 blahblah라는 명령어가 있을때 bla까지만 입력하고
tab을 치면 나머지는 알아서 채워준다. 물론 디렉토리명도...
alt-@
호스트 명 자동 완성
/etc/hosts 에 명시되어 있는 경우
ctrl-d
logout
ctrl-l
화면 지우기
ctrl-r
히스토리 찾기
alt-t
두단어 위치 바꾸기
fc
마지막 명령어 편집해서 사용하기
ctrl-u, ctrl-w
커서의 왼쪽에 있는 문자들만 삭제
ctrl-k
현재 커서위치 오른쪽 문자 삭제

# 일반적인 사용되는 키조합
다음의 키조합들은 여러 군데서 작동합니다.

shift-insert
버퍼에 복사된것 붙이기 (마우스로 긁은것)
ctrl-a
줄의 처음으로
ctrl-e
줄의 마지막으로
ctrl-l
현재 커서위치 오른쪽 문자 삭제
ctrl-c
한 단어 지우기
ctrl-c
실행중인 프로그램 죽이기
ctrl-z
실행중인 프로그램 정지하기, 일반적으로 % 를 입력하면 계속하기.

출처 : kltp.kldp.org
2005/07/04 11:47 2005/07/04 11:47
만약 서버를 제공하는 ISP에서 보안상의 이유로
ICMP 패킷을 막은 경우 ping 명령어가 동작하지
않는 경우가 있습니다.

이런 경우 namp을 사용하여 서비스 여부를 확인할
수 있습니다. 아래는 yahoo.com을 nmap를 이용하여
스캔한 결과 입니다.

[root@op isseo]# nmap -P0 -p 80 www.yahoo.com

Starting nmap V. 3.00 ( www.insecure.org/nmap/ )
Interesting ports on w1.scd.yahoo.com (66.218.71.80):
Port State Service
80/tcp open http

Nmap run completed -- 1 IP address (1 host up) scanned in 0 seconds

위의 결과에서 보면 80포트 http service가 오픈
되어 있는 것을 알 수 있습니다.
2005/07/04 11:45 2005/07/04 11:45