Centos 7系统安装proftpd-1.3.8过程

一、下载安装:

1、网站中能够下载到profptd源码:

http://www.proftpd.org/

这个是软件源码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

相关推荐
Jackey_Song_Odd34 分钟前
解决Ubuntu下无法装载 Windows D盘的问题
linux·ubuntu
Linux运维技术栈1 小时前
Ansible(自动化运维)环境搭建及ansible-vault加密配置
运维·自动化·ansible
乔巴不是狸猫1 小时前
第11周作业
linux
Bessssss2 小时前
centos权限大集合,覆盖多种权限类型,解惑权限后有“. + t s”问题!
linux·运维·centos
苹果醋32 小时前
Golang的文件加密工具
运维·vue.js·spring boot·nginx·课程设计
jwensh2 小时前
【Jenkins】Declarative和Scripted两种脚本模式有什么具体的区别
运维·前端·jenkins
silver6873 小时前
Linux 下的 GPT 和 MBR 分区表详解
linux
R-sz3 小时前
14: curl#6 - “Could not resolve host: mirrorlist.centos.org; 未知的错误“
linux·python·centos
大熊程序猿3 小时前
xxl-job docker 安装
运维·docker·容器
code_abc3 小时前
Shell 脚本编程基础:变量
linux