一、下载安装:
1、网站中能够下载到profptd源码:
这个是软件源码ftp地址:
ftp://ftp.proftpd.org/distrib/source/
2、进入目录/root/download解压:
tar -zxvf proftpd-1.3.8.tar.gz #将源码压缩包解压到当前目录中
cd proftpd-1.3.8/ #进入到解压目录中
执行:
./configure --enable-nls --prefix=/usr/local/proftpd
#如果提示没有安装gcc,那么执行:
yum -y install gcc
或者下载gcc 下载网址:https://mirrors.tuna.tsinghua.edu.cn/gnu/gcc/
gcc-10.3.0.tar.gz
#安装完后:
make
make install
二、配置:
1、创建本地用户proftpd禁止ssh登录。创建之后所有虚拟用户使用这个系统用户访问文件:
[root@localvm ~]# useradd proftpd -d /home/proftpd -s /bin/false -u 1001
2、将ftp根目录权限设置成系统用户proftpd上:
chown -R proftpd:proftpd /data/ftpdata
3、创建虚拟用户admin虚拟到proftpd上:
/usr/local/proftpd/bin/ftpasswd --passwd --uid=1001 --gid=1001 --home=/data/ftpdata --shell=/sbin/nologin --file=/usr/local/proftpd/etc/ftpd.passwd --name=admin
/usr/local/proftpd/bin/ftpasswd --passwd --uid=1001 --gid=1001 --home=/data/ftpdata --shell=/sbin/nologin --file=/usr/local/proftpd/etc/ftpd.passwd --name=shangchuan
/usr/local/proftpd/bin/ftpasswd --passwd --uid=1001 --gid=1001 --home=/data/ftpdata --shell=/sbin/nologin --file=/usr/local/proftpd/etc/ftpd.passwd --name=xiazai
#上面命令的说明:
#name是登陆ftp的用户名 file是密码文件位置 home是ftp用户的根目录
/*执行后显示:
ftpasswd: using alternate file: /usr/local/proftpd/etc/ftpd.passwd
ftpasswd: creating passwd entry for user admin
ftpasswd: /sbin/nologin is not among the valid system shells. Use of
ftpasswd: "RequireValidShell off" may be required, and the PAM
ftpasswd: module configuration may need to be adjusted.
输入密码:
*/
/usr/local/proftpd/bin/ftpasswd --group --file=/usr/local/proftpd/etc/ftp.group --gid=1001 --name=proftpd --member=admin
#创建用户组,生成配置文件 member将创建的用户添加到用户组中
2、ftp用户配置要求:admin 权限不限 shangchuan 只能上传文件夹上传 xiazai 只能下载文件下载:
#配置文件《开始》:
This is a basic ProFTPD configuration file (rename it to
'proftpd.conf' for actual use. It establishes a single server
and a single anonymous login. It assumes that you have a user/group
"nobody" and "ftp" for normal operation and anon.
ServerName "ProFTPD Default by wo"
ServerIdent off
ServerType standalone
DefaultServer on
Port 21 is the standard FTP port.
Port 21
Don't use IPv6 support by default.
UseIPv6 off
Umask 022 is a good standard umask to prevent new dirs and files
from being group and world writable.
Umask 022
To prevent DoS attacks, set the maximum number of child processes
to 30. If you need to allow more than 30 concurrent connections
at once, simply increase this value. Note that this ONLY works
in standalone mode, in inetd mode you should use an inetd server
that allows you to limit maximum number of processes per service
(such as xinetd).
MaxInstances 1000
Set the user and group under which the server will run.
User proftpd
Group proftpd
To cause every FTP user to be "jailed" (chrooted) into their home
directory, uncomment this line.
DefaultRoot /data/ftpdata
Normally, we want files to be overwriteable.
AllowOverwrite on
TimeoutLogin 60
TimeoutNoTransfer 1200
TimeoutStalled 2400
AllowStoreRestart on
#允许断点续上传
AllowRetrieveRestart on
#允许断点续下载
PassivePorts 60000 60100
#指定数据端口的范围
UseReverseDNS off
#关闭DNS反向查询,节省连接时间
TransferLog /var/spool/syslog/proftpd/xferlog.legacy
#数据传输记录
Bar use of SITE CHMOD by default
AuthOrder mod_auth_file.c mod_auth_unix.c
AuthUserFile /usr/local/proftpd/etc/ftpd.passwd
AuthGroupFile /usr/local/proftpd/etc/ftp.group
MaxClients 100
#IdentLookups off
UseReverseDNS off
DeleteAbortedStores on
DirFakeGroup on
DirFakeUser on
DirFakeMode 0600
RequireValidShell off
LangOptions PreferServerEncoding #在编译时加入 --enable-nls才能用
UseEncoding utf8 gbk #在编译时加入 --enable-nls才能用
<Limit Login>
Order deny,allow
AllowGroup proftpd
</Limit>
#显示~/welcome.msg中的欢迎信息,可以编辑welcome.msg自己制定欢迎信息
%T 当前的时间
%F 所在硬盘剩下的空间
%C 当前所在的目录
%R:客户的主机名
%U:客户登陆的帐号
%M:允许最大连接数
%N:当前的连接人数
%E:FTP服务器管理员的email
%i:本次上传的文件数量
%o:本次下载的文件数量
AllowOverwrite YES
#允许文件可以重新写
#IdentLookups off
#查找客户的远程用户名,关掉节省连接时间
#ExtendedLog /var/spool/syslog/proftpd/access.log WRITE,READ write
#以write的日志格式记录READ,WRITE的日志
#ExtendedLog /var/spool/syslog/proftpd/auth.log AUTH auth
#以auth的日志格式记录AUTH的日志
<Directory /data/ftpdata>
<Limit ALL>
AllowUser admin shangchuan xiazai
</Limit>
<Limit CWD RETR DIRS RMD>
AllowUser shangchuan xiazai
</Limit>
<Limit WRITE STOR RMD READ>
Order allow, deny
DenyUser shangchuan xiazai
</Limit>
</Directory>
<Directory "/data/ftpdata/上传">
<Limit ALL>
DenyAll
</Limit>
<Limit WRITE READ CWD STOR MKD DIRS RMD>
AllowUser admin
</Limit>
<Limit CWD STOR MKD DIRS>
AllowUser shangchuan
</Limit>
</Directory>
<Directory "/data/ftpdata/下载">
<Limit ALL>
DenyAll
</Limit>
<Limit WRITE READ CWD STOR MKD DIRS RMD>
AllowUser admin
</Limit>
<Limit READ CWD RETR DIRS>
AllowUser xiazai
</Limit>
</Directory>
<Limit SITE_CHMOD>
DenyAll
</Limit>
配置文件《结束》
========
Limit配置说明:
CMD:Change Working Directory 改变目录
MKD:MaKe Directory 建立目录的权限
RNFR: ReName FRom 更改目录名的权限
DELE:DELEte 删除文件的权限
RMD:ReMove Directory 删除目录的权限
RETR:RETRieve 从服务端下载到客户端的权限
STOR:STORe 从客户端上传到服务端的权限
READ:可读的权限,不包括列目录的权限,相当于RETR,STAT等
WRITE:写文件或者目录的权限,包括MKD和RMD
DIRS:是否允许列目录,相当于LIST,NLST等权限,还是比较实用的
ALL:所有权限
LOGIN:是否允许登陆的权限
========
三、防火墙开启配置:
systemctl start firewalld
systemctl enable firewalld
firewall-cmd --permanent --add-port=21/tcp
firewall-cmd --permanent --add-port=60000-60100/tcp
#firewall-cmd --permanent --remove-port=8021/tcp
firewall-cmd --reload
四、启动服务:
1、启动
cd /usr/local/proftpd/sbin #进入到服务运行文件目录
./proftpd #启动服务
2、停止
ps -ef | grep proftpd #检查服务进程是否启动
pkill proftp
=============
参考文章
https://blog.csdn.net/xiazhipeng1000/article/details/85224076