가상 호스팅 · 3 min read · Dec 29, 2025

PureFTPd와 MySQL을 이용한 가상 호스팅 (쿼터 및 대역폭 관리 포함) - Mandriva 2007 Spring - 2페이지

6 데이터베이스 채우기 및 테스트

데이터베이스를 채우기 위해 MySQL 셸을 사용할 수 있습니다:

mysql -u root -p
USE pureftpd;

이제 상태 1(즉, FTP 계정이 활성화됨)인 사용자 exampleuser를 생성하고, 비밀번호는 secret(암호화된 형태로 MySQL의 MD5 함수를 사용하여 저장됨), UID 및 GID는 2001(2단계 끝에서 생성한 사용자/그룹의 userid 및 groupid 사용!), 홈 디렉토리는 /home/www.example.com, 업로드 및 다운로드 대역폭은 100 KB/sec(초당 킬로바이트), 쿼터는 50 MB로 설정합니다:

INSERT INTO `ftpd` (`User`, `status`, `Password`, `Uid`, `Gid`, `Dir`, `ULBandwidth`, `DLBandwidth`, `comment`, `ipaccess`, `QuotaSize`, `QuotaFiles`) VALUES ('exampleuser', '1', MD5('secret'), '2001', '2001', '/home/www.example.com', '100', '100', '', '*', '50', '0');
quit;

이제 작업 스테이션에서 FTP 클라이언트 프로그램(Windows 시스템의 경우 WS_FTP 또는 SmartFTP, Linux 데스크탑의 경우 gFTP 등)을 열고 연결을 시도합니다. 호스트 이름으로 server1.example.com(또는 시스템의 IP 주소)을 사용하고, 사용자 이름은 exampleuser, 비밀번호는 secret입니다.

연결할 수 있다면 축하합니다! 그렇지 않다면 뭔가 잘못된 것입니다.

이제 다음을 실행하면

ls -l /home

/home/www.example.com(예제 사용자의 홈 디렉토리) 디렉토리가 자동으로 생성되었으며, ftpuser 및 ftpgroup(2단계 끝에서 생성한 사용자/그룹)이 소유하고 있음을 확인할 수 있습니다:

[root@server1 ~]# ls -l /home  
total 14  
drwxr-xr-x 3 administrator administrator  1024 Jul  4  2007 administrator/  
drwxr-xr-x 2 root          root          12288 Jul  4  2007 lost+found/  
drwxr-xr-x 2 ftpuser      ftpgroup      1024 Jul  4 16:38 www.example.com/  
[root@server1 ~]#

7 데이터베이스 관리

