一,用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. HDU 4767——Bell

    昨天比赛被虐的这个题目. 今天听斌牛讲过他的思路后就A掉了. 题目的意思是要你求出bell数的第n项对95041567取模. 首先,95041567=31*37*41*43*47: 然后取模就是先分别 ...

  2. Android四大组件之Service(续)

    本地服务启动和通过广播的方式回调是非常简单的. 下面介绍远程服务和通过远程回调的方式通知activity的方式. 1.service定义: package com.joyfulmath.globals ...

  3. WordPress忘记密码找回登录密码的四种行之有效的方法

    WordPress忘记密码找回登录密码的四种行之有效的方法 PS:20170214更新,感谢SuperDoge同学提供的方法,登入phpMyAdmin后,先从左边选自己的数据库,然后点上面的 SQL ...

  4. Qt浅谈内存泄露(总结)

    Qt浅谈内存泄露(总结) 来源 http://blog.csdn.net/taiyang1987912/article/details/29271549 一.简介 Qt内存管理机制:Qt 在内部能够维 ...

  5. linux内核设计与实现第七周读书笔记

    第七章 链接 链接(linking)是将各种代码和数据部分收集起来并组合成为一个单一文件的过程,这个文件可被加载(或被拷贝)到存储并执行.链接可以执行于编译时(compile time),也就是在源代 ...

  6. 框架----Django之Ajax全套实例(原生AJAX,jQuery Ajax,“伪”AJAX,JSONP,CORS)

    一.原生AJAX,jQuery Ajax,“伪”AJAX,JSONP 1. 浏览器访问 http://127.0.0.1:8000/index/ http://127.0.0.1:8000/fake_ ...

  7. 给深度学习入门者的Python快速教程 - 基础篇(转)

    原文:https://zhuanlan.zhihu.com/p/24162430 5.1 Python简介 本章将介绍Python的最基本语法,以及一些和深度学习还有计算机视觉最相关的基本使用. 5. ...

  8. CSK & KCF(tracking)

    转自:http://blog.csdn.net/ben_ben_niao/article/details/51364323 上次介绍了SRDCF算法,发展历史轨迹为CSK=>>KCF/DC ...

  9. [NOI2010] 能量采集 (数学)

    [NOI2010] 能量采集 题目描述 栋栋有一块长方形的地,他在地上种了一种能量植物,这种植物可以采集太阳光的能量.在这些植物采集能量后,栋栋再使用一个能量汇集机器把这些植物采集到的能量汇集到一起. ...

  10. lua和C++的交互(1)

    /* 以前听的一个故事,当年Java的创造者讲课的时候,一开始先拿一个简单的不能简单的小例子, 不断的扩展,最后成为一个复杂而完美的程序. 一个重要之重要的概念,就是栈.Lua与别的语言交互以及交换数 ...