ubuntu下Pure-FTPd的安装和配置

本文详细介绍了如何在Linux环境下安装配置Pure-FTPd MySQL版本,并通过MySQL数据库管理FTP用户,包括设置Chroot环境、配置MySQL数据库及权限、安装web管理界面等步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、安装Pure-FTPd
sudo apt-get install pure-ftpd-mysql mysql-server

2、添加用户和组
sudo groupadd -g 2001 ftpgroup
sudo useradd -u 2001 -s /bin/false -d /dev/null -c "pure-ftpd user" -g ftpgroup ftpuser

3、Chroot设置
sudo sh -c "echo 'yes' > /etc/pure-ftpd/conf/ChrootEveryone"

4、手工创建用户目录
sudo sh -c "echo 'No' > /etc/pure-ftpd/conf/CreateHomeDir"

5、为Pure-FTPd创建MySQL数据库
mysql -uroot -pxdnice -e "create database ftpusers;"

创建数据库用户ftpadmin赋予权限
grant select,insert,update,delete,create,drop on ftpusers.* to 'ftpadmin'@'localhost' identified by 'admin888';
grant select,insert,update,delete,create,drop on ftpusers.* to 'ftpadmin'@'localhost.localdomain' identified by 'admin888';
flush privileges;

创建users表
create table if not exists `users`(
`user` varchar(16) not null default '',
`password` varchar(32) not null default '',
`uid` int(11) not null,
`gid` int (11) not null,
`dir` varchar(128) not null default '',
`quotafiles` int(10) not null default '500',
`quotasize` int(10) not null default '30',
`ulbandwidth` int(10) not null default '80',
`dlbandwidth` int(10) not null default '80',
`ipaddress` varchar(15) not null default '*',
`comment` tinytext,
`status` enum('0','1') not null default '1',
`ulratio` smallint(5) not null default '1',
`dlratio` smallint(5) not null default '1',
primary key (`user`),
unique key `user` (`user`)
)engine=myisam default charset=latin1;

6、配置Pure-FTPd的mysql.conf
sudo mv /etc/pure-ftpd/db/mysql.conf /etc/pure-ftpd/db/mysql.conf_orig
sudo nano /etc/pure-ftpd/db/mysql.conf
MySQLServer 127.0.0.1
MySQLSocket /var/run/mysqld/mysqld.sock
MySQLUser ftpadmin
MySQLPassword xdnice*
MySQLDatabase ftpusers
MySQLCrypt md5
MySQLGetPW SELECT password FROM users WHERE user="\L" AND status="1" AND (ipaddress="*" OR ipaddress LIKE "\R")
MySQLGetUID SELECT uid FROM users WHERE user="\L" AND status="1" AND (ipaddress="*" OR ipaddress LIKE "\R")
MySQLGetGID SELECT gid FROM users WHERE user="\L" AND status="1" AND (ipaddress="*" OR ipaddress LIKE "\R")
MySQLGetDir SELECT dir FROM users WHERE user="\L" AND status="1" AND (ipaddress="*" OR ipaddress LIKE "\R")
MySQLGetQTAFS SELECT quotafiles FROM users WHERE user="\L" AND status="1" AND (ipaddress="*" OR ipaddress LIKE "\R")
MySQLGetQTASZ SELECT quotasize FROM users WHERE user="\L" AND status="1" AND (ipaddress="*" OR ipaddress LIKE "\R")
MySQLGetRatioUL SELECT ulratio FROM users WHERE user="\L" AND status="1" AND (ipaddress="*" OR ipaddress LIKE "\R")
MySQLGetRatioDL SELECT dlratio FROM users WHERE user="\L" AND status="1" AND (ipaddress="*" OR ipaddress LIKE "\R")
MySQLGETBandwidthUL SELECT ulbandwidth FROM users WHERE user="\L" AND status="1" AND (ipaddress="*" OR ipaddress LIKE "\R")
MySQLGETBandwidthDL SELECT dlbandwidth FROM users WHERE user="\L" AND status="1" AND (ipaddress="*" OR ipaddress LIKE "\R")

sudo chmod g=o= /etc/pure-ftpd/db/mysql.conf

sudo /etc/init.d/pure-ftpd-mysql restart

7、安装web管理界面
到http://machiel.generaal.net/index.php?subject=user_manager_pureftpd&button=download下载

解压缩
sudo tar zxvf /home/babycat/ftp_v2.1.tar.gz

