사이트 내 전체검색
[linux] [웹호스팅] 아파치-메일-ProFTPd
로빈아빠
https://cmd.kr/server/332 URL이 복사되었습니다.

본문

[웹호스팅] 아파치-메일-ProFTPd
 
-아파치1.3.9
-센드메일 8.3.x
-qpopper 3.0
-ProFTPd1.2pre6


를 중심으로 작성되었습니다. 용량이 꽤 되네요.....

=========================================

[웹호스팅]RedHat 6.0기반 가상웹-메일-FTP운영하기

산이<san2@urban.suwon.ac.kr>
1999-08-18 : 1차 (최초작성)
1999-09-16 : 2차
---------------------------------------------------------------
이 글의 내용은 1대의 리눅스박스에 같은 IP, 서로 다른 IP, 같은 도메인, 서로 다른 여러개의 도메인에 대해서 가상웹-메일-FTP 운영을 다루는 기초적이고 예시적인 방법으로 서술한 내용입니다.
그리고 실제로 내부IP를 이용하여 테스트에 성공한 예입니다.
---------------------------------------------------------------

이 문서는 HTML 문서로도 지원합니다.
http://linuxer.suwon.ac.kr/linux_docs/virtual_services/

주)
개념적이고 원론적인 내용은 모두 빠져있습니다. 웹상에 많은 문서가 존재하므로 이런 문서를 찾아 먼저 습득하고 본 문서를 읽어나가면 쉽게 이해하리라 생각됩니다. 또한 이 문서는 좋은 문서가 아닙니다. 다만 하나의 예시 일 뿐입니다.
그러나 예시를 통해 자신의 상황에 맞게 수정하면 누구나 쉽게 가상웹-메일-FTP를 운영하리라 생각했기 때문에, 그리고 본인의 실력이 형편없는 관계로 원론적이고 개념적인 내용을 설명하자면 어쩔 수 없이 도용(?)해야만 하기 때문에 개념적이고 원론적인 정의는 모두 뺐습니다.

따라서 이하 서술된 내용은 리눅스 전문서적이나 기존에 존재하는 문서를 그 대로 배끼는 그런 우매한 짓은 하지 않을 것이며 이런 문서의 지식을 바탕으로 본인이 직접 테스트하고 느낀 점을 토대로 서술해 나갈 것이며,  설사 본인의 지식이 모자라 기존의 문서의 힘을 빌릴경우에는  정확한 출처를 밝히고 기술 해 나갈것입니다.

이하 관례적으로 "경어" 생략합니다.
---------------------------------------------------------------

목차

1. 들어가기 전에
  1-1. 상세한 세부분야 내용(참고자료)-링크
  1-2. 나의 테스트 환경 및 목표

2. DNS(도메인 네임서비스) 설정
  2-1. Bind 설치하기
  2-2. 나의 목표에 맞게 DNS 설정
    2-2-1. /etc/named.boot
    2-2-2. /etc/named.conf
    2-2-3. /var/named/named.ca
    2-2-4. /var/named/named.local
    2-2-5. /var/named/zone-10.168.192
    2-2-6. /var/named/zone-linux.ac.kr
    2-2-7. /var/named/zone-linuxer.com
    2-2-8. /var/named/zone-linuxer.net
    2-2-9. /var/named/zone-sonamu.co.kr

3. 가상 웹서버 (아파치 1.3.9 경우)
  3-1. 아파치설치(생략)
  3-2. 아파치 설정파일(httpd.conf)

4. 가상 메일서버
  4-1. sendmail 설치하기
  4-2. qpopper 설치하기
  4-3. /etc/sendmail.cf
  4-4. /etc/sendmail.cw
  4-5. /etc/sendmail.cm
  4-6. /etc/mail/access
  4-7. /etc/mail/virtusertable

5. 가상 FTP서버 (ProFTPd)
  5-1. ProFTPd 설치하기
  5-2. /etc/proftpd.conf

6. 마치며



---------------------------------------------------------------

1. 들어가기 전에


1-1. 상세한 세부분야 내용(참고자료)링크

- Net-3 HOWTO(KLDP)
- Network Adminstrator Guide(KLDP)
- 김병찬(적수)님의 네임서버강좌(KLDP)
- 김승영님의 DNS(도메인네임 및 네임서버구축)(KLDP)
- DNS HOWTO(KLDP)
- 리눅스에서 IP Aliasing 세팅하기 mini HOWTO(KDLP)
- Sendmail 이야기(KLDP)
- Virtual Services HOWTO(KDDP)
- 가상웹 mini HOWTO(KLDP)
- 아파치 1.3 메뉴얼 Virtualhost(영문)
- Proftpd Configuration(영문)
- Proftpd Reference (영문)
- POP3 daemon 설치 및 활용가이드 -네번째 판(박재호님 홈페이지)
- 김정균님의 홈페이지


1-2. 나의 테스트환경 및 목표

[서버환경]
- OS: 알짜리눅스6.0(커널2.2.12)
- 3Com 900B-TPO Ethernet Card 1개
- Intel eepro 10 ISA Ethernet Card 1개
- apache 1.3.9-1kr
- Sendmail 8.9.3-10kr
- qpopper 3.0
- bind 8.2-6
- Proftpd 1.2.0Pre6(99.09.11일자)
- 사용한 IP: 192.168.10.3~5 (내부IP)

[클라이언트환경]
- OS: 윈98
- 3Com 905B-TPO Ethernet Card 1개
- 사용한 IP: 192.168.10.11 (내부IP)

[나의 목표]
- 서버 : 리눅스박스1대
- 사용할 IP : 192.168.10.3 192.168.10.4 192.168.105(3개)
- 앞으로 계속 도메인이 추가시에는 192.168.10.5 하나만 사용할 예정이다.

- linux.ac.kr 도메인은 현 리눅스박스의 주 도메인이고 game(계정 : game) 호스트만 제외하고 모두 root가 관리한다. game 호스트 관리자인 game은 웹 문의에 대한 메일을  gamedori@hanmail.net 로 사용하고자 한다.

- linuxer.com 도메인을 사용하는 자는고객이며 2개의 웹호스트 (www. stock)를 운영하기를 원하고 'stock' 웹호스트 대한 웹문의는 별도로 stock@linuxer.com 으로 받고 싶어하며 Anonymous FTP도 운영하고자 한다. 계정은 com이며 1명이 관리하고자 한다.

