FTP用于计算机之间通过网络进行文件传输。你可以通过FTP在计算机账户间进行文件传输,也可以在账户和桌面计算机之间传输文件,或者访问在线软件归档。
服务器条件:基于VM的Ubuntu虚拟机20.04
1、保证虚拟机处于联网状态,进入特权模式或者用sudo下载vsftpd
apt install vsftpd
2、配置vsftpd,输入以下命令进入vsftpd的配置文件
vim /etc/vsftpd.conf
对配置文件举例:
#这里以下的是对设置的介绍
# You may specify an explicit list of local users to chroot() to their home
# directory. If chroot_local_user is YES, then this list becomes a list of
# users to NOT chroot().
# (Warning! chroot'ing can be very dangerous. If using chroot, make sure that
# the user does not have write access to the top level directory within the
# chroot)
#此后是可以选择的设置
#chroot_local_user=YES
#chroot_list_enable=YES
根据介绍判断是否需要开启该功能,若是开启的话将#chroot_local_user=YES改为chroot_local_user=YES即可,也就是删除前面的#(也可以直接写),以下是常用的一些:
# 禁止匿名用户anonymous登录
#anonymous_enable=NO
# 允许本地用户登录
#local_enable=YES
# 让登录的用户有写权限(上传,删除)
#write_enable=YES
# 默认umask
#local_umask=022
# 把传输记录的日志保存到/var/log/vsftpd.log
#xferlog_enable=YES
#xferlog_file=/var/log/vsftpd.log
#xferlog_std_format=NO
# 允许ASCII模式上传
#ascii_upload_enable=YES
# 允许ASCII模式下载
#ascii_download_enable=YES
# 使用20号端口传输数据
#connect_from_port_20=YES
# chroot_local_user设置了YES,那么所有的用户默认将被chroot,
# 用户目录被限制在了自己的home下,无法向上改变目录。
# chroot_list_enable设置了YES,即让chroot用户列表有效。
# 如果chroot_local_user设置了YES,那么chroot_list_file
# 设置的文件里,是不被chroot的用户(可以向上改变目录)
# 如果chroot_local_user设置了NO,那么chroot_list_file
# 设置的文件里,是被chroot的用户(无法向上改变目录)
#chroot_list_enable=YES
# touch /etc/vsftpd/chroot_list 新建
#chroot_list_file=/etc/vsftpd/chroot_list
#use_localtime=YES
# 以standalone模式在ipv4上运行
listen=YES
# PAM认证服务名,这里默认是vsftpd,在安装vsftpd的时候已经创建了这个pam文件,
# 在/etc/pam.d/vsftpd,根据这个pam文件里的设置,/etc/vsftpd/ftpusers
# 文件里的用户将禁止登录ftp服务器,比如root这样敏感的用户,所以你要禁止别的用户
# 登录的时候,也可以把该用户追加到/etc/vsftpd/ftpusers里。
pam_service_name=vsftpd
# 重启 vsftpd
service vsftpd restart
下面是我设置的:
listen=NO
listen_ipv6=YES
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
use_localtime=YES
xferlog_enable=YES
connect_from_port_20=YES
chroot_local_user=YES
secure_chroot_dir=/var/run/vsftpd/empty
pam_service_name=vsftpd
rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
ssl_enable=NO
pasv_enable=Yes
pasv_min_port=10000
pasv_max_port=10100
allow_writeable_chroot=YES
3、更新防火墙
FTP服务默认是21号端口,这里我们开放20和21号端口(默认禁止FTP通信):
ufw allow from any to any port 20,21,10000:10100 proto tcp
4、重启vsftpd服务
service vsftpd restart
5、建立FTP服务器的用户
useradd -m ftpuser
passwd ftpuser
//第一次输入密码
New password:
//第二次输入密码
Retype new password:
//账户设置成功
passwd: password updated successfully
6、验证登录
将一个文件存入FTP服务器中(/home/ftpuser目录存放上传到服务器的文件):
//建立一个FTP-TEST文件,里面打印FTP TESTING字符串
bash -c "echo FTP TESTING > /home/ftpuser/FTP-TEST"
终端输入:
ftp:127.0.0.1 //可以将127.0.0.1换成本机IP
输入账户名和密码:
这里由于我存入的文件有中文,在这里显示的乱码(未解决!!!!求解!!!!)
我们在Windows机上也可以访问,打开文件管理器-此电脑-快捷访问-ftp:ip地址
这样我们就可以把服务器上的文件得到了!!!
总结:
1、 FTP主要是用来下载一些文件,可以把本次设置的Linux服务器当作一个网盘存放文件,当然你要用FTP服务的话,服务器要联网(如果条件允许的话你可与租一台服务器)。
2、vsftpd服务登录后中文乱码问题没有解决,我用FileZilla FTP Client软件进行传输,在站点管理器中设置了强制UTF-8字符集,在vsftp配置文件也开启了utf8_systemtype但依旧显示的乱码,求广大家人们给出有效解决意见(拜托!!!!)。
版权归原作者 爱躺平的咸鱼 所有, 如有侵权,请联系我们删除。