修改配置文件
sudo nano /var/www/ftp/config.php

  $DEFUserID = "2001"; // nobody    // Default user id of virtual ftp user.
  $DEFGroupID = "2001";  // guest      // Default group is of virtual ftp user.
  $UsersFile = "/etc/passwd";        // The unix user file
  $GroupFile = "/etc/group";        // The unix group file
  $StyleSheet = "style/default.css.php"; // The location of the style sheet
  $EnableQuota = 0;                  // Enable virtual quota's (0=Off 1=On)
  $EnableRatio = 0;                  // Enable ratio (0=Off 1=On)
                                    // The pureftpd server has to be compiled with ratio support.
  /* This list of users will NOT appear in the dropdown menu. */
  $BlacklistUsers = array ('adm','bin','bind','daemon','gopher','halt','kmem','lp',
                          'mailnull','man','named','nfsnobody','nscd','operator',
                          'pop','root','rpc','rpcuser','rpm','shutdown','smmsp',
                          'sshd','sync','toor','tty','uucp','vcsa','xfs');
  /* This list of groups will NOT appear in the dropdown menu. */
  $BlacklistGroups = array ('adm','bin','bind','daemon','dialer','dip','disk','floppy','gopher','kmem',
                          'lock','lp','mailnull','man','named','mem','network','news',
                          'nscd','ntp','operator','pcap','root','rpc','rpcuser','rpm','slocate','smmsp',
                          'sshd','staff','sys','tty','utmp','uucp','vcsa','wheel','xfs');


创建admin表
use ftpusers;
create table if not exists `admin`(
    `username` varchar(35) not null default '',
    `password` char(32) not null default '',
    primary key (`username`)
    )engine=myisam default charset=latin1;

插入管理帐号
insert into `admin` (`username`,`password`) values ('ftpadmin',MD5('admin888'));

搭建好后测试FTP是否连接成功,如果出现530错误,解决方法:
在 /etc/pure-ftpd/auth 目录下输入以下命令:
ln -s ../conf/MySQLConfigFile 30mysql  (使用软连接到MySQLConfigFile中的/etc/pure-ftpd/db/mysql.conf)
完成后重启 /etc/init.d/pure-ftpd-mysql restart

转载于:https://www.cnblogs.com/jiangyao/archive/2010/10/12/1849321.html

