다음 이전 차례

10. 네트웍 데몬의 설치

10.1 SMTP 설정하기

group과 user의 생성

아래를 실행하여 Sendmail이 필요로 하는 group들을 만든다:

groupadd -g 1 bin
groupadd -g 2 kmem
groupadd -g 3 mail
useradd -u 1 -g bin -d /bin -s /bin/sh bin
 

디렉토리 생성

Sendmail은 밖으로 나가는 메일을 /var/spool/mqueue 디렉토리에 넣어둔다. 들어오는 메일은 Sendmail에 의해 Procmail로 돌려지므로 우리는 /var/mail 이라는 디렉토리도 필요하다. 이 디렉토리들을 생성하고 알맞은 권한을 설정한다:

mkdir /var/spool
mkdir /var/mail
cd /var/spool; ln -s ../mail mail
chmod 700 /var/spool/mqueue
chmod 775 /var/mail
chgrp mail /var/mail
chmod 1777 /tmp
 

Sendmail의 설치

cd src
./Build; ./Build install
 

Sendmail의 설정

Sendmail을 설정하는 것은 앞의 것들처럼 쉽지는 않다. Sendmail을 설정하는 동안 여러분이 고려해야 할 사항이 많으며 내가 그 모든 것을 설명할 수는 없다. 이것이 우리가 지금은 기본적이고 표준적인 설정을 하는 이유이다. Sendmail을 여러분의 기호에 맞도록 고치고 싶다면 할 수 있지만 이 문서는 그 작업에 적합하지는 않다. 여러분이 특정한 기능을 사용하려 한다면 이미 존재하는 /etc/sendmail.cf (혹은 /etc/mail/sendmail.cf) 파일을 사용할 수 있다.

