サーバー設定 · 1 min read · Nov 06, 2025

ISPConfig 3 ProFTPd For Debian

ISPConfig 3 ProFTPd For Debian

1 はじめに

私はISPConfigの新しいユーザーで、数年間Linuxを触っています。私のサーバーは現在OpenVZのVPSで、ISPConfigに付属するデフォルトのpureftpdを実行することができないため、ProFTPdに切り替えることを検討し、使用するのはそれほど難しくないことがわかりました。

2 インストール前の注意

注意: これはクォータサポートを含んでいません。私のVPSはそれをサポートしていません。ftp_user_edit.phpをISPConfig3で修正せずにこの統合を改善する方法についての提案やアイデアがあれば教えてください。これらの手順は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

スタンドアロンとして実行

グループとユーザーの作成

groupadd -g 2001 ftpgroup
useradd -u 2001 -s /bin/false -d /bin/null -c “proftpd user” -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 group table';  
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

すべての内容を消去し、次のように置き換えます:

#  
# ProftpdのSQLベースの認証のサンプル設定。  
#  
# 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  
  
# ユーザーがファイルをアップロードまたは削除するたびにmodifiedを更新します。  
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のファイルの1つを変更する必要があります。 これは理想的ではありません。新しいバージョンにアップグレードすると変更が失われますが、私が見つけた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のWebパネルにログインしている場合は、変更がマシンに登録される前にログアウトする必要があります。

Share: X/Twitter LinkedIn

新しい投稿を受信箱で受け取る

スパムはありません。いつでも購読を解除できます。