Skip to main content

Ubuntu20.04安装vsftpd

· 4 min read
1cobot
开发者

修改主机名

root@ubuntu:~# hostnamectl set-hostname vsftpd

更新软件源

root@vsftpd:~# apt update

安装vsftpd服务

# 安装
root@vsftpd:~# apt install -y vsftpd

# 查看服务状态
root@vsftpd:~# systemctl status vsftpd.service
● vsftpd.service - vsftpd FTP server
Loaded: loaded (/lib/systemd/system/vsftpd.service; enabled; vendor preset: enabled)
Active: active (running) since Wed 2024-05-15 13:26:54 UTC; 29s ago
Main PID: 3057 (vsftpd)
Tasks: 1 (limit: 4583)
Memory: 820.0K
CGroup: /system.slice/vsftpd.service
└─3057 /usr/sbin/vsftpd /etc/vsftpd.conf

May 15 13:26:54 vsftpd systemd[1]: Starting vsftpd FTP server...
May 15 13:26:54 vsftpd systemd[1]: Started vsftpd FTP server.

设置访问用户

在FTP安装完成后,会默认为我们创建用户名为ftp的用户,默认无密码.

# 为ftp用户设置密码
root@vsftpd:~# passwd ftp
New password:
Retype new password:
passwd: password updated successfully

# 创建ftp用户的家目录,即ftp文件的存储路径
root@vsftpd:~# mkdir /home/ftp

# 设置ftp目录的权限
root@vsftpd:~# chmod 777 /home/ftp

配置FTP服务

配置文件存放路径:

/etc/vsftpd.conf

修改如下:

#取消如下配置前的注释符号:
local_enable=YES(是否允许本地用户登录)
write_enable=YES(是否允许本地用户写的权限)
chroot_local_user=YES(是否将所有用户限制在主目录)
chroot_list_enable=YES(是否启动限制用户的名单)
chroot_list_file=/etc/vsftpd.chroot_list(可在文件中设置多个账号)
#修改如下配置
anonymous_enable=NO (不允许匿名访问,必须登录)
chown_uploads=YES (允许上传改变)
#并且添加如下内容
local_root=/home/ftp (访问目录)
allow_writeable_chroot=YES

同时在/etc下创建vsftpd.chroot_list文件,这个文件创建完成保持为空即可

root@vsftpd:~# touch /etc/vsftpd.chroot_list

重启服务

root@vsftpd:~# systemctl restart vsftpd.service 
root@vsftpd:~# systemctl status vsftpd.service
● vsftpd.service - vsftpd FTP server
Loaded: loaded (/lib/systemd/system/vsftpd.service; enabled; vendor preset: enabled)
Active: active (running) since Wed 2024-05-15 13:36:08 UTC; 1s ago
Process: 3791 ExecStartPre=/bin/mkdir -p /var/run/vsftpd/empty (code=exited, status=0/SUCCESS)
Main PID: 3801 (vsftpd)
Tasks: 1 (limit: 4583)
Memory: 740.0K
CGroup: /system.slice/vsftpd.service
└─3801 /usr/sbin/vsftpd /etc/vsftpd.conf

May 15 13:36:08 vsftpd systemd[1]: Starting vsftpd FTP server...
May 15 13:36:08 vsftpd systemd[1]: Started vsftpd FTP server.

测试

root@vsftpd:~# ftp localhost
Connected to localhost.
220 (vsFTPd 3.0.5)
Name (localhost:root): ftp
331 Please specify the password.
Password:
530 Login incorrect.
Login failed.
ftp>

如果登录ftp总是出现密码错误,可以将/etc/vsftpd.conf配置文件的pam_service_name=vsftpd改为pam_service_name=ftp,即可解决。

pam_service_name=ftp

修改完成之后再次重启服务,测试如下:

root@vsftpd:~# ftp localhost
Connected to localhost.
220 (vsFTPd 3.0.5)
Name (localhost:root): ftp
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp>

FTP客户端测试

这里使用filezilla演示:
新建连接站点:

弹出提示,点击信任进入下一步:

随即登录成功:

创建文件测试:

通过Linux服务端查看文件是否存在:

root@vsftpd:~# cd /home/ftp/
root@vsftpd:/home/ftp# ls
windows_client
root@vsftpd:/home/ftp#