vsftpd安装配置
vsftpd安装配置
vsftpd测试服务器:
192.168.1.191
1、安装:
2、匿名用户最基本配置(生产上不设置匿名用户访问):
允许匿名用户访问
允许匿名用户上传文件并可以创建目录:
修改匿名目录所有者(默认是root):
设置允许匿名用户可上传可读写:
注:如果去掉这一条,匿名用户可以创建,上传,但是不能删除。
3、启动vsftp服务:
4、正式部署vsftpd(废弃原来默认的ftp目录:/var/ftp):
首先修改配置文件
备份配置文件
加入以下内容:
5、创建宿主用户
创建用户 ftpuser 指定 /vsftpd 目录:
设置用户 ftpuser 的密码:
把 /vsftpd 的所有权给ftpuser.root:
建立虚拟用户文件:
touch /etc/vsftpd/vuser_passwd
编辑虚拟用户名单文件:
第一行账号,第二行密码,注意:不能使用root做用户名,系统保留。
编辑内容:
6、生成虚拟用户数据文件
7、创建用户配置
每个文件(ftp1和ftp2写入如下内容,local_root=/vsftpd/ftp1#这里写入这个用户的实际存储路劲):
8、创建用户目录
修改权限:
注:原来ftp安装完的默认目录/var/ftp可以废弃。
9、服务启动
10、生成虚拟用户的PAM文件
修改vsftpd文件内容(加入第二和第三行,下面的都全部注释,注意下面是64位操作系统,如果是32位的话lib64需要改成lib):
vim vsftpd
内容:
11、客户端调试
1.首先每次更改配置需要重启vsftpd服务。
2.上面每个配置文件中的内容最好是手动键入(曾经的我直接粘贴进去,cat就是没问题,但是粘贴进去就是不行)。
3.客户端windows打开cmd到后台进行连接,网页和资源管理器里面都会有缓存也看不到报错。
4.服务器tail -f /var/log/secure查看日志(也可以tail -f /var/log/messages,这个看不出什么,前者更精准)。
查看日志:
tail -f /var/log/secure
5.客户端报错示例(坑了我好久,它说chroot没有读到/etc/vsftpd/chroot_list这个文件,所以我们新建这个文件就行,记得重启服务)。
建立文件:
6.如果虚拟用户登录到自己的宿主目录后,不能上传文件的话,服务器端需要在宿主目录里面再新建一个文件夹,给这文件夹777权限,就可以了(直接把宿主目录设置777就会登录不了)。
7.新增用户的话,需要在/etc/vsftpd/vsuser.passwd里面追加用户(删除就是删除用户),
记得使用db_load重新生成vsuser.passwd文件即可,vuser_confi里面新建一个新建账户的权限文件,宿主目录记得新建存储文件。
8.建议使用ftp工具和cmd验证。
测试1:
在ftp>下输入:
user
注:输入user可以重新输入用户名和密码。
测试2:
注:输入ftp1用户名,进入的是ftp1用户的目录(ftp1),输入ftp2用户名,进入的是ftp2用户的目录(ftp2)。
12、修改端口号(测试的时候没有修改成2121,而是用默认的21端口)
1.在/etc/vsftpd/vsftpd.conf文件中增加listen_port=21(这里默认是21)。
2.在vim /etc/services文件中修改如下内容。
注意:上面修改的只是链接端口号,既然更改了连接端口号,别忘记访问的时候修改端口。
既然我们设置的是被动模式(服务器被动打开数据端口,只有在数据链接的时候才会使用,
下面我们用ftp工具能成功连接,当打开某个文件夹的时候(请求数据的时候),才会使用该端口,
但是我这里使用了iptables,之允许了2121通过我们设置的是10060到10090端口,具体如下)。
设置防火墙:
注:正常情况下使用默认21端口即可,考虑到安全,可以修改为其它端口。
转载至:https://www.cnblogs.com/suixhxy/p/14916989.html
__EOF__
本文链接:https://www.cnblogs.com/strugger-0316/p/15101625.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 使用C#创建一个MCP客户端
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 按钮权限的设计及实现