<think>我们参考用户提供的引用问题,来安装配置pure-ftpd并进行基本调试。根据引用[1][2],我们可以从源码编译安装或者使用包管理器安装,也可以使用Docker安装。这里我们介绍两种常见方法:使用包管理器安装(适合大多数Linux发行版)从源码编译安装。另外,引用[3][4]提到了配置调试过程中可能遇到的问题,如配置文件错误登录认证失败。由于用户没有指定具体的Linux发行版,我们以常见的UbuntuCentOS为例。步骤概览:1.安装pure-ftpd2.配置pure-ftpd3.创建FTP用户目录4.启动服务5.基本调试方法一:使用包管理器安装(推荐)对于Ubuntu/Debian:```sudoaptupdatesudoaptinstallpure-ftpd```对于CentOS/RHEL:首先启用EPEL仓库(如果尚未启用):```sudoyuminstallepel-releasesudoyuminstallpure-ftpd```方法二:从源码编译安装(适合需要特定版本或自定义)1.下载源码(请替换为最新版本URL):wgethttps://download.pureftpd.org/pub/pure-ftpd/releases/pure-ftpd-1.0.50.tar.gz2.解压并进入目录:tarxvfpure-ftpd-1.0.50.tar.gzcdpure-ftpd-1.0.503.配置、编译安装:./configure--prefix=/usr/local/pure-ftpdmakesudomakeinstall配置pure-ftpd:无论哪种安装方式,配置文件通常位于/etc/pure-ftpd/pure-ftpd.conf(包管理器安装)或/usr/local/pure-ftpd/etc/pure-ftpd.conf(源码安装)。编辑配置文件:sudovi/etc/pure-ftpd/pure-ftpd.conf常见配置项(根据需要修改):#禁止匿名登录NoAnonymousyes#允许用户通过其系统账户登录(注意安全风险)UnixAuthenticationyes#如果使用虚拟用户,可以启用PureDB#PureDB/etc/pure-ftpd/pureftpd.pdb#限制用户在其主目录内ChrootEveryoneyes#日志文件路径VerboseLogyes创建FTP用户:如果使用系统用户登录,则创建系统用户(注意:系统用户具有系统权限,需谨慎):sudouseradd-mftpusersudopasswdftpuser如果使用虚拟用户(推荐):1.创建虚拟用户数据库:sudopure-pwuseraddftpuser-uftpuser-d/home/ftpuser(这里会提示设置密码,-u指定系统用户,-d指定主目录)2.更新数据库:sudopure-pwmkdb注意:虚拟用户需要启用PureDB,并确保配置文件中PureDB的路径正确。启动服务:对于包管理器安装的系统:Ubuntu/Debian:sudosystemctlstartpure-ftpdCentOS/RHEL:sudosystemctlstartpure-ftpd源码安装的启动方式可能需要手动启动:sudo/usr/local/pure-ftpd/sbin/pure-ftpd/etc/pure-ftpd.conf或者可以创建systemd服务文件。基本调试:1.检查服务状态:systemctlstatuspure-ftpd2.检查端口监听:netstat-tuln|grep213.使用FTP客户端连接测试:ftplocalhost4.查看日志:通常日志在/var/log/messages或/var/log/syslog,或者配置文件中指定的日志路径。常见问题:1.连接问题:检查防火墙设置(开放21端口被动端口范围)。2.认证失败(530错误):-检查用户名密码是否正确-检查用户的主目录是否存在且权限正确-如果使用虚拟用户,确保数据库已更新-检查配置文件中的认证方式(UnixAuthentication或PureDB)3.无法上传文件:检查目录权限,确保FTP用户有写权限。引用[3]中提到的调试方法:使用`pure-ftpd-n`检查配置文件语法错误,以及逐步注释配置项的方法。根据引用[2],如果使用Docker安装,可以参考提供的Dockerfile运行命令。由于用户要求进行基本调试,我们重点介绍常见问题的排查。生成相关问题:1.如何设置pure-ftpd使用被动模式?2.如何为pure-ftpd配置SSL/TLS加密?3.如何限制pure-ftpd用户的上传下载速度?4.如何配置pure-ftpd的日志记录?5.如何管理虚拟用户(添加、删除、修改)?</think>### 在Linux上安装配置pure-ftpd #### 一、安装pure-ftpd **方法1:包管理器安装(推荐)** ```bash # Ubuntu/Debian sudo apt update sudo apt install pure-ftpd # CentOS/RHEL sudo yum install epel-release sudo yum install pure-ftpd ``` **方法2:源码编译安装**(适合自定义配置) 参考引用[1]的Makefile规则: ```bash wget https://download.pureftpd.org/pub/pure-ftpd/releases/pure-ftpd-1.0.50.tar.gz tar xvf pure-ftpd-*.tar.gz cd pure-ftpd-* ./configure --prefix=/usr/local/pure-ftpd make sudo make install ``` #### 二、基础配置 1. **编辑主配置文件** ```bash sudo vi /etc/pure-ftpd/pure-ftpd.conf ``` 关键配置项: ```ini ChrootEveryone yes # 限制用户在主目录 NoAnonymous yes # 禁止匿名登录 UnixAuthentication yes # 启用系统用户认证 PassivePortRange 30000 30010 # 被动模式端口范围 VerboseLog yes # 启用详细日志 ``` 2. **创建FTP专用用户** ```bash sudo groupadd ftpgroup sudo useradd -g ftpgroup -d /ftp -s /bin/false ftpuser sudo mkdir /ftp sudo chown ftpuser:ftpgroup /ftp ``` #### 三、启动服务 ```bash # Systemd系统 sudo systemctl start pure-ftpd sudo systemctl enable pure-ftpd # 手动启动(调试模式) sudo pure-ftpd -n -c 30 -C 5 -p 30000:30010 ``` #### 四、基本调试技巧 1. **配置语法检查**(引用[3]) ```bash pure-ftpd -n /etc/pure-ftpd/pure-ftpd.conf ``` 输出`Configuration seems OK`表示配置有效。 2. **连接测试** ```bash ftp localhost # 输入系统用户名密码 ``` 3. **错误排查** - **530认证失败**(引用[4]): - 检查`/etc/pure-ftpd/pureftpd.passwd`是否存在虚拟用户 - 确认`UnixAuthentication`是否启用 - 查看`/var/log/messages`中的错误详情 - **被动模式失败**: 确认防火墙开放21端口30000-30010端口范围 4. **虚拟用户管理**(引用[2]) ```bash sudo pure-pw useradd bob -u ftpuser -d /ftp/bob sudo pure-pw mkdb # 更新用户数据库 ``` #### 五、Docker部署(可选) 参考引用[2]的Docker方案: ```bash docker run -d --name pure-ftpd \ -p 21:21 -p 30000-30010:30000-30010 \ -v /my/ftp:/ftp -v /my/config:/ftpconf \ stilliard/pure-ftpd:hardened ``` --- ### 相关问题 1. 如何为pure-ftpd配置SSL/TLS加密传输? 2. 怎样限制FTP用户的上传/下载速度? 3. 如何实现pure-ftpd的虚拟用户隔离(每个用户独立目录)? 4. 怎样通过PAM集成LDAP/AD认证? 5. 如何调试pure-ftpd的被动模式(PASV)连接问题?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值