一,用samba实现host与guest共享文件

Samba简介:SMB(Server Messages Block,信息服务块)是一种在局域网上共享文件和打印机的一种通信协议,它为局域网内的不同计算机之间提供文件及打印机等资源的共享服务。SMB协议是客户机/服务器型协议,客户机通过该协议可以访问服务器上的共享文件系统、打印机及其他资源。

1,在host上创建共享文件夹,并设置权限。

Mkdir /var/share

Chmod 777 /var/share

我们访问该共享文件夹都是以others用户来访问的,所以others组权限要设置为7.也就是对应的最后一个7。

2,  检查是否已安装samba: rpm -qa | grep samba

samba-common-3.6.9-151.el6_4.1.x86_64
samba-3.6.9-151.el6_4.1.x86_64
samba-winbind-clients-3.6.9-151.el6_4.1.x86_64
samba-client-3.6.9-151.el6_4.1.x86_64
samba-winbind-3.6.9-151.el6_4.1.x86_64

Samba安装包说明:

samba-common-xx //主要提供samba服务器的设置文件与设置文件语法检验                      程序

samba-client-xx//客户端软件,主要提供linux主机作为客户端时,所需要                     的工具指令集

samba-xx       //服务器端软件,主要提供samba服务器的守护程序,共享                     文档,日志的轮替,开机默认选项

否则,安装samba软件包:

Yum install samba

3,设置配置文件,添加一个共享文件夹,并设置权限。

vi smb.conf,在配置文件中添加如下内容:

[share]

path = /var/share  //指定共享目录

available = yes

browseable = yes  //设置为no表示所有Samba用户的宿主目录不能被看到,                    只有登录用户才能看到自己的宿主目录共享;这样设置                        可以加强Samba服务器的安全性。

public = yes                //该目录对所有samba用户可见

writeable =yes           //设置共享目录是否可写

4,创建账户

Touch  /etc/samba/smbpasswd

Useradd  test1

Passwd   test

Smbpasswd –a test1.

OK,创建好账户test1.

注意:smb账户首先必须是系统账户。所以先创建系统账户。

5,修改客户机(例如xp)的C:\windows\system32\drivers\etc\lmhosts.sam

在文件最后添加如下内容:

10.0.2.4 smbserver

该操作可以增加访问smb的IP。默认是10.0.2.2;

注:该步骤可省略。

6,重启主机的samba服务。Service smb restart

7,  在host端通过命令启动虚拟机,增加选项:-smb  /var/share

8,  在客户机运行中输入: \\10.0.2.4或10.0.2.2访问主机共享文件夹。

二,通过NFS来访问主机端共享文件夹

NFS简介:NFS,是Network File System的简写,即网络文件系统。网络文件系统是FreeBSD支持的文件系统中的一种,也被称为NFS. NFS允许一个系统在网络上与他人共享目录和文件。通过使用NFS,用户和程序可以像访问本地文件一样访问远端系统上的文件。

NFS最显而易见的好处:

1>本地工作站使用更少的磁盘空间,因为通常的数据可以存放在一台机器上而且可以通    过网络访问到。

2>用户不必在每个网络上机器里头都有一个home目录。Home目录 可以被放在NFS         服务器上并且在网络上处处可用。

3>诸如软驱,CDROM,和 Zip(是指一种高储存密度的磁盘驱动器与磁盘)之类的存储    设备可以在网络上面被别的机器使用。这可减少整个网络上的可移动介质设备的数量。

1,首先检查NFS是否安装

rpm -qa | grep nfs

nfs-utils-1.2.3-15.el6.x86_64

nfs-utils-lib-1.1.5-4.el6.x86_64  负责NFS命令与监控程序

rpcbind-0.2.0-8.el6.x86_64     支持安全NFS RPC服务的连接

注:centos5和redhat早期版本都是portmap服务,后期版本改名为rpcbind。

默认装系统时会自动安装。

若没有安装用yum install安装。

简单介绍NFS系统守护进程:

•nfsd:它是基本的NFS守护进程,主要功能是管理客户端是否能够登录服务器;

