서버 설정 · 2 min read · Nov 06, 2025

ISPConfig 3 ProFTPd For Debian

ISPConfig 3 ProFTPd For Debian

1 소개

저는 ISPConfig의 새로운 사용자이며 몇 년 동안 리눅스를 사용해왔습니다. 제 서버는 현재 OpenVZ를 사용하는 VPS이며, ISPConfig와 함께 제공되는 기본 pureftpd를 실행할 수 없기 때문에 ProFTPd로 전환하는 방법을 알아보았습니다. 그렇게 하는 것이 그리 어렵지 않다는 것을 알게 되었습니다.

2 사전 설치

참고: 이 설정은 제 VPS가 지원하지 않기 때문에 쿼터 지원을 포함하지 않습니다. ftp_user_edit.php를 수정하지 않고 이 통합을 개선할 수 있는 제안이나 아이디어가 있다면 알려주세요. 이 지침은 Debian 5.0 Lenny에서 실행되었지만 6.0에서도 동일하게 작동해야 합니다. 다른 배포판에서는 이 지침을 약간 수정해야 할 수 있습니다.

또한 참고: 이 과정은 새 서버와 ISPConfig 3 설치에서 잘 작동했습니다. 기존 서버에서 사용하려면 생성된 모든 ftp 사용자를 편집하고 저장해야 하며, 다른 문제가 발생할 수 있습니다. 앞으로 이를 자동으로 수행하는 간단한 php 스크립트를 만들 수도 있습니다. 발생할 수 있는 문제에 대해서는 책임지지 않으므로, 이 작업은 전적으로 귀하의 책임 하에 진행하시기 바랍니다.

3 설치

실행

apt-get remove pure-ftpd-common pure-ftpd-mysql
apt-get install proftpd proftpd-mod-mysql

Standalone으로 실행

그룹 및 사용자 생성

groupadd -g 2001 ftpgroup
useradd -u 2001 -s /bin/false -d /bin/null -c “proftpd 사용자” -g ftpgroup ftpuser

4 데이터베이스 구성

mysql -u root -p
Use dbispconfig

쿼리 실행:

ALTER TABLE `ftp_user` ADD `shell` VARCHAR( 18 ) NOT NULL DEFAULT  '/sbin/nologin',  
ADD `count` INT( 11 ) NOT NULL DEFAULT '0',  
ADD `accessed` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00',  
ADD `modified` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00';  
CREATE TABLE ftp_group (  
groupname varchar(16) NOT NULL default '',  
gid smallint(6) NOT NULL default '5500',  
members varchar(16) NOT NULL default '',  
KEY groupname (groupname)  
) TYPE=MyISAM COMMENT='ProFTP 그룹 테이블';  
INSERT INTO `ftp_group` (`groupname`, `gid`, `members`) VALUES  
('ftpgroup', 2001, 'ftpuser');

5 ProFTPd 구성

/usr/local/ispconfig/interface/lib/config.inc.php 편집:

nano /usr/local/ispconfig/interface/lib/config.inc.php

변수 db_password 찾기.

나중에 사용할 비밀번호를 기록해 두세요.

/etc/proftpd/proftpd.conf 편집

nano /etc/proftpd/proftpd.conf

찾기:

#Include /etc/proftpd/sql.conf

변경:

Include /etc/proftpd/sql.conf

/etc/proftpd/sql.conf 편집

nano /etc/proftpd/sql.conf

모든 내용을 지우고 다음으로 교체:

#  
# SQL 기반 인증을 위한 Proftpd 샘플 구성.  
#  
# PAM 기반 SQL 인증을 선호하는 경우 사용하지 마십시오.  
#  
  
DefaultRoot ~  
  
SQLBackend mysql  
  
# MySQL의 비밀번호는 CRYPT를 사용하여 암호화됩니다.  
  
SQLAuthTypes  Plaintext Crypt  
  
SQLAuthenticate         users groups  
  
# 데이터베이스에 연결하는 데 사용  
# databasename@host database_user user_password  
SQLConnectInfo  dbispconfig@localhost ispconfig _insertpasswordhere_  
  
# ProFTPd가 상호작용할 "usertable"의 데이터베이스 열 이름을 지정합니다.  
# db의 이름과 일치시킵니다.  
SQLUserInfo     ftp_user username password uid gid dir shell  
  
# ProFTPd가 상호작용할 "grouptable"의 데이터베이스 열 이름을 지정합니다.  
# 다시 db의 이름과 일치합니다.  
SQLGroupInfo    ftp_group groupname gid members  
  
# 최소 UID 및 GID 설정 - 그렇지 않으면 각각 999입니다.  
SQLMinID        500  
  
# 사용자의 홈 디렉토리가 존재하지 않으면 필요에 따라 생성  
CreateHome off  
  
# 사용자가 로그인할 때마다 카운트 업데이트  
SQLLog PASS updatecount  
SQLNamedQuery updatecount UPDATE "count=count+1, accessed=now() WHERE userid='%u'" ftpuser  
  
# 사용자가 파일을 업로드하거나 삭제할 때마다 수정 업데이트  
SQLLog  STOR,DELE modified  
SQLNamedQuery modified UPDATE "modified=now() WHERE userid='%u'" ftpuser  
  
RootLogin off  
  
RequireValidShell off  
  
  
  

insertpasswordhere를 ISPConfig에서 가져온 비밀번호로 변경해야 합니다.

MySQL 데이터베이스가 다른 서버에 있는 경우 localhost를 MySQL 서버를 나타내도록 변경하십시오.

/etc/proftpd/modules.conf 편집

nano /etc/proftpd/modules.conf

찾기:

#LoadModule mod_sql.c

변경:

LoadModule mod_sql.c

찾기:

#LoadModule mod_sql_mysql.c

변경:

LoadModule mod_sql_mysql.c

실행:

/etc/init.d/proftpd restart

6 ISPConfig 3 변경 사항

이제 ISPConfig 파일 중 하나를 변경해야 합니다. 이는 이상적이지 않지만, 새로운 버전으로 업그레이드하면 변경 사항이 사라지므로 ProFTPd가 작동하도록 만드는 유일한 방법입니다.

/usr/local/ispconfig/interface/web/sites/ftp_user_edit.php 편집

nano /usr/local/ispconfig/interface/web/sites/ftp_user_edit.php

찾기:

$uid = $web["system_user"];
$gid = $web["system_group"];

다음으로 교체:

$userinfo = posix_getpwnam($web["system_user"]);
$uid = $userinfo['uid'];
$gid = $userinfo['gid'];

참고: 현재 ISPConfig의 웹 패널에 로그인되어 있는 경우, 변경 사항이 귀하의 컴퓨터에 등록되기 전에 로그아웃해야 합니다.

Share: X/Twitter LinkedIn

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

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