centos pureftpd mysql,CentOS 搭建 Pure-FTP

背景

项目开发过程中部分外包,需要限制ftp用户在自己的目录,在21端口下没有问题,但当ftp用户用sftp登录时,还是可以访问上级目录,于是禁止该ftp用户ssh登录,切断22端口的通信。

安装Pure-ftpd

#安装扩展源(默认无pure-ftpd)

yum install -y epel-release

yum install -y pure-ftpd

#建立用户和用户组

groupadd ftpgroups

useradd ftp_user -g ftpgroups -s /sbin/nologin -d /dev/null //禁止登录

#创建虚拟用户(若使用pureftpd.pdb校验)

pure-pw useradd ftp_user -u ftp_user -d /data/www

pure-pw mkdb

#配置文件

vim /etc/pure-ftpd/pure-ftpd.conf

PureDB /etc/pure-ftpd/pureftpd.pdb #若选择PureDB则取消注释

AnonymousOnly no #关闭匿名访问权限

配置验证方式

PureDB方式

#创建虚拟用户

pure-pw useradd ftptest -u ftp_user -d /data

pure-pw mkdb

#管理用户

pure-pw useradd 添加用户

pure-pw userdel 删除用户

pure-pw usermod 修改用户

pure-pw show 查看用户详细信息

pure-pw list 查看所有用户设置

pure-pw mkdb 生成数据文件

MySQL方式

#创建数据库

CREATE DATABASE ftpdb;

CREATE TABLE `users` (

`User` varchar(16) NOT NULL DEFAULT '',

`status` enum('0','1') NOT NULL DEFAULT '0',

`Password` varchar(64) NOT NULL DEFAULT '',

`Uid` varchar(11) NOT NULL DEFAULT '-1',

`Gid` varchar(11) NOT NULL DEFAULT '-1',

`Dir` varchar(128) NOT NULL DEFAULT '',

`ULBandwidth` smallint(5) NOT NULL DEFAULT '0',

`DLBandwidth` smallint(5) NOT NULL DEFAULT '0',

`comment` tinytext NOT NULL,

`ipaccess` varchar(15) NOT NULL DEFAULT '*',

`QuotaSize` smallint(5) NOT NULL DEFAULT '0',

`QuotaFiles` int(11) NOT NULL DEFAULT '0',

PRIMARY KEY (`User`),

UNIQUE KEY `User` (`User`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8;

#创建用户

create user 'user'@'127.0.0.1' identified by 'passwd';

GRANT ALL PRIVILEGES ON `ftpdb`.* TO 'user'@'127.0.0.1' WITH GRANT OPTION;

#查看 ftp_user的USERID和GROUPID信息

cat /etc/passwd #找到ftp_user 对应的1004为UID,1001为GID

ftp_user:x:1004:1001::/data:/bin/bash

#SQL管理(增、删、改、查)

INSERT INTO `users` (`User`, `status`, `Password`, `Uid`, `Gid`, `Dir`, `ULBandwidth`, `DLBandwidth`, `comment`, `ipaccess`, `QuotaSize`, `QuotaFiles`) VALUES ('ftp_user', '1', MD5('passwd'), '1004', '1001', '/data/www', '0', '0', '', '*', '0', '0');

#修改pureftpd-mysql.conf

MYSQLServer 127.0.0.1 #MySQL地址

MYSQLPort 3306 #MySQL端口号

MYSQLUser user #MySQL用户

MYSQLPassword passwd #用户密码

MYSQLDatabase ftpdb #数据库

MYSQLCrypt md5 #验证方式

限制访问

#限制ftp用户登录ssh(建议不要限制root)

usermod -s /usr/sbin/nologin ftp_user

#若要恢复

usermod -s /bin/bash ftp_user

常见问题

Q1:解决CentOS下PureFtp出现“数据 Socket 错误 连接已超时”错误

查看 /etc/sysconfig/iptables

centos pureftpd mysql,CentOS 搭建 Pure-FTP_第1张图片

#查看pureftpd.conf

PassivePortRange 20000 30000

#添加规则:

iptables -A INPUT -m  state --state NEW -m tcp -p tcp --dport 20000:30000 -j ACCEPT

#保存防火墙规则,并重启

systemctl restart iptables

Q2:解决CentOS下PureFtp出现“530”错误

1、验证方式有问题未开启(配置不正确)

2、账号密码有问题

更多参考:

本作品采用《CC 协议》,转载必须注明作者和本文链接

来杯可乐不加糖。

你可能感兴趣的:(centos,pureftpd,mysql)