•mountd:它是RPC安装守护进程,主要功能是管理NFS的文件系统。当客户端顺利通过nfsd登录NFS服务器后,在使用NFS服务所提供的文件前,还必须通过文件使用权限的验证。它会读取NFS的配置文件/etc/exports来对比客户端权限。

•rpcbind:主要功能是进行端口映射工作。当客户端尝试连接并使用RPC服务器提供的服务(如NFS服务)时,rpcbind会将所管理的与服务对应的端口提供给客户端,从而使客户可以通过该端口向服务器请求服务。

2,配置NFS服务:

/etc/exports                 NFS服务的主要配置文件

/usr/sbin/exportfs            NFS服务的管理命令

/usr/sbin/showmount         客户端的查看命令

/var/lib/nfs/etab              记录NFS分享出来的目录的完整权限设定值

/var/lib/nfs/xtab              记录曾经登录过的客户端信息

创建共享文件夹 /var/share;

配置/etc/exports:

/var/share  *(rw,no_root_squash)

第一项是共享文件夹路径

*表示所有IP段可以访问;也可以指定具体IP或IP段

Rw表示可读写。RO表示只读

No_root_squash表示root权限访问文件夹

3,启动NFS服务

Service nfs  restart

showmount -e  //默认查看自己共享的服务,前提是要DNS能解析自己,                                        不然容易报错

showmount -a  //显示已经与客户端连接上的目录信息

4,在windos端挂载nfs文件服务。默认windos是不支持该服务,

我们需要下载Microsoft Windows Services for UNIX 3.5 免费插件。下载地址如下:

http://download.microsoft.com/download/a/1/c/a1ca7af1-a6e3-46e7-874a-4c5d8c0fb3b7/SFU35SEL_EN.exe

解压该程序到C:/SFU35SEL_EN,执行SFU_SETUP。这样只会安装Clien for NFS.

5, 检查客户端nfs for client服务是否启动,否则启动该服务。

6, 检查客户端user mapping服务是否启动,否则启动该服务。

  通过计算机-管理-服务  来查看。

7,  打开Services for UNIX Administrator

* 设定User Name Mapping

在Configuration选项卡中选择User Password and Group files

把要挂载的系统的文件夹中的/etc/passwd, /etc/group文件拷贝到C:

导入到Configuration中

* 设定Maps

在Advanced maps中选择 Show User Maps

点击List Windows User , List UNIX User(因为我们已经把passwd和group文件导入进来了)

在List中选择Windows和UNIX下的用户名。点击Add后如下图:.

8, 打开CMD,我们终于可以挂载共享文件夹了:

Cd  C:/SFU/common

mount 192.168.16.xx:/var/share  d:

d盘是将共享文件夹挂载到客户端的盘符。

9, 注意:主机端共享文件夹权限设置要合理。默认是others只读。客户端访问共享文件夹时都是以others用户权限访问,所以必要时给others用户组写权限。否则无法创建文本文档等。

若以上步骤执行后还是不可写,修改客户端注册表:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\ClientForNFS\CurrentVersion\default,增加两项:AnonymousUid,AnonymousGid,然后重启客户端,再mount。

10,        在系统启动时如果出现如下错误:

     Client for NFS Service Failure

解决方法:

修改客户端注册表:添加RestoreConnection项并设置为0.

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\NetworkProvider\

三,通过9p-virtio来访问主机端共享文件夹

9p-virtio简介: 英文全称为:Plan 9 folder sharing over Virtio - I/O virtualization framework,是一种host和guest端共享文件夹的文件系统服务。目前guest端暂不支持windos系统(系统不支持virtio服务,且mount命令不支持挂载该格式的文件系统)。我测试guest端用的是ubuntu-13.10。

1, 检查host端是否支持9p-virtio。如下图是已经支持9p的:

  lsmod | grep 9p

  如果已经加载 9p.ko,9pnet_virtio.ko,9pnet.ko,说明已经支持virtio-9p。

如果不支持,需要重新编译kernel或9p对应的模块,并加载到host系统。编译前需要在kernel中添加如下配置选项:

CONFIG_NET_9P=y

CONFIG_NET_9P_VIRTIO=y

CONFIG_9P_FS=y

CONFIG_9P_FS_POSIX_ACL=y