- linuxer.net 도메인을 사용하는 자는 고객이며 역시 2개의 웹호스트 (www. meeting)를 운영할 계획이고 meeting 웹호스트의 이용자가 많아 'www' 웹호스트의 Admin이 관리할 수 없어 다른 사람이 관리하기를 원한다. 따라서 'www' 웹 호스트에 대해서는 Admin(계정 : net)과 'meeting' 웹호스트에 대해서는 다른 사람(account : meet)이 관리하고자 한다. 'meeting' 웹호스트에 대한 웹문의는 meeting@linuxer.net 로 사용하므로 결국
  2명이 관리하는 셈이다.

- sonamu.co.kr 도메인을 사용하는 자는 고객이며 오직 하나의 웹호스트 ('www')만 운영하고자 한다. 또한 메일은 webmaster@sonamu.co.kr 이 아닌 admin@sonamu.co.kr로 사용하고자 한다.  또한 이 고객이 몸담고 있고 회사에서는 4개의 e-mail을 더 사용하기를 원한다. 즉 이 회사의 사장은 namu@sonamu.co.kr, 나머지 3명의 사원은 각각 'kim', 'park', 'lee' 라는 ID로 메일을 이용하고자 한다. 따라서 웹 Admin과 메일사용자인 4명을 합하면 5명의 사용자가 된다. 그리고 사장과 3명의 사원은 http://www.sonamu.co.kr/~namu 와 같은 홈페이지를 각자 가지고 싶어 한다.

- 주)
  필자는 웹호스팅업체에 몸담고 있지 않기 때문에 많은 도메인을 실제로 관리 해본 경험은 없다.
  다만 고민끝에 2대의 PC(리눅스, 윈98)를 다른 PC들과 함께 HUB로 연결하여 내부IP(C클래스)를 사용하였으며 각각의 여러개의 도메인에 대해서 실제로 내부IP 1개로 사용하여  네임서버 및 www, mail, ftp, telnet 테스트하는데 성공 했을 뿐이다.

- 세부사항(*이 글을 이해하는데 필수)
======================+==============+================================ 호스트+도메인 IP 계정 (Admin E-mail) ======================+==============+================================ (주도메인)linux.ac.kr 192.168.10.3 root (webmaster@linux.ac.kr) ns.linux.ac.kr 192.168.10.3 root (webmaster@linux.ac.kr) www.linux.ac.kr 192.168.10.3 root (webmaster@linux.ac.kr) ftp.linux.ac.kr 192.168.10.3 root (ftp@linux.ac.kr) study.linux.ac.kr 192.168.10.4 root (study@linuxer.ac.kr) study-app.linux.ac.kr 192.168.10.4 root (study-app@linuxer.ac.kr) study-net.linun.ac.kr 192.168.10.4 root (study-net@linuxer.ac.kr) game.linux.ac.kr 192.168.10.5 game (gamedori@hanmail.net) ======================+==============+================================ (고객) linuxer.com 192.168.10.5 com (webmaster@linuxer.com) ns.linuxer.com 192.168.10.5 com (webmaster@linuxer.com) www.linuxer.com 192.168.10.5 com (webmaster@linuxer.com) ftp.linuxer.com 192.168.10.5 com (ftp@linuxer.com) stock.linuxer.com 192.168.10.5 com (stock@linuxer.com) ======================+==============+================================ (고객) linuxer.net 192.168.10.5 net (webmaster@linuxer.net) ns.linuxer.net 192.168.10.5 net (webmaster@linuxer.net) www.linuxer.com 192.168.10.5 net (webmaster@linuxer.net) ftp.linuxer.com 192.168.10.5 net (ftp@linuxer.net) meeting.linuxer.com 192.168.10.5 meet (meeting@linuxer.net) ======================+==============+================================ (고객)www.sonamu.co.kr 192.168.10.5 sonamu (admin@sonamu.co.kr) (일반계정) namu (namu@sonamu.co.kr) (일반계정) kim (kim@sonamu.co.kr) (일반계정) park (pakr@sonamu.co.kr) (일반계정) lee (lee@sonamu.co.kr) ======================+==============+================================

먼저 계정을  발급해 주자.
linux.ac.kr 도메인은 시스템 관리자인 root 가 관리하므로 별도로 계정을 만들지 않고 일반유저인 'san2' 가 관리한다는 가정이다.

# adduser san2 # passwd san2 password ******* # adduser com # passwd com password ******* # adduser net # passwd net password ******* # adduser meet # passwd meet password ******* # adduser sonamu # passwd sonamu password ******* # adduser namu # passwd namu password ******* # adduser kim # passwd kim password ******* # adduser park # passwd park password ******* # adduser lee # passwd lee password *******

2. DNS(도메인 네임서비스) 설정

가상웹호스팅을 원하고자 하는 이는 무엇보다 도메인네임서버를 잘 설정 해야한다. 네임서버를 어떻게 잘 설정하느냐 못하느냐에 따라서 웹호스팅 가능유무가 결정된다.
또한 IP가 부족하여 1개의 IP로 여러개의 도메인을 한대의 리눅스박스에 운영하는 것도 역시 만찬가지이다.
다음에 보여주는 네임서버 설정의 예는 어디까지나 필자의 예이다. 즉 얼마든지 같은 결과로 다른 예가 있기 마련이므로 네임서버 설정에 대한 문서를 꼭 읽어보기 바란다. 여기에서는 첫머리에 말했듯이 개념이나 정의를 설명하지는 않는다. 다만 위의 목표에 부합되기 위해서 네임서버를 설정할 뿐이다.(필자은 네임서버 전문가가 아님)


2-1. Bind 설치하기

네임서버를 구축(또는 설정)하려면 Bind 설치는 필수적이다.
Bind와  caching-nameserver는 꼭 설치해야 한다.
우선 자신의 리눅스박스에 설치(rpm)되어 있는지 확인하자.

[san2@www san2]$ rpm -qa | grep bind bind-8.2-6 bind-utils-8.2-6 [san2@www san2]$ [san2@www san2]$ rpm -qa | grep name caching-nameserver-6.0-2 [san2@www san2]$

필자의 리눅스박스에는 bind-8.2 와 caching-nameserver-6.0이 설치되어 있다. 설치되어 있지 않다면 다음과 같이 CD-ROM이나 FTP싸이트에서 다운로드하여 설치하기 바란다.

예: CD-ROM으로 설치하기

