Hyper-v 实现与虚拟机共享文件夹

1. 介绍

要想实现Hyper-v 与虚拟机共享文件夹,方式有很多,其他的方式我看过,但是都没有实现出来,所以我使用了vsftp来操作。

物理机系统windwos 10 ,虚拟机为linux cenos7

2. vsftp

2.1 安装

安装时最好指定版本号,否则下次会下载最新的版本,有可能会出现问题

1
2
3
4
#-y 表示安装时不询问,直接选择yes
yum install -y vsftpd-3.0.2
#检查安装是否成功
vsftpd -v

2.2 启动服务

1
2
3
4
5
6
#启动ftp命令
service vsftpd start
#停止ftp命令#
service vsftpd stop
#重启ftp命令
service vsftpd restart

2.3 设置开机自启vsftpd服务

1
chkconfig vsftpd on

2.3 禁用linux防火墙

centos默认有安装防火墙,但是命令记不住,所以直接安装iptables

1
yum install iptables-services

临时停止防火墙,下次系统重启又会恢复:

1
systemctl stop firewalld

永久禁用防火墙

1
systemctl disable firewalld.service

查看端口21是否被使用

1
2
3
4
#安装lsof
yum install lsof
#查看端口信息
lsof -i:21

使用windows的telnet查看21端口是否能正常访问

1
telnet 192.168.24.200 21

2.3 vsftp的配置

ftp的配置文件主要有三个,位于/etc/vsftpd/目录下,分别是:

  • ftpusers 该文件用来指定那些用户不能访问ftp服务器。
  • user_list 该文件用来指示的默认账户在默认情况下也不能访问ftp
  • vsftpd.conf vsftpd的主配置文件

2.4 用户类型

  • 匿名用户:不需要登录,就能直接访问文件夹
  • 本地用户:需要在linux上先创建ftp用户,访问时需要登录才能访问文件夹

2.4 匿名用户操作

切换目录:有的版本可能默认地址不同

1
cd /etc/vsftpd/

修改vsftpd.conf文件

1
vi vsftpd.conf

去掉以下两行前面的’#'号(开启匿名用户的权限:上传文件,修改,新增文件夹等)

1
2
  anon_upload_enable=YES
  anon_mkdir_write_enable=YES

访问:

在文件系统中输入ftp://ip 进行访问共享文件夹,默认的共享文件夹是linux系统下的/var/ftp。此ip表示你的linux的ip

2.5 本地用户

创建账号和密码

创建ftpUser账号

1
useradd ftpUser

为这个账号设置密码

1
passwd ftpUser

重启一下vsftp服务

1
service vsftpd restart

在windows的文件系统下访问ftp://ip ,此时会弹出一个框让你输入密码,你就输入刚刚创建的用户密码就行了

2.6 设置默认的共享文件夹

如何修改 vsftpd 的默认根目录 /var/ftp/ 到另一个目录?
默认配置下,匿名用户登录 vsftpd 服务后的根目录是 /var/ftp/; 系统用户登录 vsftpd 服务后的根目录是系统用户的home目录。
若要修改登录 vsftpd 服务后的根目录,只要修改 /etc/vsftpd/vsftpd.conf 文件即可。 假设我现在想让匿名用户登录后访问/var/ftp/,本地用户登录后访问/usr/local/ftp-share目录。则加入下面三行代码

1
2
3
4
5
6
7
8
9
10
#本地用户访问的目录
local_root=/usr/local/ftp-share
#匿名用户访问的目录
anon_root=/var/ftp


#是否将所有用户限制在主目录,YES为启用 NO禁用,最好不加,会出现问题
#chroot_local_user=YES
如果你一定要加chroot_local_user属性,那么就把下面这个也同时加上,用来限制时添加写的权限
#allow_writeable_chroot=YES

chroot_local_user=YES这个配置最好不要加,否则会出现登录不了的情况,登录后一直重新弹出登录框。

如果你一定要加这个属性,那么把allow_writeable_chroot=YES也加上即可。我已测试过可以

重启服务

1
service vsftpd restart

再次访问即可

2.7 注意文件权限的问题

像上面我们已经设置本地用户登录后访问/usr/local/ftp-share目录,但是ftp-share是我们使用linux的root用户创建的,要想在windows系统上也能操作它的话,需要给这个文件夹加上权限:

1
chmod -R 777 /usr/local/ftp-share

因为你在windows上面登录的其实就是ftpUser用户,所以要让ftpUser用户能够操作/ftp-share这个文件夹才行。

2.8 禁用掉selinux服务

如果不禁掉,会没有权限对共享文件夹进行新增删除等操作

禁用有两种方式:

第一种是临时禁用

1
setenforce 0

第二种就是永久禁用,需要修改文件,并且重启服务器

1
vim /etc/selinux/config

然后将这个文件的SELINUX属性修改下

1
SELINUX=disabled

修改保存后,要重启一下服务器

查看状态输入以下命令

1
getenforce

 Enforcing是开启状态

 Permissive 是临时禁用了(警告模式,将该事件记录下来,依然允许执行)

 disable 永久禁用了

2.9 切换账号

如果你是第一次连接ftp服务器,那么会默认使用匿名用户进行访问,如果想要切换用户: