请选择 进入手机版 | 继续访问电脑版
查看: 180|回复: 2

[单片机资料] 基于samba的主机与虚拟机之间方便地共享文件

[复制链接]

签到天数: 376 天

[LV.9]元老将成

发表于 2018-8-9 21:02:53 | 显示全部楼层 |阅读模式

为了要在该Ubuntu虚拟机上进行Linux开发还需要解决如下两个问题:

1. 主机与虚拟机相互间能够ping通,且均能访问英特网。

2. 主机与虚拟机能够简单方便地共享文件。


先说问题2的解决方法

要做到主机与虚拟机进行文件共享,其实方法很多,比如利用VMware Tools等,但在这里我选用的是samba。

先简单介绍一下samba:

      Samba是Linux和Unix上实现SMB(server message block)协议的一个免费软件,用于Linux和Windows主机之间共享文件之用;Samba 既可以用于Windows和Linux之间的共享文件,也可用于Linux和Linux之间的共享文件;不过对于Linux和Linux之间共享文件有更好的网络文件系统NFS。

      在Windows 网络中的每台机器既可以是文件共享的服务器,也可以是客户机;Samba 也一样,比如一台Linux的机器,如果架了Samba Server 后,它能充当共享服务器,同时也能做为客户机来访问其它网络中的Windows共享文件系统,或其它Linux的Sabmba 服务器。

      我们在Windows网络中,可以直接把共享文件夹当做本地硬盘来使用。在Linux中,就是通过Samba向网络中的机器提供共享文件的,也可以把网络中其它机器的共享文件挂载在本地机器上使用。

     Samba 主要是在Windows和Linux 系统共存的网络中使用;如果一个网络环境里都是Linux或Unix类的系统,就没有必要用Samba,可直接用NFS。


下面再接着记录samba的安装和配置过程:(有些命令仅适用于Ubuntu系统,其他Linux系统可能不一样,但步骤都是一样的)


第一步:安装samba

#sudo apt-get install samba           //

#sudo apt-get install smbfs            //


第二步:添加Linux用户(在安装完成Linux系统后,一般已经有一个Linux用户了,即在安装过程中创建的那个,本例中为jack。在一个

                                 Linux系统中当然可创建多个用户,因为Linux系统本身就是多用户系统。如果只需要一个用户的话,此步骤可略)

#sudo useradd rose             //rose为新添加的用户名

#sudo passwd rose             //为用户名rose设置密码,该命令回车后系统会提示你输入密码。


第三步:创建共享目录:

#sudo mkdir /home/jack/share              //创建共享目录:jack为登陆Linux系统的用户名;当然也可为上一步创建的用户名rose创

                                                              //建一个共享目录,如sudo mkdir /home/rose/rose/share

#sudo chmod 777 /home/jack/share     //为创建的共享目录设置权限


第四步:为samba服务器添加用户

#sudo smbpasswd  -a jack     //添加并给用户jack访问samba服务器设置密码;注:登陆samba服务器的用户必须已是Linux的用户


第五步:创建samba配置文件:

1. 备份现有的配置文件

#sudo mv /etc/samba/smb.conf   /etc/samba/smb.conf.bak

2. 创建新的配置文件

#sudo vim /etc/samba/smb.conf


[global]


     workgroup = mygroup    //创建工作组


     security = share             //设置samba的安全等级,user代表需要输入用户名和密码;share则不需要输入用户名和密码


     guest ok = yes               //是否允许guest用户访问:yes or no


[share]                                //方框号中的share这个名字可以随便取,它只是在windows的网上邻居中显示的共享文件夹名


     path = /home/jack/share   //设置共享文件夹的路径,该路径下的共享文件夹在第二步中已经建立。


     valid users = jack              //说明这个share共享目录只允许用户jack访问


     public = no                        //no表示除了jack这个用户外,其他用户进入samba服务器后看不见该共享目录;如果为yes,虽然能看

                                              //见,但除了jack外其他用户还是进不去。


     browseable = yes              //设置该共享文件的读权限:yes or no


     writeable = yes                  //设置该共享文件的写权限:yes or no


//最后存盘退出



#testparm               //检查一下语法错误


第六步:重启samba服务

#sudo /etc/init.d/samba restart



经过以上几步后,不出意外的话samba的安装于配置就算完成了。下面就该看如何使用samba来进行主机与虚拟机之间共享文件了:

1. 主机(windows)访问虚拟机(Ubuntu):

    可直接在浏览器的地址栏中输入虚拟机的IP,如://192.168.227.129(我的虚拟机的IP),回车后就可以看到虚拟机上的共享文件了(如上述步骤中的share),如果该虚拟机上的samba服务器添加了多个用户,则会弹出一个登陆框,要求你输入用户名和密码。


2. 虚拟机(Linux)访问主机(windows):

   这个可以通过Linux下的mount命令或者samba的命令smbmount来实现。

(1)mount命令

        加载网络中的共享文件夹到本地机器,mount就是用于挂载文件系统的,SMB做为网络文件系统的一种,也能用mount挂载。

mount 挂载smbfs的用法;

mount -t smbfs -o codepage=cp936,username=用户名,password=密码 //主机ip地址/共享文件夹名 /home/jack(挂载点)

mount -t smbfs  -o codepage=cp936  //主机ip地址/共享文件夹名 /home/jack(挂载点)
   

例子:mount -t smbfs //172.16.80.28/network    //home/jack/test_mount      
(2)smbmount命令
        smbmount其实也是mount的一个变种。
smbmount的用法:
smbmount -o username=用户名,password=密码 //主机ip地址/共享文件夹名 /home/jack(挂载点)

smbmount  //ip地址或计算机名/共享文件夹名    //主机ip地址/共享文件夹名 /home/jack(挂载点)


例子:smbmount  //172.16.80.28/network    //home/jack/test_smbmount


注意:

        如果您的samba服务器是以share共享方式配置的,则无需用户名和密码就能挂载,如果出现要密码的提示,直接回车就行;您也可以用smbmount 来挂载,这样就无需用mount -t smbfs来指定文件系统的类型了。对于挂载点,我们要自己建立一个文件夹,比如/home/jack/test,这由自己决定。在mount的命令中,我们发现有这样的一个参数codepage=cp936,这是服务器端文件系统的编码的指定,cp936 就是简体中文,当然您可以用utf8等。如果您挂载了远程的smbfs文件系统出现的是简体中文乱码,就要考虑挂载时要指定编码了。




至此,我们就可以很方便地在主机(windows)和虚拟机(Linux)之间进行文件共享了。


  注明:要选用桥接方式

            要为sab添加用户


签到天数: 673 天

[LV.9]元老将成

发表于 2018-8-10 10:17:45 | 显示全部楼层
不错的资料
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

返回顶部