centos7安装配置proftp(ftp安装for-linux)

环境:centos7

1、关于linux下ftp介绍

复制代码
Linux常用哪几种FTP服务器?Linux常用FTP服务器有哪几种?几种FTP服务器之间有什么区别?
oftpd、ftpd、vsftpd、pure-ftpd、proftpd、wu-ftpd、glftpd

Linux 下有好几款很不错的 ftp server,各有特点,适用于不同的应用场合。根据其可配置性大概可以分为三类:弱、中等、高。
 1、功能比较简单的有ftpd和oftpd,前者与ftp客户端工具ftp类似,只有标准的功能,此外支持SSL。oftpd是一款非常小巧的匿名ftp服务器。
2、可配制型居中的主要是vsftpd和pure
-ftpd。 这两个侧重于安全、速度和轻量级,在大型ftp服务器上用得比较多,尤其是vsftpd,
这类服务器对用户认证和权限控制比较简单,更注重安全型和速度。 它们都支持虚拟用户,但用户权限依赖于文件的系统权限,不支持针对目录的权限配置,
在配置依赖于目录的权限时很麻烦。pure-ftpd相对vsftpd 要强大一些,支持的用户认证方式也比较多。 3、配置性强的要数proftpd、wu-ftpd和glftpd。proftpd 的配置方式跟Apache非常类似,支持虚拟服务器,可针对目录、虚拟用户进行权限配制,可继承和覆盖,
还支持类似于.htaccess的. ftpaccess,此外还有众多的模块可以帮助实现一些特定的功能。wu-ftpd可以说是proftpd的前身,在早期用得比较多,
proftpd就是针对wu-ftpd一些致命的弱点,重新写的同样定位的ftp服务器,差不多可以取代wu-ftpd。glftpd也是以功能强大著称,可配置性非常强,
能够完成一些很独特的任务,比如自动CRC校验等,在0day等组织用得很多。由于这几款软件过于强大,存在不少安全隐患,需要常打补丁。
复制代码

2、proftpd的安装及简单配置

复制代码
1、下载pfofptd
   a、百度云提取:链接: https://pan.baidu.com/s/1_IGnnsmfeZDVmdR_dXWU1A 提取码: z5pa
   b、直接下载:wget ftp://ftp.proftpd.org/distrib/source/proftpd-1.3.7a.tar.gz
2、文件解压
   tar -zxvf proftpd-1.3.7a.tar.gz
3、安装编译依赖包
   yum install gcc gcc-c++ autoconf automake
4、配置并制定安装和配置文件路径
  cd  cd proftpd-1.3.7a/  && \
  ./configure --prefix=/usr/local/proftpd --sysconfdir=/usr/local/proftpd
5、编译安装
   make  && make install
复制代码

3、启动和错误处理

复制代码
1、启动
  /usr/local/proftpd/sbin/proftpd
2、启动会报错
  这里报错:- Fatal: Group: Unknown group 'nogroup'.
3、处理修改配置文件
   vi /usr/local/proftpd/proftpd.conf
   --修改前
   # Set the user and group under which the server will run.
  User                             nobody
  Group                            nogroup
  --修改后
  # Set the user and group under which the server will run.
  User                             nobody
  Group                            nobody
4、再次启动即可
  /usr/local/proftpd/sbin/proftpd
复制代码

4、配置用户及目录

复制代码
1、建目录和用户
  建立目录 mkdir -p /data/
  建立用户 useradd -d /data/ftp -s /sbin/nologin ftp_user
  配置密码 echo ftp_user|passwd --stdin ftp_user
 修改权限 chown -R ftp_user:ftp_user /data/ftp
2、添加配置文件,在配置文件末尾添加如下代码
vi /usr/local/proftpd/proftpd.conf
<Directory /data/ftp> HideNoAccess off <Limit STOR MKD> Order deny,allow allowUser ftp_user </Limit> </Directory> 3、重启服务 ps -ef|grep proftpd|grep -v grep|awk '{print $2}'|xargs kill -9 #killproftpd进程 /usr/local/proftpd/sbin/proftpd #启动服务 4、登录ftp查看
复制代码

5、问题处理ftp登录shell为nologin无法登录

1
2
登陆问题表现:USER ftp_user (Login failed): Invalid shell: '/sbin/nologin'
处理:echo /sbin/nologin’ >> /etc/shells

6、Limit权限详情