注:如果是模块,将y换成m,建议编译为驱动模块,省时间,’安全性高’。

2,客户端安装linux系统, 我安装的是ubuntu13-10版本。

测试时需要用到root账户,所以先把root账户密码激活,

ubuntu默认root密码不启动,密码激活:sudo passwd root 输入你

装系统时用户的密码,设置root 密码。

将guest关机,通过host端命令启动guest。

3,Host端启动虚拟机命令参数如下:

qemu-kvm –cpu host -m 1024 -enable-kvm

-drive file=/var/lib/libvirt/images/zxc_linux1.img,cache=writeback,if=virtio -localtime

-fsdev local,id=test_dev,path=/var/share,security_model=none

-device virtio-9p-pci,fsdev=test_dev,mount_tag=testmount

-vnc 0.0.0.0:0 -vga cirrus -monitor stdio

启用9p的参数解释如下:

-fsdev fsdriver,id=[id],path=[pathtoshare]

,security_model=[mapped|passthrough|none][,writeout=writeout]

[,readonly][,socket=socket|sock_fd=sock_fd]

-device virtio-9p-pci,fsdev=[id],mount_tag=[mount tag]

Fsdriver: 该选项指定fs驱动端使用,目前支持”only”,”handle”,”proxy”文件       系统驱动。

Id: 用来关联fsdev

Path:host端用来共享的文件夹。

Security_model:应该是共享权限,官方解释是:有效选项被映射,一种是透传模式,一种是none。Proxy文件系统驱动时不需要指定该选项。

-device 指定设备virtio-9p-pci.

Mount-tag:一个标识,用来在guest端mount时的tag。

4,在host端创建要和guest端共享的文件夹

Mkdir /var/share

5,在客户端执行如下命令:

mount -t 9p -o trans=virtio testmount /tmp/shared/ -oversion=9p2000.L,posixacl,cache=loose

-t 标识mount 类型;

-o 标识共享传输方式;

Testmount是mount_tag;

/tmp/shared 是guest端将要挂载到host端共享文件夹的目录。

-oversion是标识9p的版本信息。

host与guest间共享文件夹的三种方法(原创)的更多相关文章

  1. (转)linux访问windows共享文件夹的两种方法

    有时需要在linux下访问window的共享文件,可以使用mount挂载或使用samba连接. 1,mount挂载 $ mkdir windows 将共享文件夹挂载到windows文件夹: mount ...

  2. linux访问windows共享文件夹的两种方法

    有时需要在linux下需要访问windows的共享文件夹,可以使用mount挂载或者使用samba连接. 1.mount挂载 首先创建被挂载的目录: $ mkdir windows 将共享文件夹挂载到 ...

  3. VirtualBox内刚刚安装完Debian9系统,也无法设置共享文件夹。解决的方法就是安装VirtualBox客户端增强包。

    VirtualBox内刚刚安装完Debian9系统,也无法设置共享文件夹.解决的方法就是安装VirtualBox客户端增强包. 1.若直接安装客户端增强包会得到如下提示:root@debian:/op ...

  4. VirtualBox内刚刚安装完CentOS6.9和7系统,无法调整屏幕的分辨率,也无法设置共享文件夹。解决的方法就是安装VirtualBox客户端增强包。

    VirtualBox内刚刚安装完CentOS6.9和7系统,无法调整屏幕的分辨率,也无法设置共享文件夹.解决的方法就是安装VirtualBox客户端增强包. 1.若直接安装客户端增强包会得到如下提示: ...

  5. HOSt ip is not allowed to connect to this MySql server, MYSQL添加远程用户或允许远程访问三种方法

    HOSt ip is not allowed to connect to this MySql server 报错:1130-host ... is not allowed to connect to ...

  6. 总结java创建文件夹的4种方法及其优缺点-JAVA IO基础总结第三篇

    本文是Java IO总结系列篇的第3篇,前篇的访问地址如下: 总结java中创建并写文件的5种方式-JAVA IO基础总结第一篇 总结java从文件中读取数据的6种方法-JAVA IO基础总结第二篇 ...

  7. C#中??和?分别是什么意思? 在ASP.NET开发中一些单词的标准缩写 C#SESSION丢失问题的解决办法 在C#中INTERFACE与ABSTRACT CLASS的区别 SQL命令语句小技巧 JQUERY判断CHECKBOX是否选中三种方法 JS中!=、==、!==、===的用法和区别 在对象比较中,对象相等和对象一致分别指的是什么?

    C#中??和?分别是什么意思? 在C#中??和?分别是什么意思? 1. 可空类型修饰符(?):引用类型可以使用空引用表示一个不存在的值,而值类型通常不能表示为空.例如:string str=null; ...

  8. YbSoftwareFactory 代码生成插件【二十五】:Razor视图中以全局方式调用后台方法输出页面代码的三种方法

    上一篇介绍了 MVC中实现动态自定义路由 的实现,本篇将介绍Razor视图中以全局方式调用后台方法输出页面代码的三种方法. 框架最新的升级实现了一个页面部件功能,其实就是通过后台方法查询数据库内容,把 ...

  9. Tomcat部署发布JSP应用程序的三种方法 (转)

    Tomcat部署发布JSP应用程序的三种方法     1.直接放到Webapps目录下      Tomcat的Webapps目录是Tomcat默认的应用目录,当服务器启动时,会加载所有这个目录下的应 ...