[san2@www san2]$ su Password: ******** [root@www san2]# mount /mnt/cdrom [root@www san2]# cd /mnt/cdrom/RedHat/RPMS [root@www RPMS]# rpm -Uvh bind* bind ############################## bind-devel ############################## bind-utils ############################## [root@www RPMS]# rpm -Uvh caching-nameserver* caching-nameserver ############################## [root@www RPMS]#

이제 네임서버를 구축하기 위한 밑바탕은 되어있다.  다음단계에는 직접 '나의 목표'에 부합되게 네임서버를 구축(이하 '설정')해 보자.


2-2. 나의 목표에 맞게 DNS 설정

위의 2-1과정을 무사히 끝냈다면

[root@www /etc]# ls -l named* -rw-r--r-- 1 root root 407 Sep 13 08:24 named.boot -rw-r--r-- 1 root root 1508 Sep 13 08:26 named.conf [root@www /etc]# cd /var/named [root@www named]# ls -l total 8 -rw-r--r-- 1 root root 2769 Mar 22 04:49 named.ca -rw-r--r-- 1 root root 422 Mar 22 04:49 named.local [root@www named]#

위의 파일들이 존재할 것이다.
이제 본격적으로 네임서버를 1-2에서 말한 목표대로 설정해 보자.

참고로 필자의 리눅스박스에는 현재 다음과 같이 IP-Aliasing 되어 있다.

[san2@www san2]$ /sbin/ifconfig eth0 Link encap:Ethernet HWaddr 00:10:4B:18:17:77 inet addr:192.168.10.3 Bcast:192.168.10.255 Mask:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:1297308 errors:6 dropped:0 overruns:0 frame:7 TX packets:9037 errors:0 dropped:0 overruns:0 carrier:0 collisions:404 txqueuelen:100 Interrupt:9 Base address:0xe800 eth0:0 Link encap:Ethernet HWaddr 00:10:4B:18:17:77 inet addr:192.168.10.4 Bcast:192.168.10.255 Mask:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 Interrupt:9 Base address:0xe800 eth0:1 Link encap:Ethernet HWaddr 00:10:4B:18:17:77 inet addr:192.168.10.5 Bcast:192.168.10.255 Mask:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 Interrupt:9 Base address:0xe800 eth1 Link encap:Ethernet HWaddr 00:A0:C9:0C:89:A5 inet addr:210.123.59.66 Bcast:210.123.59.255 Mask:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:1121139 errors:0 dropped:0 overruns:0 frame:9 TX packets:35404 errors:1 dropped:0 overruns:0 carrier:2 collisions:732 txqueuelen:100 Interrupt:3 Base address:0x210 eth1:0 Link encap:Ethernet HWaddr 00:A0:C9:0C:89:A5 inet addr:210.123.59.72 Bcast:210.123.59.255 Mask:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 Interrupt:3 Base address:0x210 lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 UP LOOPBACK RUNNING MTU:3924 Metric:1 RX packets:1294 errors:0 dropped:0 overruns:0 frame:0 TX packets:1294 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 [san2@www san2]$ [san2@www san2]$ cat /etc/sysconfig/network NETWORKING=yes FORWARD_IPV4=no HOSTNAME=www.linux.ac.kr DOMAINNAME=linux.ac.kr GATEWAY=210.123.59.1 #<----실제 존재하는 GW (본 내용과 상관없음) GATEWAYDEV=eth1 #<----실제 인터넷을 사용하기 위해서 2번째 #이더넷 (본 내용과 상관없음) [san2@www san2]$ cat /etc/sysconfig/network-scripts/ifcfg-eth0 DEVICE=eth0 IPADDR=192.168.10.3 NETMASK=255.255.255.0 NETWORK=192.168.10.0 BROADCAST=192.168.10.255 ONBOOT=yes BOOTPROTO=none [san2@www san2]$ cat /etc/sysconfig/network-scripts/ifcfg-eth0:0 DEVICE=eth0:0 USERCTL=no ONBOOT=yes BOOTPROTO=none BROADCAST=192.168.10.255 NETWORK=192.168.10.0 NETMASK=255.255.255.0 IPADDR=192.168.10.4 [san2@www san2]$ cat /etc/sysconfig/network-scripts/ifcfg-eth0:1 DEVICE=eth0:1 USERCTL=no ONBOOT=yes BOOTPROTO=none BROADCAST=192.168.10.255 NETWORK=192.168.10.0 NETMASK=255.255.255.0 IPADDR=192.168.10.5 [san2@www san2]$

필자의 bind 버전은 8.x대이다. 따라서 named.boot파일은 손댈필요는 없지만 학습의 목적상 named.boot 파일도 포함한다.
또한 2차 네임서버 설정은 생략한다.


2-2-1. /etc/named.boot (bind 4.x)

----------/etc/named.boot --------------------------------
; ; a caching only nameserver config ; ; 내부 IP사용의 예 directory /var/named cache . named.ca primary 0.0.127.in-addr.arpa named.local primary 10.168.192.in-addr.arpa zone-10.168.192 primary linux.ac.kr zone-linux.ac.kr primary linuxer.com zone-linuxer.com primary linuxer.net zone-linuxer.net primary sonamu.co.kr zone-sonamu.co.kr
---------end ---------------------------------------------


2-2-2. /etc/named.conf (bind 8.x)

----------/etc/named.conf ---------------------------------
// generated by named-bootconf.pl options { directory "/var/named"; /* * If there is a firewall between you and nameservers you want * to talk to, you might need to uncomment the query-source * directive below. Previous versions of BIND always asked * questions using port 53, but BIND 8.1 uses an unprivileged * port by default. */ // query-source address * port 53; }; // // a caching only nameserver config // zone "." { type hint; file "named.ca"; }; zone "0.0.127.in-addr.arpa" { type master; file "named.local"; }; zone "10.168.192.in-addr.arpa" { type master; file "zone-10.168.192"; }; zone "linux.ac.kr" { type master; file "zone-linux.ac.kr"; }; zone "linuxer.com" { type master; file "zone-linuxer.com"; }; zone "linuxer.net" { type master; file "zone-linuxer.net"; }; zone "sonamu.co.kr" { type master; file "zone-sonamu.co.kr"; };
---------end ----------------------------------------------


2-2-3. /var/named/named.ca

--------/var/named/named.ca-------------------------------
생략 (★ 편집할 필요없음)
---------end ----------------------------------------------


2-2-4. /var/named/named.local

★ 편집할 필요없음