대부분의 사람들은 MySQL에 대한 그래픽 프론트 엔드가 있는 것이 더 쉽기 때문에, pureftpd 데이터베이스를 관리하기 위해 phpMyAdmin(이 예제에서는 http://server1.example.com/phpmyadmin/ 아래)을 사용할 수 있습니다.

새 사용자를 생성하려면 항상 ftpd 테이블에 항목을 생성해야 하므로 이 테이블의 열에 대해 설명하겠습니다:

ftpd 테이블:

  • User: 가상 PureFTPd 사용자 이름(예: exampleuser).
  • status: 0 또는 1. 0은 계정이 비활성화되었음을 의미하며, 사용자는 로그인할 수 없습니다.
  • Password: 가상 사용자의 비밀번호. MySQL의 MD5 함수를 사용하여 비밀번호를 MD5 문자열로 암호화하여 저장해야 합니다:
  • UID: 2단계 끝에서 생성한 FTP 사용자의 userid(예: 2001).
  • GID: 2단계 끝에서 생성한 FTP 그룹의 groupid(예: 2001).
  • Dir: 가상 PureFTPd 사용자의 홈 디렉토리(예: /home/www.example.com). 존재하지 않는 경우, 새 사용자가 FTP를 통해 처음 로그인할 때 생성됩니다. 가상 사용자는 이 홈 디렉토리에 감금되며, 즉, 자신의 홈 디렉토리 외의 다른 디렉토리에 접근할 수 없습니다.
  • ULBandwidth: 가상 사용자의 업로드 대역폭(KB/sec, 초당 킬로바이트). 0은 무제한을 의미합니다.
  • DLBandwidth: 가상 사용자의 다운로드 대역폭(KB/sec, 초당 킬로바이트). 0은 무제한을 의미합니다.
  • comment: 여기에는 내부 관리용으로 사용할 수 있는 모든 주석을 입력할 수 있습니다(예: 내부 관리용). 일반적으로 이 필드는 비워 둡니다.
  • ipaccess: 이 FTP 계정에 연결할 수 있는 IP 주소를 입력합니다. *는 모든 IP 주소가 연결할 수 있음을 의미합니다.
  • QuotaSize: FTP 서버에서 가상 사용자가 사용할 수 있는 저장 공간(MB, ULBandwidth 및 DLBandwidth와는 다르게 KB가 아님!). 0은 무제한을 의미합니다.
  • QuotaFiles: FTP 서버에서 가상 사용자가 저장할 수 있는 파일 수. 0은 무제한을 의미합니다.

8 익명 FTP

비밀번호 없이 모든 사람이 로그인할 수 있는 익명 FTP 계정을 생성하려면 ftp라는 사용자와 그룹이 필요합니다. 두 개 모두 pure-ftpd 패키지를 설치할 때 자동으로 생성되므로 수동으로 생성할 필요가 없습니다. 그러나 ftp의 홈 디렉토리는 기본적으로 /var/ftp이지만, 익명 FTP 디렉토리를 /home/ftp에 생성하고 싶습니다(일반 사용자의 FTP 디렉토리도 /home에 있습니다, 예: /home/www.example.com). 하지만 물론 원하신다면 /var/ftp 디렉토리를 익명 FTP에 사용할 수 있습니다.

/home/ftp를 사용하려면 /etc/passwd를 열고 ftp 사용자의 홈 디렉토리를 /var/ftp에서 /home/ftp로 변경합니다(원하신다면 /var/ftp를 사용하려면 이 작업을 하지 마십시오):

vi /etc/passwd

| [...] #ftp:x:77:77:system user for pure-ftpd:/var/ftp:/bin/false ftp:x:77:77:system user for pure-ftpd:/home/ftp:/bin/false [...] |

그런 다음 /var/ftp를 /home으로 이동합니다(원하신다면 /var/ftp를 사용하려면 이 작업을 하지 마십시오):

mv /var/ftp /home

우리는 /home/ftp/incoming(익명 사용자가 파일을 업로드할 수 있도록 허용) 및 /home/ftp/pub(익명 사용자가 다운로드할 수 있는 곳) 디렉토리를 사용합니다. 두 디렉토리는 이미 존재합니다. /home/ftp/incoming 디렉토리에 311 권한을 부여하여 사용자가 업로드할 수 있지만 해당 디렉토리의 파일을 보거나 다운로드할 수 없도록 합니다. /home/ftp/pub 디렉토리는 파일을 보고 다운로드할 수 있도록 555 권한을 가집니다:

chown -R ftp:nogroup /home/ftp  
cd /home/ftp  
chmod 311 incoming/  
chmod 555 pub/  
cd ../  
chmod 555 ftp/

(위의 명령에서 /var/ftp를 대신 사용하려면 /home/ftp를 /var/ftp로 바꾸십시오.)

익명 사용자는 로그인할 수 있으며, /home/ftp/pub에서 파일을 다운로드할 수 있지만, 업로드는 /home/ftp/incoming으로 제한됩니다(한 번 /home/ftp/incoming에 파일이 업로드되면, 해당 파일은 읽거나 다운로드할 수 없으며, 서버 관리자가 이를 /home/ftp/pub으로 이동해야 다른 사용자가 사용할 수 있습니다).

이제 익명 FTP를 위해 PureFTPd를 구성해야 합니다. /etc/pure-ftpd/pure-ftpd.conf를 열고 다음 설정이 포함되어 있는지 확인합니다:

vi /etc/pure-ftpd/pure-ftpd.conf

| [...] NoAnonymous no [...] AntiWarez no [...] AnonymousBandwidth 8 [...] AnonymousCantUpload no [...] |

(AnonymousBandwidth 설정은 선택 사항입니다 - 익명 사용자의 업로드 및 다운로드 대역폭을 제한할 수 있습니다. 8은 8 KB/sec를 의미합니다. 원하는 값을 사용하거나 대역폭을 제한하고 싶지 않다면 해당 줄을 주석 처리하십시오.)

마지막으로 PureFTPd를 재시작합니다:

/etc/init.d/pure-ftpd restart

9 링크

Share: X/Twitter LinkedIn

새 게시물을 받은 편지함에서 받기

스팸은 없습니다. 언제든지 구독 해지 가능합니다.