主机系统:Windows7
虚拟机工具:VirtualBox4.3.8
虚拟机目标系统:Ubuntu12.04
在一些中小型网络,或者企业的内部网中,利用Linux建立文件服务器是一个很好的解决方案。针对企业内部网中的绝大部分客户机采用Windows的情况,为使Windows用户以及Linux用户能够互相访问彼此的资源,Linux提供了一套资源共享的软件——Samba服务器。Samba是在Linux及Unix上实现SMB(Server MessageBlock)协议的一个免费软件。
一、SMB协议和Samba简介
1.1 SMB协议
为了使Windows 主机间的资源能够共享,微软于1980年开发了SMB(Server Message Block)通信协议,并通过SMB通信协议,使网络上各台主机之间能够共享文件、打印机等资源。目前类似这种资源共享的通信协议还有NFS、Appletalk、Netware等。
1.2 Samba简介
这些年来,Windows 和Linux 操作系统各自拥有自己的用户群和市场。然而在一般的公司或学校里,可能同时有Windows 和Linux 操作系统的主机。Windows主机彼此间可利用“网上邻居”来访问共享的资源,NFS也能使Linux 主机之间实现资源共享。但如何能使Windows 主机和Linux主机之间实现资源共享呢?
微软的“网上邻居(就是Windows 上利用SMB通信协议实现资源共享的程序)”一经推出,便广受用户的好评,大家突然觉得原来要在网上共享资源尽是那么简单,有鉴于此,便有一些Linux 爱好者开始在Linux 主机上实现SMB通信协议,后来这个实现了SMB功能的软件既被称为 Samba ,它使得Windows 主机和Linux主机之间实现了资源共享。
1.3 Samba软件的功能
由于SMB通信协议采用的是Client/Server架构,所以Samba 软件可以分为客户端和服务器端两部分。通过执行Samba 客户端程序,Linux 主机便可以使用网络上Windows 主机所共享的资源;而在Linux 主机上安装Samba 服务器,则可以使Windows 主机访问Samba 服务器共享的资源
Samba 提供了以下功能:
(1)共享Linux 的文件系统;
(2)共享安装在Samba 服务器上的打印机;
(3)使用Windows 系统共享的文件和打印机 ;
(4)支持 Windows 域控制器和Windows 成员服务器对使用Samba 资源的用户进行认证
(5)支持WINS名字服务器解析及浏览;
(6)支持SSL安全套接层协议。
二、 安装和使用Samba服务器
Samba 软件安装在Linux 一端。目前主要由一个20人左右的Samba 团队负责维护及开发,用户可以在http://www.samba.org/站点获得Samba的详细信息。同时,也可以在网页上下载Samba 的最新版本 。
2.1 安装Samba服务器
如果用户在安装Linux 时已经安装了Samba ,就无需再安装。如果不确定是否已经安装,可以通过下列命令确定是否已经安装Samba :
apt-cache search +"包名" 搜索系统中相关的软件包有没有安装。
apt-cache show +"包名" 显示指定软件包的详细信息,如说明、大小、版本等。
或者:
rpm –qa | grep samba
若已经安装则会显示出samba软件包相关的信息,则表示已经安装了Samba ,否则必须先安装Samba 才可以使用SMB服务。
安装时,ubuntu系统可以直接安装:sudo apt-getinstall samba
或者:rpm –ivh + “包名”
如果需要使Linux 主机访问Windows 主机上的共享资源,则还应该在linux系统中安装Samba 客户端程序。
2.2创建共享目录
在linux系统中创建要共享的目录:
sudo mkdir /home/zqjun/shared
sudo chmod 777 /home/zqjun/shared
说明:zqjun是你在linux系统中工作的账户名(此处根据自己的实际名称修改),shared是你用来做为共享的文件夹(名字无限制),此文件夹中的所有信息在windows系统中可以直接进行读写操作(当然读和写的权限由自己来控制)。
2.3修改Samba配置文件
在上一步骤中已经创建了将要共享的目录,接下来需要修改Samba配置文件中的设置,使SMB服务对该共享目录生效。
sudo vi /etc/samba/smb.conf
在smb.conf配置文件结尾添加以下信息:
[zqjun]
path = /home/zqjun/
valid users = zqjun
available = yes
writeable = yes
browseable = yes
public = yes
guest ok = yes
create mask = 0755
directory mask =0755
说明:
1、valid users项中的用户名是用来作为远程网络访问的账户。该账户可以使用系统已经存在的账户,如root、Tom等。也可以按下面2.4步骤进行添加新的账户。
2、这里的[zqjun]名字是可以随便取,这个是你在windows下访问时linux共享时“计算机”列表中显示“网络位置”的名字。
3、添加完成后保存,再检查一下以下内容,如果不相同,则修改,如果没有也可以添加上去:
workgroup = WORKGROUP
display charset = UTF-8
unix charset = UTF-8
dos charset = cp936
后面的三行是为了防止出现中文目录乱码的情况。
2.4在windows上创建samba帐户
如果系统中没有zqjun这个账户存在,则需要添加这个网络访问帐户。如下:
sudo useradd zqjun
上面只是增加了zqjun这个系统用户,却没有给用户赋予本机登录密码。所以这个用户只能从远程访问,不能从本机登录。而且samba的登录密码可以和本机登录密码不一样。这个你可以在重启系统时看到你添加的用户,但是你却用它登陆不了系统,因为没有赋予本机登录密码。
sudo touch /etc/samba/smbpasswd
sudo smbpasswd –a zqjun
然后会要求你输入samba帐户的密码。这个密码不是开机登录时候用的,是你要访问WIN共享文件或者WIN要访问linux共享文件的时候要填的密码。如果你直接用系统中的账号,这里zqjun就是你系统中的账户名即可,密码即为你登录linux系统时的密码。
现在要新增网络使用者的帐号:
sudo vi /etc/samba/smbusers
在新建立的文件内加入下面这一行并保存:
zqjun= “networkusername”
如果要删除网络使用者的帐号,把上面命令中的 -a 改成 -x 即可:
sudo smbpasswd -x zqjun
2.5重启samba服务器
运行以下命令来测试一下配置参数是否OK:
sudo testparm
命令执行后显示刚才的配置信息,则OK。
测试OK后,即可重启使配置生效:
sudo /etc/init.d/smbd restart
或:service smbdrestart
2.6测试Samba服务器
运行以下命令来测试是否可以访问共享:
smbclient -L //localhost/share
或者:
smbclient -L \\127.0.0.1 -U zqjun
需要输入的密码就是你刚才创建账户时设置的samba密码。
2.7Win中访问Linux共享
至此,我们就可以在windows下访问Linux系统中的共享文件了。
打开“我的电脑”,在左侧列表栏“计算机”上单击右键,在弹出的窗口中选择“映射网络驱动器”,在“文件夹”填入“ \\server\share”格式的网络结点,勾选“登录时重新连接”即可。
我的网络位置为:\\192.168.1.13\zqjun
说明:
1、“server”是Linux系统的IP地址,“share”是你在Linux系统中设置的要共享的网络结点名称,即为上面的[zqjun]。
2、该网络位置在WIN上添加后,每次进入到WIN系统时都会自动去连接该网络结点。如果要删除该网络结点,在“计算机”处单击右键后,选择“断开网络驱动器”,选中要断开的网络结点确定即可。
3、在“计算机”上单击右键后,也可以选择“添加一个网络位置”来建立以上的共享结点,其中“Internet地址或网络地址(A)”处要填入的网络路径同上面的路径。