每次搭建都出问题,改一下也出问题,我都要炸了,这里把觉得写个长期更新的大总结。
1,我现在的配置(这个配置是可以登陆进去看的,但是不能上传)
root@debian:~# cat /etc/vsftpd.conf
#begin my configurations
listen=YES
listen_address=192.168.1.108
connect_from_port_20=YES
anonymous_enable=NO
use_localtime=YES
local_enable=YES
local_root=/home/guoyanzhang/share/myftp
xferlog_enable=YES
local_umask=022
utf8_filesystem=YES
tcp_wrappers=YES
#end my configurations
2,配置的权限(非常重要)
root@debian:~# ls -ltr /etc/vsftpd.conf
-rw-r--r-- 1 root root 282 Aug 5 16:56 /etc/vsftpd.conf
没有的话,这个要改成root/root:
root@debian:~# chown root.root /home/guoyanzhang/share/myftp
3,启动,记得是root权限
root@debian:~# sudo service vsftpd restart
root@debian:~# sudo service vsftpd status
● vsftpd.service - vsftpd FTP server
Loaded: loaded (/lib/systemd/system/vsftpd.service; enabled; vendor preset: enabled)
Active: active (running) since Wed 2020-08-05 17:09:56 HDT; 3s ago
Process: 4680 ExecStartPre=/bin/mkdir -p /var/run/vsftpd/empty (code=exited, status=0/SUCCESS)
Main PID: 4681 (vsftpd)
Tasks: 1 (limit: 4915)
Memory: 616.0K
CGroup: /system.slice/vsftpd.service
└─4681 /usr/sbin/vsftpd /etc/vsftpd.conf
Aug 05 17:09:56 debian systemd[1]: Starting vsftpd FTP server...
Aug 05 17:09:56 debian systemd[1]: Started vsftpd FTP server.
4,遇到问题1:登陆的时候提示的
500 OOPS: vsftpd: refusing to run with writable root inside chroot()
Login failed.
421 Service not available, remote server has closed connection
解决方法:删除这个配置,因为我最前面给出了的配置是已经删除的,删除之后,保存重启就好。
chroot_local_user=YES
5,目前是可以登陆的
root@debian:~# !ftp
ftp 192.168.1.108
Connected to 192.168.1.108.
220 (vsFTPd 3.0.3)
Name (192.168.1.108:guoyanzhang): guoyanzhang
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> put svn.sh
local: svn.sh remote: svn.sh
200 PORT command successful. Consider using PASV.
550 Permission denied.
6,上一步看到了,可以登陆,但是不能上传,出现问题:
200 PORT command successful. Consider using PASV.
550 Permission denied.
解决:就是加了可写权限
chmod -R 777 /home/guoyanzhang/share/myftp/
root@debian:~# cat /etc/vsftpd.conf
增加
write_enable=YES
7,重启之后,上传成功:
root@debian:~# !ft
ftp 192.168.1.108
Connected to 192.168.1.108.
220 (vsFTPd 3.0.3)
Name (192.168.1.108:guoyanzhang): guoyanzhang
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> put svn.sh
local: svn.sh remote: svn.sh
200 PORT command successful. Consider using PASV.
150 Ok to send data.
226 Transfer complete.
77 bytes sent in 0.01 secs (6.0519 kB/s)
8,此时,也可以局域网其它地方下载
ftp> get svn.sh
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 77 100 77 0 0 15400 0 --:--:-- --:--:-- --:--:-- 15400
ftp> bye
9,又遇到新问题,之前是在本地可以上传,但是局域网内,其它地方不能上传,问题如下:
[admin@huawei internal_storage]$ !ftp
ftp 192.168.1.108
Enter user name:guoyanzhang
Enter user passwd:
ftp> put /mnt/internal_storage/failed.txt
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0
ftp: Failed FTP upload: 553
该问题,我觉得是我使用的ftp客户端设备的问题,我这边用cmd可以上传文件。
10,查看详细配置说明。
man vsftpd vsftpd.conf
2023-09-15更新
11,报错:
C:\Users\guoya>ftp 192.168.5.2 连接到 192.168.5.2。 500 OOPS: vsftpd: not found: directory given in 'secure_chroot_dir':/usr/share/empty 500 OOPS: 远程主机关闭连接。
解决办法:新建一个/usr/share/empty文件件
12,报错:
C:\Users\guoya>ftp 192.168.5.2 连接到 192.168.5.2。 500 OOPS: cannot locate user entry:nobody 远程主机关闭连接。
解决办法:增加nobody用户。执行命令:adduser nobody
13,报错:
C:\Users\guoya>ftp 192.168.5.2 连接到 192.168.5.2。 500 OOPS: vsftpd: cannot locate user specified in 'ftp_username':ftp 远程主机关闭连接。
解决办法:修改配置anonymous_enable=YES为NO,屏蔽它是不行的。
14,报错:
C:\Users\guoya>ftp 192.168.5.2
连接到 192.168.5.2。
500 OOPS: vsftpd: both local and anonymous access disabled!
解决办法:在vsftpd.conf里面增加local_enable=YES。