热门标签 | 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



推荐阅读
  • Docker的安全基准
    nsitionalENhttp:www.w3.orgTRxhtml1DTDxhtml1-transitional.dtd ... [详细]
  • 1:有如下一段程序:packagea.b.c;publicclassTest{privatestaticinti0;publicintgetNext(){return ... [详细]
  • 本周信息安全小组主要进行了CTF竞赛相关技能的学习,包括HTML和CSS的基础知识、逆向工程的初步探索以及整数溢出漏洞的学习。此外,还掌握了Linux命令行操作及互联网工作原理的基本概念。 ... [详细]
  • PHP 5.2.5 安装与配置指南
    本文详细介绍了 PHP 5.2.5 的安装和配置步骤,帮助开发者解决常见的环境配置问题,特别是上传图片时遇到的错误。通过本教程,您可以顺利搭建并优化 PHP 运行环境。 ... [详细]
  • 深入理解Cookie与Session会话管理
    本文详细介绍了如何通过HTTP响应和请求处理浏览器的Cookie信息,以及如何创建、设置和管理Cookie。同时探讨了会话跟踪技术中的Session机制,解释其原理及应用场景。 ... [详细]
  • 深入理解 SQL 视图、存储过程与事务
    本文详细介绍了SQL中的视图、存储过程和事务的概念及应用。视图为用户提供了一种灵活的数据查询方式,存储过程则封装了复杂的SQL逻辑,而事务确保了数据库操作的完整性和一致性。 ... [详细]
  • 本文深入探讨 MyBatis 中动态 SQL 的使用方法,包括 if/where、trim 自定义字符串截取规则、choose 分支选择、封装查询和修改条件的 where/set 标签、批量处理的 foreach 标签以及内置参数和 bind 的用法。 ... [详细]
  • 解决PHP与MySQL连接时出现500错误的方法
    本文详细探讨了当使用PHP连接MySQL数据库时遇到500内部服务器错误的多种解决方案,提供了详尽的操作步骤和专业建议。无论是初学者还是有经验的开发者,都能从中受益。 ... [详细]
  • 本文详细介绍了如何通过多种编程语言(如PHP、JSP)实现网站与MySQL数据库的连接,包括创建数据库、表的基本操作,以及数据的读取和写入方法。 ... [详细]
  • UNP 第9章:主机名与地址转换
    本章探讨了用于在主机名和数值地址之间进行转换的函数,如gethostbyname和gethostbyaddr。此外,还介绍了getservbyname和getservbyport函数,用于在服务器名和端口号之间进行转换。 ... [详细]
  • 360SRC安全应急响应:从漏洞提交到修复的全过程
    本文详细介绍了360SRC平台处理一起关键安全事件的过程,涵盖从漏洞提交、验证、排查到最终修复的各个环节。通过这一案例,展示了360在安全应急响应方面的专业能力和严谨态度。 ... [详细]
  • MySQL中枚举类型的所有可能值获取方法
    本文介绍了一种在MySQL数据库中查询枚举(ENUM)类型字段所有可能取值的方法,帮助开发者更好地理解和利用这一数据类型。 ... [详细]
  • 本文探讨了在不使用服务器控件的情况下,如何通过多种方法获取并修改页面中的HTML元素值。除了常见的AJAX方式,还介绍了其他可行的技术方案。 ... [详细]
  • 本文详细介绍了如何通过命令行启动MySQL服务,包括打开命令提示符窗口、进入MySQL的bin目录、输入正确的连接命令以及注意事项。文中还提供了更多相关命令的资源链接。 ... [详细]
  • 解读MySQL查询执行计划的详细指南
    本文旨在帮助开发者和数据库管理员深入了解如何解读MySQL查询执行计划。通过详细的解析,您将掌握优化查询性能的关键技巧,了解各种访问类型和额外信息的含义。 ... [详细]
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社区 版权所有