热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

ProFTPd服务器中如何配置虚拟用户

wgetftp://mirror.wrpn.net/proftpd/distrib/source/proftpd-1.3.2.tar.bz2tarjxfproftpd-1.3.2.tar.bz2cdproftpd-1.3.2./configure--prefix/home/proftpd--disable-ipv6ma

wget ftp://mirror.wrpn.net/proftpd/distrib/source/proftpd-1.3.2.tar.bz2

tar jxf proftpd-1.3.2.tar.bz2

cd proftpd-1.3.2

./configure --prefix=/home/proftpd --disable-ipv6

make && make install

vi /etc/rc.local

vi /home/proftpd/etc/proftpd.conf

修改端口,

# Port 21 is the standard FTP port.

Port                            2121

# standalone 模式下耗费资源多一点,但配置简单

ServerType                      standalone

#注释掉 编译时已经disable-ipv6,这里如果不注释掉,启动时会报错

#UseIPv6                                off

#修改执行账号

User                            nobody

Group                           nobody

#去掉下面这一行的注释 “#”,这一行是把ftp用户限定在自己的目录下,禁止切换到上层目录

DefaultRoot ~

默认情况下proftpd是通过系统账号做认证的,或许你也跟我一样 不愿意用这种方式。那么有什么方式呢?查阅资料之后发现有另外两种方式。
一,采用mysql方式存储虚拟用户,如此一来用户容量巨大。比较适合公开ftp server,对于我的应用过于夸张了。这里也不做详细介绍了,有兴趣的可以去搜索一下,资料很多。下面说一下资料并不多的方法。
二,文件形式的虚拟用户存储方案。
首先在proftpd.conf中添加以下两行:

AuthUserFile /home/proftpd/etc/ftp.passwd   # 指定认证文件的存储路径

AuthOrder mod_auth_file.c mod_auth_unix.c   # 这两个文件是proftpd认证是的先后次序, mod_auth_file.c是我们要用的文件认证形式,mod_auth_unix.c是以系统账号认证

然后要做的就是创建认证文件(/home/proftpd/etc/ftp.passwd),这里需要用到proftp提供的一个工具:ftpasswd,可以在proftp源文件中contrib目录下找到:

#复制到指定目录

cp contrib/ftpasswd /home/proftpd/sbin/

最后就是添加账号:

./contrib/ftpasswd --file /home/proftpd/etc/ftp.passwd --name ftpusername --passwd --home=/data/htdocs --shell=/sbin/nologin

执行后会提示输入账号密码,确认之后创建完毕

最最后,启动proftpd

/home/proftpd/sbin/proftpd start

接下来就可以用指定的端口、账号密码连接新proftpd了~

Notice:
proftpd默认情况下是不支持断点续传的,但是你又需要此功能?哈哈,很简单,只需要在proftpd.conf中添加以下两行,然后重启就ok

# break point

AllowRetrieveRestart on

AllowStoreRestart on

如果想允许ftp用户修改文件的权限设置,可以修改以下设置

DenyAll #禁用; AllowAll 启用全部用户; AllowUser abc 只允许abc用户

参考:http://www.proftpd.org/docs/howto/Limit.html

增加一些可能用到的命令:

#立即关闭的命令

/usr/local/proftpd/sbin/ftpshut +0

#关闭命令为

/usr/local/proftpd/sbin/ftpshut

ftpshut [ -l min ] [ -d min ] time [ warning-message ... ]

-l min: 在ftp关闭服务之前的几分钟内,尝试建立新的ftp连接均不被接受

-d min: 在ftp关闭服务之前的几分钟内,已经建立的ftp连接将被中止

time: 在多少时间后,服务器将关闭ftp服务,格式有两种

+number 经过number分钟后关闭

MMHH 在今天MM:HH服务器将关闭

举例:
在半小时后,将FTP服务关闭,在这之前的20分钟不可接受任何新的ftp连接,已经建立的在服务关闭前10分钟强制断线,并在客户端显示“FTP Server Will shutdown at time”

ftpshut -l 20 -d 10 +30 "FTP Server Will shutdown at time"

其实ftpshut就是产生/etc/shutmsg ,你只要删除这个文件ftp又可以重新服务,或者
直接用

ftpshut -R

比较多的应用是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:是否允许登陆的权限