------/var/named/named.local ------------------------------
@ IN SOA localhost. root.localhost. ( 1997022700 ; Serial 28800 ; Refresh 14400 ; Retry 3600000 ; Expire 86400 ) ; Minimum IN NS localhost. 1 IN PTR localhost.
---------end ----------------------------------------------


2-2-5. /var/named/zone-10.168.192

------/var/named/zone-10.168.192 --------------------------
@ IN SOA ns.linux.ac.kr. admin.linux.ac.kr. ( 1997022700 ; Serial 28800 ; Refresh 14400 ; Retry 3600000 ; Expire 86400 ) ; Minimum IN NS ns.linux.ac.kr. 3 IN PTR linux.ac.kr. 4 IN PTR study.linux.ac.kr. 5 IN PTR game.linux.ac.kr. 5 IN PTR linuxer.com. 5 IN PTR linuxer.net. 5 IN PTR sonamu.co.kr. ;<---끝에 점(Dot) 필수
---------end ----------------------------------------------


2-2-6. /var/named/zone-linux.ac.kr

-------/var/named/zone-linux.ac.kr --------------------------
@ IN SOA ns.linux.ac.kr. admin.linux.ac.kr. ( 1997022700 ; Serial 28800 ; Refresh 14400 ; Retry 3600000 ; Expire 86400 ) ; Minimum IN NS ns.linux.ac.kr. IN A 192.168.10.3 IN HINFO "x86 Pentium" "Alzza Linux 6.0" IN MX linux.ac.kr. localhost IN A 127.0.0.1 study IN A 192.168.10.4 game IN A 192.168.10.5 ns IN CNAME @ www IN CNAME @ ftp IN CNAME @ study-app IN CNAME study study-net IN CNAME study
---------end ----------------------------------------------


2-2-7. /var/named/zone-linuxer.com

----- /var/named/zone-linuxer.com -------------------------
@ IN SOA ns.linuxer.com. admin.linuxer.com. ( 1997022700 ; Serial 28800 ; Refresh 14400 ; Retry 3600000 ; Expire 86400 ) ; Minimum IN NS ns.linuxer.com. IN A 192.168.10.5 IN HINFO "x86 Pentium" "Alzza Linux 6.0" IN MX linuxer.com. ;ns IN A 192.168.10.5 ;www IN A 192.168.10.5 ;stock IN A 192.168.10.5 ;ftp IN A 192.168.10.5 ns IN CNAME @ www IN CNAME @ ftp IN CNAME @ stock IN CNAME @
---------end -----------------------------------------


2-2-8. /var/named/zone-linuxer.net

------/var/named/zone-linuxer.net ---------------------------
@ IN SOA ns.linuxer.net. admin.linuxer.net. ( 1997022700 ; Serial 28800 ; Refresh 14400 ; Retry 3600000 ; Expire 86400 ) ; Minimum IN NS ns.linuxer.net. IN A 192.168.10.5 IN HINFO "x86 Pentium" "Alzza Linux 6.0" IN MX linuxer.net. ns IN CNAME @ www IN CNAME @ ftp IN CNAME @ meeting IN CNAME @
---------end -------------------------------------------


2-2-9. /var/named/zone-sonamu.co.kr

------/var/named/zone-sonamu.co.kr ------------------------
@ IN SOA ns.sonamu.co.kr. admin.sonamu.co.kr. ( 1997022700 ; Serial 28800 ; Refresh 14400 ; Retry 3600000 ; Expire 86400 ) ; Minimum IN NS ns.sonamu.co.kr. IN A 192.168.10.5 IN HINFO "x86 Pentium" "Alzza Linux 6.0" IN MX sonamu.co.kr. www IN CNAME @
---------end -----------------------------------------------


이상으로 1개의 IP에 4개의 도메인을 설정되었다.

설정(편집)이 끝났으면 네임서버를 재가동한다.

[root@www san2]# /etc/rc.d/init.d/named restart



3. 가상 웹서버 (아파치 1.3.9 경우)

아파치 서버는 가상웹서버를 지원한다. 보통 가상 웹호스트는 크게

- IP-based Virtual Hosts
- Name-based Virtual Hosts

로 볼 수 있다.
본 내용에서는 둘다 포함하고 있다.


3-1. 아파치설치(생략)

웹상이나 자신이 사용하는 배포본의 FTP에서 최신의 버전을 받아와서 RPM으로 설치하든지 소스를 직접 컴파일하여 설치하든지 이건 여러분의 선택이다.

아파치 설치는 RPM으로 설치했다는 가정하에 /etc/httpd/conf/httpd.conf 파일이 아파치의 설정파일이다.


3-2. 아파치 설정파일(httpd.conf)

드디어 가상 웹 호스팅을 위한 작업이다. RPM으로 설치했을 경우는 /etc/httpd/conf/httpd.conf 파일을 편집기로 열어 다음과 같이 여러분의 환경에 맞추어 편집한다.

* 설정파일에 가상웹서버에 대한 많은 정보가 들어 가므로 가급적 필요없는 내용은 전부 주석처리해 준다.