OSTYPE(LFS)
FEATURE(nouucp)
define(`LOCAL_MAILER_PATH', /usr/bin/procmail)
MAILER(local)
MAILER(smtp)
 

Procmail의 설치

make; make install; make install-suid
 

/etc/init.d/sendmail 부트스크립트의 작성

#!/bin/sh
# Begin /etc/init.d/sendmail
 
check_status()
{
  if [ $? = 0 ]
  then
    echo "OK"
  else
    echo "FAILED"
  fi
}
 
case "$1" in
  start)
    echo -n "Starting Sendmail..."
    start-stop-daemon -S -q -o -x /usr/sbin/sendmail -- -bd
    check_status
    ;;
 
  stop)
    echo -n "Stopping Sendmail..."
    start-stop-daemon -K -q -o -p /var/run/sendmail.pid
    check_status
    ;;
 
  reload)
    echo -n "Reloading Sendmail configuration file..."
    start-stop-daemon -K -q -s 1 -p /var/run/sendmail.pid
    check_status
    ;;
 
  restart)
    echo -n "Stopping Sendmail..."
    start-stop-daemon -K -q -o -p /var/run/sendmail.pid
    check_status
 
    sleep 1
 
    echo -n "Starting Sendmail..."
    start-stop-daemon -S -q -o -x /usr/sbin/sendmail -- -bd
    check_status
    ;;
 
  *)
    echo "Usage: $0 {start|stop|reload|restart}"
    exit 1
    ;;
 
esac
 
# End /etc/init.d/sendmail
 

권한과 심볼릭 링크들을 설정한다.

cd /etc/init.d/rc2.d; ln -s ../init.d/sendmail S20sendmail
cd ../rc0.d; ln -s ../init.d/sendmail K20sendmail
cd ../rc6.d; ln -s ../init.d/sendmail K20sendmail
 

10.2 FTP의 설정

user와 group의 생성

groupadd -g 65534 nogroup
groupadd -g 4 ftp
 

useradd -u 65534 -g nogroup -d /home nobody
useradd -u 4 -g ftp -s /bin/sh -m ftp
 

Proftpd의 설치

./configure
make; make install
 

/etc/init.d/proftpd 부트스크립트의 작성

#!/bin/sh
# Begin /etc/init.d/proftpd
 
check_status()
{
  if [ $? = 0 ]
  then
    echo "OK"
  else
    echo "FAILED"
  fi
}
 
case "$1" in
  start)
    echo -n "Starting Pro FTP daemon..."
    start-stop-daemon -S -q -o -x /usr/sbin/proftpd
    check_status
    ;;
 
  stop)
    echo -n "Stopping Pro FTP daemon..."
    start-stop-daemon -K -q -o -x /usr/sbin/proftpd
    check_status
    ;;
 
  restart)
    echo -n "Stopping Pro FTP daemon..."
    start-stop-daemon -K -q -o -x /usr/sbin/proftpd
    check_status
 
    sleep 1
 
    echo -n "Starting Pro FTP daemon..."
    start-stop-daemon -S -q -o -x /usr/sbin/proftpd
    check_status
    ;;
 
  *)
    echo "Usage: $0 {start|stop|restart}"
    ;;
 
esac
 
# End /etc/init.d/proftpd
 

권한과 심볼릭 링크의 설정

cd /etc/rc2.d; ln -s ../init.d/proftpd S40proftpd
cd ../rc0.d; ln -s ../init.d/proftpd K40proftpd
cd ../rc6.d; ln -s ../init.d/proftpd K40proftpd
 

10.3 HTTP의 설정

Apache의 설치

./configure
make; make install
 

Apache의 설정

설정할 것이 많지는 않다. 우리가 해야 할 것은 단지 /usr/apache/man 경로를 /usr/share/misc/man.conf에 추가하는 것 뿐이다.

/etc/init.d/apache 부트스크립트의 생성

#!/bin/sh
# Begin /etc/init.d/apache
 
case "$1" in
  start)
    echo -n "Starting Apache HTTP daemon..."
    /usr/apache/bin/apachectl start
    ;;
 
  stop)
    echo -n "Stopping Apache HTTP daemon..."
    /usr/apache/bin/apachectl stop
    ;;
 
  restart)
    echo -n "Restarting Apache HTTP daemon..."
    /usr/apache/bin/apachectl restart
    ;;
 
  force-restart)
    echo -n "Stopping Apache HTTP daemon..."
    /usr/apache/bin/apachectl stop
 
    sleep 1
 
    echo -n "Starting Apache HTTP daemon..."
    /usr/apache/bin/apachectl start
    ;;
 
  *)
    echo "Usage: $0 {start|stop|restart|force-restart}"
    ;;
 
esac
 
# End /etc/init.d/apache
 

권한과 심볼릭 링크의 설정

cd /etc/rc2.d; ln -s ../init.d/apache S50apache
cd ../rc0.d; ln -s ../init.d/apache K50apache
cd ../rc6.d; ln -s ../init.d/apache K50apache
 

10.4 Telnet의 설정

telnet 데몬과 클라이언트의 설치

./configure
make; make install
 

/etc/inetd.conf 설정파일을 만든다.

# Begin /etc/inetd.conf
 
telnet stream tcp nowait root /usr/sbin/in.telnetd
 
# End /etc/inetd.conf
 

/etc/init.d/inetd 부트스크립트의 생성

#!/bin/sh
# Begin /etc/init.d/inetd
 
check_status()
{
  if [ $? = 0 ]
  then
    echo "OK"
  else
    echo "FAILED"
  fi
}
 
case "$1" in
  start)
    echo -n "Starting Internet Server daemon..."
    start-stop-daemon -S -q -o -x /usr/sbin/inetd
    check_status
    ;;
 
  stop)
    echo -n "Stopping Internet Server daemon..."
    start-stop-daemon -K -q -o -p /var/run/inetd.pid
    check_status
    ;;
 
  reload)
    echo -n "Reloading Internet Server configuration file..."
    start-stop-daemon -K -q -s 1 -p /var/run/inetd.pid
    check_status
    ;;
 
  restart)
    echo -n "Stopping Internet Server daemon..."
    start-stop-daemon -K -q -o -p /var/run/inetd.pid
    check_status
 
    sleep 1
 
    echo -n "Starting Internet Server daemon..."
    start-stop-daemon -S -q -o -x /usr/sbin/inetd
    check_status
    ;;
 
  *)
    echo "Usage: $0 {start|stop|reload|restart}"
    ;;
 
esac
 
# End /etc/init.d/inetd
 

권한과 심볼릭 링크의 설정

cd /etc/rc2.d; ln -s ../init.d/inetd S30inetd
cd ../rc0.d; ln -s ../init.d/inetd K30inetd
cd ../rc6.d; ln -s ../init.d/inetd K30 inetd
 

10.5 PPP의 설정

커널 설정하기

여러분이 인터넷에 연결되기 전에 커널이 ppp를 지원해야 한다. 이는 커널 안에 ppp 지원을 직접 넣어서 컴파일하거나 ppp 드라이버를 필요할 때 로드할 수 있는 모듈로 만듦으로써 가능하다. 어떤 방법은 선택하든 필요하다면 지금 커널을 재 컴파일하여 작업을 하라. 이미 여러분의 LFS 커널이 ppp를 지원한다면 커널을 재 설정할 필욘 없다.

group의 생성

PPP의 설치

./configure
make; make install
 

/etc/resolv.conf 생성

# Begin /etc/resolv.conf
 
nameserver <IP address of your ISP's primary DNS server>
nameserver <IP address of your ISP's secundary DNS server>
 
# End /etc/resolv.conf
 

/etc/ppp/peers/provider 파일 만들기

# Begin /etc/ppp/peers/provider
 
noauth
connect "/usr/sbin/chat -v -f /etc/chatscripts/provider"
/dev/ttyS1
115200
defaultroute
noipdefault
 
# End /etc/ppp/peers/provider
 

/etc/chatscripts/provider 만들기

# Begin /etc/chatscripts/provider
 
ABORT BUSY
ABORT "NO CARRIER"
ABORT VOICE
ABORT "NO DIALTONE"
ABORT "NO ANSWER"
"" ATZ
OK ATDT <ISP's phonenumber>
TIMEOUT 35
CONNECT ''
TIMEOUT 10
ogin: \q<username>
TIMEOUT 10
assword: \q<mysecretpassword>
 
# End /etc/chatscripts/provider
 

암호 인증에서 주의할 사항

예제 스크립트들에서 보듯이 (이것들은 내가 X를 쓰지 않을 때 실제로 사용하는 스크립트들이다) 위에서 나는 내 ISP로 pap이나 chap을 통한 인증 대신 chatscripts를 이용하여 접속하였다. 내 ISP가 pap를 지원하긴 하지만 나는 이 장/단점을 모두 가진 약간 다른 방식으로 하기로 결정하였다. 내 경우에 장점이 단점보다 많다. 이 방식으로 나는 내 접속 과정에 대한 더 많은 제어권을 가질 수 있고 언제 어떤 일이 일어나는지를 더 자세히 알 수 있었다.

예를 들어 내가 접속할 때 대부분 나는 tail -f /var/log/syslog 를 실행하는 윈도우를 열어 놓아서 사용자 명이나 암호가 보내지는 시기 같은 것들을 직접 관찰할 수 있다.


다음 이전 차례