使用Proftpd和MySQL虚拟主机(包括配额)在Ubuntu 9.10上
本文档介绍如何安装使用MySQL数据库而不是真实系统用户的虚拟用户的Proftpd服务器。 这是更好的性能,并允许在单个机器上有成千上万的ftp用户。 除此之外,我将使用此设置显示使用配额。
对于MySQL数据库的管理,您可以使用基于Web的工具,如phpMyAdmin,它也将安装在此howto中。 phpMyAdmin是一个舒适的图形界面,这意味着您不必乱用命令行。
本教程基于Ubuntu 9.10。 您应该已经设置了一个基本的Ubuntu 9.10服务器系统,如本教程前八章所述: http : //www.youcl.com/perfect-server-ubuntu-9.10-karmic-koala-ispconfig-2
这是一个实践指南; 它不包括理论背景。 他们在网络上的许多其他文档中被处理。
本文档不附带任何形式的保证! 我想说,这不是设立这样一个制度的唯一办法。 实现这一目标有很多方法,但这是我所采取的方式。 我不会保证这将为您工作!
1初步说明
在本教程中,我使用IP地址为192.168.0.100
的hostname server1.example.com
。 这些设置可能会有所不同,因此您必须在适当的情况下更换它们。
确保您以root身份登录:
sudo su
1.1更改默认Shell
/ bin / sh
是/ bin / dash
的符号链接,但是我们需要/ bin / bash
,not / bin / dash
。 所以我们这样做:
dpkg-reconfigure dash
安装破折号为/ bin / sh?
< - 不
1.2禁用AppArmor
AppArmor是一个安全扩展(类似于SELinux),应该提供扩展的安全性。 在我看来,你不需要配置一个安全的系统,它通常会导致更多的问题,而不是优势(考虑到你做了一周的故障排除后,因为一些服务不能按预期工作,然后你发现一切都很好,只有AppArmor导致了这个问题)。 所以我禁用它。
我们可以禁用它:
/etc/init.d/apparmor stop
update-rc.d -f apparmor remove
aptitude remove apparmor apparmor-utils
2安装MySQL和phpMyAdmin
这一切都可以通过一个命令安装:
aptitude install mysql-server mysql-client phpmyadmin apache2
您将被要求为MySQL root用户提供密码 - 此密码对用户root @ localhost
以及root@server1.example.com有效
,因此我们不必在以后手动指定MySQL根密码:
MySQL“root”用户的新密码:
< - yourrootsqlpassword
重复MySQL“root”用户的密码:
< - yourrootsqlpassword
除此之外,您将看到以下问题:
Web服务器自动重新配置:
< - apache2
使用dbconfig-common配置phpmyadmin的数据库?
< - 不
3使用MySQL支持安装Proftpd
对于Ubuntu,有一个预配置的proftpd-mod-mysql
包可用。 将其作为独立守护进程安装,如下所示:
aptitude install proftpd-mod-mysql
您将被问到以下问题:
运行proftpd:
< - standalone
然后我们创建一个ftp组( ftpgroup
)和用户( ftpuser
),我们所有的虚拟用户将被映射到。 将group-and userid 2001
替换为系统上免费的数字:
groupadd -g 2001 ftpgroup
useradd -u 2001 -s /bin/false -d /bin/null -c "proftpd user" -g ftpgroup ftpuser
4为Proftpd创建MySQL数据库
现在我们创建一个名为ftp
的数据库和名为proftpd
的MySQL用户,proftpd守护程序稍后将使用它来连接到ftp
数据库:
mysql -u root -p
CREATE DATABASE ftp;
GRANT SELECT, INSERT, UPDATE, DELETE ON ftp.* TO 'proftpd'@'localhost' IDENTIFIED BY 'password';
GRANT SELECT, INSERT, UPDATE, DELETE ON ftp.* TO 'proftpd'@'localhost.localdomain' IDENTIFIED BY 'password';
FLUSH PRIVILEGES;
将字符串密码
替换为要用于MySQL用户proftpd的
任何密码。 仍然在MySQL shell上,我们创建了我们需要的数据库表:
USE ftp;
CREATE TABLE ftpgroup (
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';
CREATE TABLE ftpquotalimits (
name varchar(30) default NULL,
quota_type enum('user','group','class','all') NOT NULL default 'user',
per_session enum('false','true') NOT NULL default 'false',
limit_type enum('soft','hard') NOT NULL default 'soft',
bytes_in_avail bigint(20) unsigned NOT NULL default '0',
bytes_out_avail bigint(20) unsigned NOT NULL default '0',
bytes_xfer_avail bigint(20) unsigned NOT NULL default '0',
files_in_avail int(10) unsigned NOT NULL default '0',
files_out_avail int(10) unsigned NOT NULL default '0',
files_xfer_avail int(10) unsigned NOT NULL default '0'
) TYPE=MyISAM;
CREATE TABLE ftpquotatallies (
name varchar(30) NOT NULL default '',
quota_type enum('user','group','class','all') NOT NULL default 'user',
bytes_in_used bigint(20) unsigned NOT NULL default '0',
bytes_out_used bigint(20) unsigned NOT NULL default '0',
bytes_xfer_used bigint(20) unsigned NOT NULL default '0',
files_in_used int(10) unsigned NOT NULL default '0',
files_out_used int(10) unsigned NOT NULL default '0',
files_xfer_used int(10) unsigned NOT NULL default '0'
) TYPE=MyISAM;
CREATE TABLE ftpuser (
id int(10) unsigned NOT NULL auto_increment,
userid varchar(32) NOT NULL default '',
passwd varchar(32) NOT NULL default '',
uid smallint(6) NOT NULL default '5500',
gid smallint(6) NOT NULL default '5500',
homedir varchar(255) NOT NULL default '',
shell varchar(16) NOT NULL default '/sbin/nologin',
count int(11) NOT NULL default '0',
accessed datetime NOT NULL default '0000-00-00 00:00:00',
modified datetime NOT NULL default '0000-00-00 00:00:00',
PRIMARY KEY (id),
UNIQUE KEY userid (userid)
) TYPE=MyISAM COMMENT='ProFTP user table';
quit;
你可能已经注意到,随着戒烟;
命令我们已经离开了MySQL shell,并回到了Linux shell。
BTW,(我假设您的ftp服务器系统的主机名为server1.example.com
),您可以访问http://server1.example.com/phpmyadmin/下的phpMyAdmin
(您可以使用IP地址而不是server1。 example.com
),并以proftpd
身份登录。 那么你可以看看数据库。 以后可以使用phpMyAdmin管理您的Proftpd服务器。