------/etc/httpd/conf/httpd.conf -----------------------------
# 중략 ServerType standalone ServerRoot "/etc/httpd" # 중략 #ResourceConfig conf/srm.conf #AccessConfig conf/access.conf # 중략 BindAddress * # 중략 ServerAdmin webmaster@linux.ac.kr ServerName www.linux.ac.kr # IP는 192.168.10.3 이다. DocumentRoot "/home/httpd/html" # 중략 UserDir Public_html # 중략 HostnameLookups Off # off 로 해 놓은게 조금 빠르다. # 중략 ErrorLog logs/error_log # 중략 CustomLog logs/access_log common # 중략 ServerSignature Email # 선택은 여러분의 자유이다. # 중략 ##########[가상 웹 호스트 설정 부분]##################### NameVirtualHost 192.168.10.4 <VirtualHost 192.168.10.4> ServerName study.linux.ac.kr ServerAdmin study@linux.ac.kr DocumentRoot /home/linux.ac.kr/study ErrorLog logs/study.linux.ac.kr-error_log CustomLog logs/study.linux.ac.kr-access_log common </VirtualHost> <VirtualHost 192.168.10.4> ServerName study-app.linux.ac.kr ServerAdmin study-app@linux.ac.kr DocumentRoot /home/linux.ac.kr/study-app ErrorLog logs/study-app.linux.ac.kr-error_log CustomLog logs/study-app.linux.ac.kr-access_log common </VirtualHost> <VirtualHost 192.168.10.4> ServerName study-net.linux.ac.kr ServerAdmin study-net@linux.ac.kr DocumentRoot /home/linux.ac.kr/study-net ErrorLog logs/study-net.linux.ac.kr-error_log CustomLog logs/study-net.linux.ac.kr-access_log common </VirtualHost> # NameVirtualHost IP는 어느 곳에 위치하여도 결과는 똑같다. # 즉 여기에서 부연 설명하자면 # 192.168.105 를 사용하는 호스트에 대해서는 game.linux.ac.kr # 호스트가 그 선취권을 가지고 있다. 예를 들어 네임서버에 # ns.linuxer.com이 등록되어 있지만 가상호스트 설정부분에서 # ns.linuxer.com 을 정의해 주지 않으면 ns.linuxer.com으로 접속하면 # game.linux.ac.kr 의 Document를 보여준다. # 꼭 네임서버에 정의한 모든 호스트에 대해서 가상호스트에 정의해 # 주어야 어색함이 없다. # 이때 사용하는 것이 ServerAlias 지시자이다. 아래의 내용을 좀더 # 살펴보자. NameVirtualHost 192.168.10.5 <VirtualHost 192.168.10.5> ServerName game.linux.ac.kr # 192.168.10.5 의 IP를 사용하는 모든 호스트의 기본이 되는 호스트이다. ServerAdmin game@linux.ac.kr DocumentRoot /home/linux.ac.kr/game ErrorLog logs/game.linux.ac.kr-error_log CustomLog logs/game.linux.ac.kr-access_log common </VirtualHost> <VirtualHost 192.168.10.5> ServerName stock.linuxer.com ServerAdmin stock@linuxer.com # admin은 com 계정으로 메일을 받는다. DocumentRoot /home/com/wwwhome_stock ScriptAlias /cgi-bin/ "/home/comwwwhome_stock/cig-bin/" # 특히 심볼릭링크하여 홈을 운영한다면 ScriptAlias 정의는 꼭 해주어야 # 한다. ErrorLog logs/stock.linuxer.com-error_log CustomLog logs/stock.linuxer.com-access_log common </VirtualHost> <VirtualHost 192.168.10.5> ServerName www.linuxer.com ServerAdmin webmaster@linuxer.com # admin은 com 계정으로 메일을 받는다. ServerAlias *.linuxer.com www.linuxer.com # 중요 ################################## # ServerAlias 에 대해서 부연설명하면 # ServerName linuxer.com # ServerAlias *.linuxer.com linuxer.com # 으로 해도 결과는 위와 똑같다. # 왼쪽에는 Alias 할 가짜이름이고 오른쪽에는 ServerName 으로 설정한 # 호스트를 적어준다. # 예를 들어 # ServerName linuer.com # ServerAlias www.linuxer.com linuxer.com # 으로만 정의해 두면 문제가 있다. # 바로 위에 stcok.linuxer.com 이 먼저 정의 되어 있기 # 때문에 stock.linuxer.com의 접속결과는 올바르게 보여주지만 # 네임서버에 CNAME으로 설정되어 있는 # ftp.linuxer.com ns.linuxer.com 에 대해서 접속하면 모두 # game.linux.ac.kr 의 문서를 보여준다. # 따라서 stock호스트를 제외하고 네임서버에 정의되어 있는 모든 # 호스트(ns. ftp)에 대해서 www.linuxer.com 으로 보여줄려면 위와 # 같이 ServerAlias를 해 주어야 한다. # 또한 *(All)때신 다음과 같이 2줄의 ServerAlias 로 정의해 주어도 된다. # 단 이같은 경우 자원을 많이 차지하므로 별로 좋지 않은 방법이다. # ServerAlias ftp.linuxer.com www.linuxer.com # ServerAlias ns.linuxer.com www.linuxer.com DocumentRoot /home/linuxercom/wwwhome # DocumentRoot ~linuxercom/wwwhome # 위와 같이 ~(틸트)로 경로를 지정하면 웹서버는 찾질 못한다. # 꼭 절대경로로 정의. ErrorLog logs/www.linuxer.com-error_log CustomLog logs/www.linuxer.com-access_log common </VirtualHost> <VirtualHost 192.168.10.5> ServerName meeting.linuxer.net ServerAdmin meeting@linuxer.net # admin은 meet 계정으로 메일을 받는다. DocumentRoot /home/meet/wwwhome ErrorLog logs/meeting.linuxer.net-error_log CustomLog logs/meeting.linuxer.net-access_log common </VirtualHost> <VirtualHost 192.168.10.5> ServerName linuxer.net ServerAdmin webmaster@linuxer.net ServerAlias *.linuxer.net linuxer.net # admin은 net 계정으로 메일을 받는다. DocumentRoot /home/net/wwwhome ErrorLog logs/www.linuxer.net-error_log CustomLog logs/www.linuxer.net-access_log common </VirtualHost> <VirtualHost 192.168.10.5> ServerName www.sonamu.co.kr ServerAdmin admin@sonamu.co.kr # admin은 sonamu 계정으로 메일을 받는다. # 여기에서는 ServerAlias를 할 필요가 없다 왜냐하면 네임서버에 오직 # www.sonamu.co.kr 만 정의해 놓았기 때문이다. # 위의 zone-sonamu.co.kr 의 파일을 확인해 보시라. DocumentRoot /home/sonamu/wwwhome UserDir Pubic_home # 다른 도메인과 다르게 UserDir 을 정의한다. # 주 도메인(linux.ac.kr)의 UserDir 이 Public_html 이므로 # 주 도메인과 다른 도메인과 혼합되지 않게 위해서는 완전히 다른 # 디렉토리를 위와 같이 정의해 준다. # 가상호스트에 대한 UserDir을 지정해 주지 않으면 # 주 도메인(linux.ac.kr)에 대한 유저인 "Public_html" 로 인식하려 # 하기 때문에 Document 를 보여줄 수 없다. # 또한 Public_html 이란 디렉토리가 있다면 www.linux.ac.kr/~namu # 와 www.sonam.co.kr/~namu 는 같은 문서를 보여준다. # 때문에 고객이 개인 홈페이지를 갖고 싶어 할 경우에는 # UserDir을 다르게 정의 해 주어야 한다. ErrorLog logs/www.sonamu.co.kr-error_log CustomLog logs/www.sonamu.co.kr-access_log common </VirtualHost> #NameVirtualHost 192.168.10.5 # 위와 같이 맨 나중에 NameVirtualHost를 정의해 주어도 된다. # 앞서 얘기 했지만 192.168.10.5 를 사용하는 모든 호스트에 대해서는 # 맨앞에 가상호스트로 지정한 호스트가 그 선취점을 가지고 있다. # 여기에서는 game.linux.ac.kr 의 호스트가 이에 해당된다.
---------end ---------------------------------------------