复制代码
#<LIMIT>容器内有以下权限:
#       CWD:改变所在目录
#       MKD/XMKD:新建目录
#       RNFR/RNTO:重命名目录的(一起使用)
#       DELE:删除文件
#       RMD/XRMD:删除目录
#       RETR:下载
#       STOR:上传
#       LOGIN:登陆
#       READ:包括了RETR,SITE,SIZE,STAT
#       WRITE:包括了APPE, DELE, MKD, RMD, RNTO, STOR, XMKD, XRMD
#       DIRS:包括了DUP, CWD, LIST, MDTM, NLST, PWD, RNFR, XCUP, XCWD, XPWD
#       ALL:包括了READ WRITE DIRS
#以上权限结合动作一起使用:
#       AllowUser:允许某个用户
#       DenyUser:禁止某个用户
#       AllowGroup:允许某个用户组
#       DenyGroup:禁止某个用户组
#       AllowAll:允许所有用户
#       DenyAll:禁止所有用户
复制代码

 7、配置文件详解

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
# cat /usr/local/proftpd/proftpd.conf
 
ServerName   "babydragon's FTP"   #服务器的名字
ServerType   standalone       #proftpd运行的方式,有standalone和inetd
DeferWelcome  off   #只有在认证用户之后才显示欢迎信息
 
Port         21     #ftp连接端口
Umask        002    #新文件的权限掩码
TimeoutLogin     120    #登陆时允许idle的时间
TimeoutIdle     600    #登陆后允许idle的时间
TimeoutNoTransfer  900    #没有数据传输时允许idle的时间
 
AllowStoreRestart    on   #允许断点续上传
AllowRetrieveRestart  on   #允许断点续下载
 
PassivePorts 50000 65534    #指定数据端口的范围
 
User          nobody   #以nobody,nogroup的身份运行程序
Group          nogroup
 
RequireValidShell    no       #用户是否拥有shell,关闭安全
 
MaxClientsPerHost    2        #每个ip只能有两个连接
MaxClientsPerUser    1        #每个帐号只能有一个连接
 
DefaultRoot     ~   #ftp的根目录,~限制用户只能访问自己的目录
UseReverseDNS    off  #关闭DNS反向查询,节省连接时间
 
TransferLog     /var/spool/syslog/proftpd/xferlog.legacy #数据传输记录
 
 
LogFormat    auth  "%v %P %h %t "%r/" %s"
LogFormat    write  "%h %l %u %t "%r/" %s %b"
# 定义了几种日志格式,可以根据自己的需要定制:
#    %a:客户ip
#    %A:匿名用户名(就是匿名用户的password)
#    %b:发送请求的字节数
#    %d:目录名(相对路径)
#    %D:目录名(绝对路径)
#    %f:上传或下载的文件名(绝对路径)
#    %F:上传或下载的文件名(相对路径)
#    %h:客户的域名
#    %L:本服务器ip
#    %m:客户发送的命令
#    %p:本服务器的端口
#    %P:服务进程的id
#    %r:客户发送的整条命令
#    %t:本地时间
#    %T:传送文件所用的时间(秒)
#    %u:客户登陆的用户名
 
<Global>                    
                       #设置一些全局参数
   DisplayLogin        welcome.msg 
 
#显示~/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的日志
</Global>
 
<Anonymous />
   User          ftp
   Group          ftp   
   UserAlias        anonymous ftp  #匿名用户以ftp用户登陆
   RequireValidShell    no       #用户有没shell也可以使用FTP(安全)
   MaxClients       20       #最大客户数
   MaxInstances      30       #连接的间隔时间
   MaxLoginAttempts    10       #连接的最大次数
 
   <Limit LOGIN>
       Order deny,allow
       Deny from 172.16.0.0/11     #禁止172.16.0.0/11网段访问
       Allow from all
   </Limit>
 
   <Directory pub>
       <Limit READ>
           AllowAll        #所有人在pub目录有读权限
       </Limit>
       <Limit WRITE>
           AllowUser ftpadmin       #ftpadmin用户拥有写权限
           DenyAll             #其他用户无写权限
       </Limit>
           <Directory slow>
       RateReadBPS       1024000     #下载最高速1M/s
       RateReadFreeBytes    10240000    #下载总速度不超过10M/s
   </Directory>
 
   <Directory Incoming>
       <Limit STOR MKD>
           AllowAll        #所有人都可以在incoming目录上传文件,新建目录
       </Limit>
       <Limit WRITE>
           AllowUser ftpadmin       #允许ftpadmin用户写
           DenyAll             #其他用户无写权限
       </Limit>
       RateWriteBPS       1024000    #上传最高速1M/s
       RateWriteFreeBytes    10240000    #上传总速度不超过10M/s
   </Directory>
</Anonymous>

  

posted @   苍茫宇宙  阅读(1526)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)
点击右上角即可分享
微信分享提示