针对上面这个Limit所应用的对象,又包括以下范围
AllowUser 针对某个用户允许的Limit
DenyUser 针对某个用户禁止的Limit
AllowGroup 针对某个用户组允许的Limit
DenyGroup 针对某个用户组禁止的Limit
AllowAll 针对所有用户组允许的Limit
DenyAll 针对所有用户禁止的Limit

关于限制速率的参数为:
TransferRate STOR|RETR 速度(Kbytes/s) user 使用者

配置proftpd可以断点续传:

AuthUserFile /etc/proftpd/ftp.passwd 虚拟用户文件
AuthOrder mod_auth_file.c 认证mod

RequireValidShell off 不使用有效的shell



AllowOverwrite on 可以覆盖
allowretrieverestart on
allowstorerestart on



推荐阅读
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • 搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的详细步骤
    本文详细介绍了搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的步骤,包括环境说明、相关软件下载的地址以及所需的插件下载地址。 ... [详细]
  • 这是原文链接:sendingformdata许多情况下,我们使用表单发送数据到服务器。服务器处理数据并返回响应给用户。这看起来很简单,但是 ... [详细]
  • 本文介绍了使用AJAX的POST请求实现数据修改功能的方法。通过ajax-post技术,可以实现在输入某个id后,通过ajax技术调用post.jsp修改具有该id记录的姓名的值。文章还提到了AJAX的概念和作用,以及使用async参数和open()方法的注意事项。同时强调了不推荐使用async=false的情况,并解释了JavaScript等待服务器响应的机制。 ... [详细]
  • Java实战之电影在线观看系统的实现
    本文介绍了Java实战之电影在线观看系统的实现过程。首先对项目进行了简述,然后展示了系统的效果图。接着介绍了系统的核心代码,包括后台用户管理控制器、电影管理控制器和前台电影控制器。最后对项目的环境配置和使用的技术进行了说明,包括JSP、Spring、SpringMVC、MyBatis、html、css、JavaScript、JQuery、Ajax、layui和maven等。 ... [详细]
  • PHP设置MySQL字符集的方法及使用mysqli_set_charset函数
    本文介绍了PHP设置MySQL字符集的方法,详细介绍了使用mysqli_set_charset函数来规定与数据库服务器进行数据传送时要使用的字符集。通过示例代码演示了如何设置默认客户端字符集。 ... [详细]
  • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]
  • 本文介绍了在Hibernate配置lazy=false时无法加载数据的问题,通过采用OpenSessionInView模式和修改数据库服务器版本解决了该问题。详细描述了问题的出现和解决过程,包括运行环境和数据库的配置信息。 ... [详细]
  • Oracle Database 10g许可授予信息及高级功能详解
    本文介绍了Oracle Database 10g许可授予信息及其中的高级功能,包括数据库优化数据包、SQL访问指导、SQL优化指导、SQL优化集和重组对象。同时提供了详细说明,指导用户在Oracle Database 10g中如何使用这些功能。 ... [详细]
  • 禁止程序接收鼠标事件的工具_VNC Viewer for Mac(远程桌面工具)免费版
    VNCViewerforMac是一款运行在Mac平台上的远程桌面工具,vncviewermac版可以帮助您使用Mac的键盘和鼠标来控制远程计算机,操作简 ... [详细]
  • 原文地址:https:www.cnblogs.combaoyipSpringBoot_YML.html1.在springboot中,有两种配置文件,一种 ... [详细]
  • 在说Hibernate映射前,我们先来了解下对象关系映射ORM。ORM的实现思想就是将关系数据库中表的数据映射成对象,以对象的形式展现。这样开发人员就可以把对数据库的操作转化为对 ... [详细]
  • 本文介绍了在SpringBoot中集成thymeleaf前端模版的配置步骤,包括在application.properties配置文件中添加thymeleaf的配置信息,引入thymeleaf的jar包,以及创建PageController并添加index方法。 ... [详细]
  • 本文介绍了使用PHP实现断点续传乱序合并文件的方法和源码。由于网络原因,文件需要分割成多个部分发送,因此无法按顺序接收。文章中提供了merge2.php的源码,通过使用shuffle函数打乱文件读取顺序,实现了乱序合并文件的功能。同时,还介绍了filesize、glob、unlink、fopen等相关函数的使用。阅读本文可以了解如何使用PHP实现断点续传乱序合并文件的具体步骤。 ... [详细]
  • 数据库(外键及其约束理解)(https:www.cnblogs.comchenxiaoheip6909318.html)My ... [详细]
author-avatar
丁木China
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有