文章目录
- 前言
- (一) Linux FTP网络环境搭建
- 1.安装ftp包
- 2. 置匿名用户访问的FTP服务(最大权限)
- 3.为匿名访问ftp的根目录下的pub子目录设置最大权限,以便匿名用户上传数据
- 4. 开启服务,关闭防火墙和增强型安全功能
- (二)Windows 设置
- 测试
- 问题记录
前言
基于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子目录设置最大权限,以便匿名用户上传数据
chmod 777 /var/ftp/pub/
4. 开启服务,关闭防火墙和增强型安全功能
分别执行下面三个指令
systemctl start vsftpd
systemctl stop firewalld
setenforce 0
执行:ifconfig
,看到网卡 ip为192.168.1.128,保存好,后续连接会用到。
(二)Windows 设置
- 点击桌面上的我的电脑,然后点击映射网络驱动器
· 选择映射网络驱动器
设置指定网站地址:ftp://虚拟机网卡ip
这里可以设置匿名用户连接ftp也可以设置用户访问ftp连接。这里演示使用有用户名登录FTP.
随后点击登录,若FTP服务器地址填写无误,就会显示虚拟机文件内容:
我们打开“此电脑”,在网络配置中就可以看到我们配置的FTP连接了。
现在 Win+ R 键打开Windows控制台
执行:
ftp 192.168.1.128
根据指示输入账户和密码,也就是你前面填写的链接FTP服务器的账号密码:
随后在cmd控制台执行:
cd /etc
ls
测试
接下去在虚拟机上创建文件,写点东西。然后去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
(本地路径可能有点儿不一样)
问题记录
1. “打开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 | grep ftp
查看ftp进程。
selinux文件配置在下处更改,更改完 reboot.配置生效。
vim /etc/sysconfig/selinux
3. 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服务。
5. linux ftp failed open,Linux VSFTP提示500 OOPS: failed to open xferlog log file:/var/log/xferlog
例如 B 使用 FTP连接A时报错这个,我们试试A FTP 连接B即可。连接是相互的。