이로써 가상웹서버 설정이 모두 끝났다.

이제 남은 것은 DocumentRoot 가 될 디렉토리를 설정하는 것만
남아 있다.

# mkdir /home/linux.ac.kr # mkdir /home/linux.ac.kr/study # mkdir /home/linux.ac.kr/study-app # mkdir /home/linux.ac.kr/study-net # mkdir /home/linux.ac.kr/game # chmod 705 -R /home/linuxa.c.kr # su com $ mkdir ~com/wwwhome $ chmod -R 705 ~com $ su net password ******* $ mkdir ~net/wwwhome $ chmod -R 705 ~net $ su meet password ******* $ mkdir ~meet/wwwhome $ chmod -R 705 ~meet $ su sonamu password ******* $ mkdir ~sonamu/wwwhome $ chmod -R 705 ~sonamu $ su namu password ******* $ mkdir ~net/Public_home $ chmod -R 705 ~namu $ su kim password ******* $ mkdir ~kim/Public_home $ chmod -R 705 ~kim $ su park password ******* $ mkdir ~park/Public_home $ chmod -R 705 ~park $ su lee password ******* $ mkdir ~lee/Public_home $ chmod -R 705 ~lee $

4. 가상 메일서버

가상 메일 서버비스는 아파치 설정파일과 같이 그리 복잡하지 않다. 단, 네임서버만 잘 설정하고 access 파일과 Virtualtable 파일과 잘 편집해 주면 무리가 없다. 그리고 POP3데몬도 함께 설치해 주어야 한다.


4-1. sendmail 설치하기

먼저 sendmail이 설치되어 있는지 확인해 보자.

[san2@www san2]$ rpm -qa |grep sendmail sendmail-8.9.3-10kr [san2@www san2]$

필자의 시스템에는 버전이 8.9.3 인 RPM으로 설치되어 있다. 설치되어 있지 않다면 CD-ROM이나 해당 배포본의 FTP싸이트에서 다운로드하여 설치하자.

예: CD-ROM으로 설치하는 경우

[san2@www san2]$ su Password: ******** [root@www san2]# mount /mnt/cdrom [root@www san2]# cd /mnt/cdrom/RedHat/RPMS [root@www RPMS]# rpm -Uvh sendmail* sendmail ################################# [root@www RPMS]# [root@www RPMS]# /etc/rc.d/init.d/sendmail start [root@www RPMS]#


4-2. qpopper 설치하기

메일을 보내기만 하면 안되겠죠?? 클라이언트에서 메일을 받을 수 있어야 한다. 즉 클라이언트에서 받을 수 있게 하기 위해서는 POP3같은 데몬을 서버에 설치해 주어야 한다.

