文章目录
前言
基于FTP协议实现Linux与Winodows实现文件传输,是大学期间的一个小实验。在这里做个总结。
(一) Linux FTP网络环境搭建
实验环境:
- Linux CentOS 7.9
- Xshell 7
- Win10
1.安装ftp包
通过yum安装vxftpd pacakge,并按照如下指令执行
yum -y install vsftpd
修改 vsftpd.conf,此前先备份 成
vsftpd.conf.bak
,防止该配置文件改错导致无法运行。
[root@localhost ~]cd /etc/vsftpd/
[root@localhost vsftpd]ls
ftpusers user_list vsftpd.conf vsftpd_conf_migrate.sh
[root@localhost vsftpd]cp vsftpd.conf vsftpd.conf.bak
[root@localhost vsftpd]ls
ftpusers user_list vsftpd.conf vsftpd.conf.bak vsftpd_conf_migrate.sh
[root@localhost vsftpd]vim vsftpd.conf
vsftpd.conf vsftpd.conf.bak
2. 置匿名用户访问的FTP服务(最大权限)
执行
vim vsftpd.conf
,加上如下图红框所示的配置信息,允许开启匿名用户读写权限。
这里可以先退出vim的编辑模式,为了方便找到上述的红框配置信息在文件中的位置,执行下面的指令就可以看到这些文件所在的具体行数。
grep -n --color=auto 'anon*' vsftpd.conf
然后
vim vsftpd.conf
,退出编辑模式,执行:
:set nu
就可以在vim编辑器中展示行数。
3.为匿名访问ftp的根目录下的pub子目录设置最大权限,以便匿名用户上传数据
chmod777 /var/ftp/pub/
4. 开启服务,关闭防火墙和增强型安全功能
分别执行下面三个指令
systemctl start vsftpd
systemctl stop firewalld
setenforce 0
执行:
ifconfig
,看到网卡 ip为192.168.1.128,保存好,后续连接会用到。
(二)Windows 设置用户名密码访问ftp服务器
- 点击桌面上的我的电脑,然后点击映射网络驱动器
· 选择映射网络驱动器
设置指定网站地址:ftp://虚拟机网卡ip
这里可以设置匿名用户连接ftp也可以设置用户访问ftp连接。这里演示使用有用户名登录FTP.
随后点击登录,若FTP服务器地址填写无误,就会显示虚拟机文件内容:
我们打开“此电脑”,在网络配置中就可以看到我们配置的FTP连接了。
现在 Win+ R 键打开Windows控制台
执行:
ftp192.168.1.128
根据指示输入账户和密码,也就是你前面填写的链接FTP服务器的账号密码:
随后在cmd控制台执行:
cd /etc
ls
测试:Windows下载Linux文件到本地
接下去在虚拟机上创建文件,写点东西。然后去windows界面看看。
[root@localhost vsftpd]cd /var/ftp/pub/
[root@localhost pub]touch test.txt
[root@localhost pub]vim test.txt # 往test.txt中写点东西[root@localhost pub]ls
test.txt
回到Windows控制台进入 /ftp/pub 查看到 test.txt.使用
get test.txt
,windows就会把内容下载到本地。
C:\Users\Asus\test.txt
(本地路径可能有点儿不一样)
(三)Windows 匿名访问ftp服务器
前面操作都是一样的,由于我们之前设置匿名用户允许使用FTP连接 pub 文件夹,选择匿名用户连接FTP服务器过程如下:
这里匿名用户只能访问 pub文件夹。
我们还是使用cmd指令,输入
ftp192.168.1.128
**此时系统还会提示,输入用户名密码:此时由于是匿名登陆,所以用户名为:
anonymous
,
密码任意输入
** 都可以登录成功
后续步骤和之前一样。
问题记录
- “打开ftp服务器上的文件夹时发生错误,请检查是否有权限访问该文件夹"
这是在Windows10 FTP连接虚拟机时出错。原因可能是系统防火墙拦截了连接。
【方案】打开控制面板,搜索“Internet”选项。Internet选项>>高级>>将“使用被动FTP(用于防火墙和DSL调制解调器的兼容)”选项去掉>>确定即可
2.【Linux/CentOS】Boolean ftp_home_dir is not defined
安装完vsftpd软件后,因为CentOS系统的SELinux安全策略默认是没有开启FTP服务,直接访问会报错500 OOPS,所以需要修改为允许使用FTP服务。
目标:希望ftp用户可以访问自己的家目录
尝试:命令行输入
sudo setsebool -P ftp_home_dir 1
发现会报错:Boolean ftp_home_dir is not defined
搜了一下原来是CentOS7开始用 tftp_home_dir 来代替了 ftp_home_dir ,所以应该修改如下:
sudo setsebool -P tftp_home_dir
这时我们再执行:
getsebool -a |grepftp
查看ftp进程。
selinux文件配置在下处更改,更改完 reboot.配置生效。
vim /etc/sysconfig/selinux
- FTP - 550 Failed to change directory
[root@localhost~]setfacl -R -m u:fy36:rwx /var/ftp/pub/
[root@localhost ~]usermod -a -G ftp fy36
[root@localhost ~]chmod g+s /var/ftp/pub/
详见 StackOverFlow
4.输入IP地址,root用户,密码,快速连接,报错:530 Permission denied。
故障排除:
1.首先检查系统是否开启了vsftp服务,如果没有开启,先开启该服务。
方法1.setup–系统服务–自启动服务
方法2.界面设置,service vsftpd restart
2.查看配置
vsftpd的配置,配置文件中限定了vsftpd用户连接控制配置。
vsftpd.ftpusers:位于/etc目录下。它指定了哪些用户账户不能访问FTP服务器,例如root等。
vsftpd.user_list:位于/etc目录下。该文件里的用户账户在默认情况下也不能访问FTP服务器,仅当vsftpd .conf配置文件里启用userlist_enable=NO选项时才允许访问。
vsftpd.conf:位于/etc/vsftpd目录下。来自定义用户登录控制、用户权限控制、超时设置、服务器功能选项、服务器性能选项、服务器响应消息等FTP服务器的配置。
3.配置修改完成后,执行service vsftpd restart重启vsftpd服务。
- linux ftp failed open,Linux VSFTP提示500 OOPS: failed to open xferlog log file:/var/log/xferlog
例如 B 使用 FTP连接A时报错这个,我们试试A FTP 连接B即可。连接是相互的。
版权归原作者 Issac-Clarke 所有, 如有侵权,请联系我们删除。