随机推荐

  1. 第123天:移动web开发中的常见问题

    一.函数库 underscoreJS _.template: <ol class="carousel-indicators"> <!--渲染的HTML字符串--& ...

  2. 【bzoj5146】有趣的概率 微积分

    题目描述 "可爱的妹子就像有理数一样多,但是我们知道的,你在数轴上随便取一个点取到有理数的概率总是0,"芽衣在床上自顾自的说着这句充满哲理的话,"诶,柚子,我写完概率论的 ...

  3. 【刷题】BZOJ 4349 最小树形图

    Description 小C现在正要攻打科学馆腹地------计算机第三机房.而信息组的同学们已经建好了一座座堡垒,准备迎战.小C作为一种高度智慧的可怕生物,早已对同学们的信息了如指掌. 攻打每一个人 ...

  4. Strategy Pattern ava设计模式之策略模式

    简介 在策略模式(Strategy Pattern)中,一个类的行为或其算法可以在运行时更改.这种类型的设计模式属于行为型模式.简单理解就是一组算法,可以互换,再简单点策略就是封装算法. 意图 定义一 ...

  5. 在C++程序中开启和禁用Windows设备的无线网卡的方法

    原文链接地址:https://www.jb51.net/article/81340.htm 1.列出当前网卡:SetupDiEnumDeviceInfo 2.找出当前无线网卡的名字(用natvie w ...

  6. loj2541 「PKUWC2018」猎人杀 【容斥 + 分治NTT】

    题目链接 loj2541 题解 思路很妙啊, 人傻想不到啊 觉得十分难求,考虑容斥 由于\(1\)号可能不是最后一个被杀的,我们容斥一下\(1\)号之后至少有几个没被杀 我们令\(A = \sum\l ...

  7. Codeforces 585E. Present for Vitalik the Philatelist(容斥)

    好题!学习了好多 写法①: 先求出gcd不为1的集合的数量,显然我们可以从大到小枚举计算每种gcd的方案(其实也是容斥),或者可以直接枚举gcd然后容斥(比如最大值是6就用2^cnt[2]-1+3^c ...

  8. [NOI2008]糖果雨

    bzoj1062[Noi2008]糖果雨 首先给出的颜色没有用. 估计要用数据结构.而线段难以维护. 考虑把线段变成点 T是单增的. 所以询问的时候,存在的线段都可能贡献答案. 那些线段的位置如果可以 ...

  9. requests、BeautifulSoup、自动登陆示例

    requests Python标准库中提供了:urllib.urllib2.httplib等模块以供Http请求,但是,它的 API 太渣了.它是为另一个时代.另一个互联网所创建的.它需要巨量的工作, ...

  10. Error: Chromium revision is not downloaded. Failed to download Chromium

    在使用prerender-spa-plugin做前端预渲染的时候,安装puppeteer的时候因为下载Chromium 失败报错,有如下解决方法: 1.使用Chromium 国内源 npm confi ...