필자는 직접 qpopper 3.0 소스를 받아 컴파일하여 설치하였다.
박재호님 홈페이지( http://www.kies.co.kr/~jhpark/Sendmail/popper.html ) 에 자세한 정보가 있으니 꼭 방문하도록 한다.
여기에서는 모든 개념적인 설명은 제외하고 오직 설치에만 언급한다.

일단 qpopper 3.0을 다운로드하자.

ftp://ftp.qualcomm.com/eudora/servers/unix/popper/

에 접속하면 2.53 버전과 3.0b17, 3.0b18 버전이 있다.
필자는 qpopper3.0b18.tar.Z (2,432KB)을 다운로드 하였고,
/usr/local/src 에 그 소스를 컴파일하고
/usr/local/qpopper 라는 디렉토리에 설치할 것이다.

# cp qpopper3.0b18.tar.Z /usr/local/src/ # cd /usr/local/src # ls qpopper3.0b18.tar.Z # uncompress qpopper3.0b18.tar.Z # tar xvf qpopper3.0b18.tar # cd qpopper3.0 # ./configure --enable-specialauth --enable-bulletins=/var/spool/bulls --enable-servermode # make # cp popper/popper /usr/local/lib/ #

/etc/services 파일을 다음과 같이 편집한다.

-----------------------------------------------------------
#pop-2 109/tcp postoffice # POP version 2 #pop-2 109/udp #pop-3 110/tcp # POP version 3 #pop-3 110/udp pop3 110/tcp # popper
-----------------------------------------------------------


/etc/inetd.conf 파일도 다음과 같이 편집한다.

-----------------------------------------------------------
#pop-2 stream tcp nowait root /usr/sbin/tcpd ipop2d #pop-3 stream tcp nowait root /usr/sbin/tcpd ipop3d pop3 stream tcp nowait root /usr/local/lib/popper popper -s
-----------------------------------------------------------

슈퍼데몬을 재 실행한다.

# /etc/rc.d/init.d/inet restart

이제 여러분의 리눅스 박스는 클라이언트에서 메일을 받을 준비가 되어 있다.
다음은 sendmail 설정파일의 예이다. 꼭 이해하고 넘어가야 한다.


4-3. /etc/sendmail.cf

--------------------------------------------------------------
# anything else is bogus R$* $#error $@ 5.7.1 $: "550 Relaying denied" #<------[주의] # 중략 Cwlocalhost # file containing names of hosts for which we receive email Fw/etc/sendmail.cw
--------------------------------------------------------------
부연설명하자면 [주의]부분을 주석으로 처리하면 spam 메일 문제가 있다.
주석으로 처리되어 있다면 어쩌면 여러분의 리눅스박스는 Spamer의 본거지가 될 수도 있다는 것이다.
주석으로 처리되어 있다면 주석을 위와 같이 제거하고 access파일을 아래와 같이 편집해 준다.
그리고
Fw/etc/sendmail.cw
와 같이 주석처리가 되어 있지 않아야 한다.


4-4. /etc/sendmail.cw

--------------------------------------------------------------
# sendmail.cw - include all aliases for your machine here. # 네임서버에 등록된 모든 도메인을 이 파일에 다음과 같이 적어준다. linux.ac.kr linuxer.net linuxer.com sonamu.co.kr
--------------------------------------------------------------

4-5. /etc/sendmail.cm

특별하게 편집할 필요은 없다. 그냥 넘어간다.


4-6. /etc/mail/access

-------------------------------------------------------------
# 예제: # cyberspammer.com REJECT # sendmail.org OK # 128.32 RELAY # # 주의 사항!!! # # 설정 파일을 작성할 때 sendmail.org 와 OK, 128.32 와 RELAY 사이는 # 스페이스가 아니라 꼭!!! <탭>키를 사용하여 띄워야 합니다. localhost.localdomain RELAY localhost RELAY linux.ac.kr OK linuxer.net OK linuxer.com OK sonamu.co.kr OK 192.168 RELAY # access 파일을 고친 이후에는 # # makemap hash /etc/mail/access < /etc/mail/access # # 명령으로 갱신해 주어야 합니다.
----------------------------------------------------------


4-7. /etc/mail/virtusertable

매우 중요한 설정파일이다. 이 파일을 어떻게 잘 편집하느냐에 따라서 웹호스팅의 성공여부가 달려 있다고 해도 좋다. 주의 깊게 살펴보자.

필자가 왜 이렇게 설정했는가에 대해서는 맨위의 '나의 목표'를 다시한번 읽어보기 바란다.

------------------------------------------------------------
# 이 파일을 보면 김정균님이 쓰신 예제를 보면 쉽게 이해 할 수 있다. webmaster@linux.ac.kr san2 ftp@linux.ac.kr san2 study@linux.ac.kr san2 study-app@linux.ac.kr san2 study-net@linux.ac.kr san2 game@linux.ac.kr gamedori@hanmail.net @linuxer.com com webmaster@linuxer.net net ftp@linuxer.net net meeting@linuxer.net meet admin@sonamu.co.kr sonamu
----------------------------------------------------------

부연설명하자면

도메인 linux.ac.kr(메일서버) 에 대해서 game@linux.ac.kr 로 오는 메일은 gamedori@hanmail.net 으로 메핑하고 나머지 webmaster@linux.ac.kr ftp@linux.ac.kr study@linux.ac.kr study-app@linux.ac.kr study-net@linux.ac.kr 로 오는 메일은 이 서버 관리자인 root의 일반 유저인 'san2' 계정으로 보낸다.

@linux.ac.kr              san2

로 설정해 버린면 linux.ac.kr 도메인(메일서버)을 사용하여 오는 메일은 모두 'san2'가 받게 되어 버린다. 다른 일반 유저까지도 포함하기 때문에 하나하나씩 지정해 주어야 한다.

도메인 linuxer.com(메일서버) 에 대해서 webmaster@linuxer.com ftp@linuxer.com stock@linuxer.com 으로 오 는 메일은 모두 com 유저가 받아 볼 수 있다.

이것을 이해 할 수 있다면 나머지 linuxer.net 과 sonamu 메일서버에 대해 서는 쉽게 이해 하리라 생각된다.

파일 편집이 끝났으면 다음과 같은 명령을 꼭 실행해 주어야 한다.

# makemap hash /etc/mail/virtusertable < /etc/mail/virtusertable

이로써 가상메일서버 설정이 모두 끝났다.



5. 가상 FTP서버 (ProFTPd)

가상 FTP는 FTP데몬만 잘 설치해 주면 크게 문제가 없다. 여기에서는 ProFTPd 데몬을 설치와 각 도메인에 대한 Anonymous FTP를 설정해 보자.

5-1. ProFTPd 설치하기

CD-ROM이나 각 배포본의 FTP에서 RPM으로 다운로드하든지 http://www.proftpd.org/ 에서 소스로 받든지 간에 여러분의 자유이다. 필자는 가상FTP를 테스트할 쯤에는 1.2.0pre6 의 버전의 소스를 다운로드 하여 설치하였다.

ftp://linux.sarang.net/ 에 접속하면 RPM으로 다운로드하여 설치할 수 있다.

소스를 컴파일하여 설치할 경우

소스를 컴파일할 디렉토리는 /usr/local/src 이고 설치할 디렉토리는 /usr/local/proftpd 이다.

# cp proftpd-1.2.0pre6.tar.gz /usr/local/src/ # cd /usr/local/src # ls proftpd-1.2.0pre6.tar.gz # tar zxvf proftpd-1.2.0pre6.tar.gz # cd proftpd-1.2.0pre6 # ./configure --prefix=/usr/local/proftpd --sysconfdir=/etc --localstatedir=/var/run --enable-autoshadow --datadir=/home/ftp # make # make install # mkdir /home/ftp

RPM으로 설치하는 경우

# rpm -Uvh proftpd-1.2.0pre6-1.i386.rpm #


소스를 컴파일하여 설치하든지 RPM으로 설치하여 설치하든지 /etc/inetd.conf 파일을 다음과 같이 주석을 추가해 주어야 한다. 즉 웹 호스팅 성격에 맞게 Proftpd를 standalone 으로 데몬을 가동하기 위해서이다.

-----------/etc/inetd.conf ---------------------------------
# 중략 #ftp stream tcp nowait root /usr/sbin/tcpd in.ftpd -l -a #ftp stream tcp nowait root /usr/sbin/tcpd in.ftpd # 중략
----------------------------------------------------------

그리고 슈퍼데몬을 재가동시킨다.

# /etc/rc.d/init.d/inet restart


5-2. /etc/proftpd.conf

이제 마지막 단계인 ProFTPd 설정파일을 편집해 보자.

---------/etc/proftpd.conf ---------------------------------
ServerName "ProFTPD ALZZA Default Installation" ServerType standalone # standalone 으로 설정 ServerAdmin ftp@linux.ac.kr # sendmail virtualtable 을 보라. DefaultServer on AuthPAMAuthoritative on Port 21 MaxInstances 30 User nobody Group nobody <Directory /*> AllowOverwrite on </Directory> ##Global 설정 VirtualHost 까지 영향을 주므로 자원 낭비가 덜하다. ## <Global> Umask 022 # 각 VirtualHost 마다 따로 정의해도된다. DisplayLogin .welcome.msg # 원래는 hidden파일이 아닌 welcome.msg이다. DisplayFirstChdir .message #User ftp # Global로 넣지 않은게 좋다. #Group ftp # Global로 넣지 않은게 좋다. #MaxClients 10 # Global로 넣지 않는다. #MaxClientsPerHost 1 # Global로 넣지 않는다 UserAlias anonymous ftp RequireValidShell off # Anonymous 접속허용을 위해서는 off로 꼭 설정. ShowSymlinks on </Global> ########Global end ################################### <Anonymous ~ftp> User ftp # 모든 Anonymous 에 꼭 넣어주어야 한다. Group ftp # 모든 Anonymous 에 꼭 넣어주어야 한다. #UserAlias anonymous ftp # Global로 설정되어 있으므로 넣을 필요없다. MaxClients 10 "죄송합니다. 최대 인원은 %m명 입니다." MaxClientsPerHost 1 "호스트당 1회만 접속가능합니다." <Limit WRITE> DenyAll </Limit> # 읽기/쓰기/디렉토리만들기를 허용하기 위해서는 다음 주석제거. #<Directory incoming> #<Limit WRITE> #AllowALL #</Limit> #</Directory> </Anonymous> ###### 가상 FTP 호스트설정 부분 ########################## <VirtualHost ftp.linuxer.com> ServerName "ftp.linuxer.com" ServerAdmin ftp@linuxer.com Umask 002 MaxClients 10 "죄송합니다. 최대 인원은 %m명 입니다." MaxClientsPerHost 1 "호스트당 1회만 접속가능합니다." <Anonymous /home/com/vir-ftp> User ftp Group com # Umask 002 와 관련이 있다. <Limit WRITE> DenyAll </Limit> <Directory incoming> <Limit WRITE> Order Allow,Deny # 컴파(,)다음에 칸을 빈칸을 띄지 않는다. Allow from all Deny from 192.168.15.,haker.com # C클래스 192.168.15.* 와 haker.com 은 쓰기를 금한다. </Limit> </Directory> ### Umask 에 대해서 생각해 보자 ++++++imcoming 디렉토리####### # umask 는 새로 생성된 디렉토리나 파일에 대해서만 퍼미션을 기본적 # 으로 적용시킨다. # 즉 Global 에서 umask 022 로 설정되어 있으므로 Anonymous 가 # 접속하여 새로 생성시킬 수 있는 # 디렉토리에 대해서 755의 퍼미션, 그리고 파일에 대해서는 644의 퍼미 # 션을 준다. # 잠깐 디렉토리의 소유자에 관해서도 생각해보자. # Anonymous가 새로생성된 디렉토리가 755 이므로 이 디렉토리의 소유자 # 는 root 나 다른 user가 아니고 "ftp" 소유자가 된다. # 즉 UserAlias Anonymous ftp 이므로 모든 Anonymous 에 대해서 # 다른 Anonymous가 생성시킨 디렉토리나 파일을 지우거나 바꿀 수 있다. # 한가지 더.....Anonymous가 아닌 일반 유저로 들어왔을 경우를 생각해보자. # imcoming 디렉토리의 퍼미션이 777 로 되어 있더라도 Aonymous 가 생성 # 된 디렉토리나 파일은 지우거나 바꿀수 없다.(755이므로) 단, incoming 디렉 # 토리 하에서는 퍼미션이 777이므로 생성할 수 있다. # ftp.linuxer.com 에 대해서 관리자는 "com" 유저이다. 관리자가 Anonymous # 가 생성한 디렉토리나 파일을 지울 수 없다면 관리자 라고 할 수 있겠는가? # 여기에 그 해법이 바로 Umask 과 웹호스팅 관리자의 능력에 달려있다. # /home/com/vir-ftp 의 소유자는 ftp가 아닌 "com" 의 소유자로 해야하고, # incoming 하위 디렉토리 에 대해서 Unamsk 070 이나 020 으로 설정하면 # 퍼미션은 707 이나 757 이 된다. # 즉 소유자가 누가되던지 간에 Others가 지우거나 생성할 수 있는 것이다. # 일반 유저로 들어왔을 경우에 해당한 것이다. # 이런 방법이 싫다면 Anonymous Group 정도를 VirtualHost 관리자인 # "com" 으로 대체해도 된다. # 그리고 Umask 002 로 설정하면 775의 퍼미션을 생성되어 "com"유저가 # 관리할 수 있다..이때는 com 그룹에 "com"유저가 포함되어 있어거나 # 단독으로 "com" 유저만 포함해야 한다. # 이유는 "com" 그룹에 포함된 다른 유저가 피해를 줄 수 있기 때문이다. # 또는 User 와 Group 에 적어도 관리자가 포함되어 있어야 한다. # 왜냐하면 "com" 유저는 고객이고 "root" 권한을 획득할 수 없기 때문이다. # 방법은 여러가지이다. # 이처럼 Anonymous 가 FTP클라이언트로 접속하여 디렉토리를 생성 # 하고 지울수 있게 하기 위해서는 소유자와 퍼미션 - incoming 디렉토리 # 에 대한 접근 정책 - 그리고 Umask 의 순서로 관리해야한다. # 예를 들어 아무리 Umask 000 으로 설정했더라도 imcoming 디렉토리에 # 대한 쓰기 권한이 없다면 Anonymous 는 쓸 수 없다는 것이다..... # 좀더 많은 정보를 원한다면 ProFTPD Reference.html 을 읽어보라. </Anonymous> </VirtualHost> ###### VirtualHost <ftp.linuxer.net>의 정의 ################### <VirtualHost ftp.linuxer.net> ServerName "ftp.linuxer.net" ServerAdmin ftp@linuxer.net #Umask 002 # 주석으로 처리되어 있기 때문에 Global 에서 설정한 022을 따른다. MaxClients 10 "죄송합니다. 최대 인원은 %m명 입니다." MaxClientsPerHost 1 "호스트당 1회만 접속가능합니다." <Anonymous /home/net/vir-ftp> User ftp Group ftp # ftp.linuxe.com 처럼 incoming 디렉토리가 정의되어 있지 않기 # 때문에Anonymous는 디렉토리를 생성할 수 없고 따로 지정할 필요도 # 없다. <Limit WRITE> DenyAll </Limit> </Anonymous> </VirtualHost>
-------------end -------------------------------------------

설정파일 편집이 모두 끝났으면 Anonymous가 접근할 수 있는 디렉토리를 만들어주자.

# su com $ mkdir ~com/vir-ftp $ mkdir ~com/vir-ftp/pub incoming $ chmod 705 ~com/vir-ftp/pub $ chmod 707 ~com/vir-ftp/incoming $ $ su net Password : ****** $ mkdir ~com/vir-ftp $ mkdir ~com/vir

댓글목록

등록된 댓글이 없습니다.

1,139 (12/23P)

Search

Copyright © Cmd 명령어 52.14.209.100