Linux搭建FTP全过程(最详细)
写在前面:一定添加下面的两个虚拟用户!
一、安装VSFTP
1.为了方便后续操作,现将用户切换到root用户 su -
2.查看是否已经安装vsftpd
方法一:
[root@localhost ~]# rpm -q vsftpd
vsftpd-3.0.2-22.el7.x86_64
方法二:
[root@localhost ~]# vsftpd -v
yum安装vsftpd
[root@localhost ~]# yum -y install vsftpd
3.安装完成后,查看位置
[root@localhost ~]# whereis vsftpd
vsftpd: /usr/sbin/vsftpd /etc/vsftpd /usr/share/man/man8/vsftpd.8.gz
4.直接启动VSFTP服务
[root@localhost ~]# systemctl start vsftpd.service
[root@localhost ~]#
5.查看是否启动成功
[root@localhost ~]# netstat -npal|grep vsftpd
tcp6 0 0 :::21 ::😗 LISTEN 4432/vsftpd
可以看到服务已经启动,端口为21,pid为4432
6.关闭SELinux限制,添加防火墙白名单
①设置关闭SELinux对ftp的限制
[root@localhost ~]# getsebool -a | grep ftp
ftp_home_dir --> on
ftpd_anon_write --> off
ftpd_connect_all_unreserved --> off
ftpd_connect_db --> off
ftpd_full_access --> on
ftpd_use_cifs --> off
ftpd_use_fusefs --> off
ftpd_use_nfs --> off
ftpd_use_passive_mode --> off
httpd_can_connect_ftp --> off
httpd_enable_ftp_server --> off
sftpd_anon_write --> off
sftpd_enable_homedirs --> off
sftpd_full_access --> off
sftpd_write_ssh_home --> off
tftp_anon_write --> off
tftp_home_dir --> off
[root@localhost ~]# setsebool -P ftpd_full_access on
②将ftp加入防火墙白名单
firewall-cmd --permanent --zone=public --add-service=ftp
firewall-cmd --reload
查看防火墙状态:firewall-cmd --list-all
二、配置修改
1.修改配置文件
[root@localhost ~]# cd /etc/vsftpd/
[root@localhost vsftpd]# vim vsftpd.conf
不允许匿名访问(不登录默认访问某目录/var/ftp)
anonymous_enable=NO
允许ascii文件上传和下载
ascii_upload_enable=YES
ascii_download_enable=YES
将用户限制在为其配置的主目录
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
三、匿名登录
匿名登陆
如果设置anonymous_enable=NO表示可以匿名登陆,保存后重新启动vsftp服务systemctl restart vsftpd.service),即可以匿名登陆ftp服务(ftp ipaddr),密码是空,对应目录是/var/ftp,如果你在配置里面配置了anonymous_enable=NO,匿名就无法登录。
四、多用户配置
1.首先需要在vsftp.conf添加如下配置
2.创建宿主用户
#创建宿主主文件夹
cd /home
mkdir vsftpd
创建用户 ftpuser 指定 /home/vsftpd
目录
-s /sbin/nologin ftpuser 表示不允许该用户通过命令行方式登录
useradd -g root -M -d /home/vsftpd -s /sbin/nologin ftpuser
# 设置用户 ftpuser 的密码
passwd ftpuser
# 把 /home/vsftpd 的所有权给ftpuser.root
chown -R ftpuser.root /home/vsftpd
3.创建虚拟用户信息文件
vsftp目录下
cd /etc/vsftpd/
创建用户信息文件
touch vuser_passwd
vim vuser_passwd
#编辑如下内容,创建虚拟账户信息,奇数行为用户名,偶数行为密码
ftp-user1
123456
ftp-user2
123456
4.生成虚拟用户数据文件
db_load -T -t hash -f /etc/vsftpd/vuser_passwd /etc/vsftpd/vuser_passwd.db
chmod 600 /etc/vsftpd/vuser_passwd.db
在当前文件夹下生成一个vuser_passwd.db文件
5.编辑pam认证文件
vim /etc/pam.d/vsftpd
将其他都注释掉,添加下面两行;
注:db=/etc/vsftpd/vuser_passwd 中的vuser_passwd 是你生成的虚拟用户的db文件,这里不要加扩展名。
系统为32位:
auth required pam_userdb.so db=/etc/vsftpd/vuser_passwd account
required pam_userdb.so db=/etc/vsftpd/vuser_passwd
系统为64位:
auth required /lib64/security/pam_userdb.so db=/etc/vsftpd/vuser_passwd
account required /lib64/security/pam_userdb.so db=/etc/vsftpd/vuser_passwd
查看系统位数
getconf LONG_BIT
6.为虚拟账户创建访问根目录,要在宿主用户下
下面是目录结构
/home/vsftpd
修改权限
chmod 777 ftp-user1
chmod 777 ftp-user2
7.创建虚拟用户配置目录
8.创建chroot_list
9.重启VSFTP服务
10.可以在windows中访问测试,或者使用FileZilla连接
linux中测试
ftp 服务器地址
问题汇总:
1、解决报错 500 OOPS: vsftpd: refusing to run with writable root inside chroot()
添加配置
allow_writeable_chroot=YES # 如果启用了限定用户在其主目录下需要添加这个配置。
2、登录报错530,日志显示
pam_unix(vsftpd:auth): check pass; user unknown
检查一下/etc/pam.d/vsftpd文件配置,一般是pam认证文件配置错误。
转载自C N:小明同鞋
原文链接:https://blog.csdn.net/sinat_30802291/article/details/81706152
__EOF__

本文链接:https://www.cnblogs.com/traveller-hzq/p/15343411.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现