1 介绍
现在是网络化的时代,我们每个人要更好的发展,离不开网络化、信息化的支持。利用网络的支持,在不同的操作系统间共享文件等信息,是计算机专业学生必备的一项技能。本文所讲的就是如何建立、设置、链接Samba服务器,使得处在网络中的两台电脑,一台装的是Ubuntu操作系统,一台装的是Win7,通过共享文件夹的形式来共享信息。这两台电脑在网络上处的位置和网络架构为图1所示。
在图1的两台电脑实际上它们的物理位置都在我旁边,只是由于物理RJ47端口太少,就只有让台式机连接到Rj47端口上,而我的笔记本电脑则通过无线路由器连接到网络上。为了方便这两台电脑间的文件和信息交流,我就想通过共享文件夹的方式实现这个功能。如果两台电脑都是windows系统的话好办,但现在一个是Ubuntu系统,一个Win7系统,怎么实现共享文件夹的功能呢?
在参照文献[1]的基础上,利用Samba服务器,我顺利实现了该功能。请看下面的详细介绍。
2 创建和配置一个Samba服务器
由于要实现网络上Ubuntu系统与Win7系统之间共享文件夹,而Samba服务器是一个在Ubuntu系统上支持与windows系统文件交互等功能的服务器,我们的思路自然就是:在台式机上创建一个Samba服务器,而Win7系统以客户端的方式访问服务器上共享出来的文件夹,也就是Utuntu系统上的文件夹。Samba于1992年出现,它最初的目的就是方便Unix系统与Windows系统间共享文件,但又不限于此,也支持各种不同系统之间的交互共享文件,例如Ubuntu对Ubuntu,Mac OS对Mac OS等等。
2.1 安装Samba服务器
如果你使用的是Ubuntu Server distribution,它本身就会预装,你可以跳过此步骤,直接进入下一步骤。如果你使用的是普通的Ubuntu distribution,则它本身没有安装,需要你先安装Samba。你可以通过Ubuntu Software Center以图形化的方式来安装Samba,也可以以Terminal命令的方式来安装。以Terminal方式安装的命令如下:
sudo apt-get install samba
sudo apt-get install smbfs
2.2 确定一个在Ubuntu系统上要共享的文件夹
这个文件夹可以是一个事先存在的文件夹。如果你为了不让共享文件夹与你的其他文件夹混淆,最好新建一个单独的文件夹专门用作共享。用以下Terminal命令创建要共享的文件夹,并赋予其读写的权限:
sudo mkdir /home/share
sudo chmod 777 /home/share
2.3 编辑smb.conf文件
为了让网络上的其他电脑以客户端的方式访问Samba服务器,你首要做的事情就是配置/etc/samba/smb.conf文件。该配置文件类似于Windows下的ini文件,方便管理人员配置服务器的相关信息。请更随以下步骤:
1.利用一个编辑器打开smb.conf文件。由于该文件需要权限才能修改,不要利用直接点击的方式打开,最好使用命令sudo vim /etc/samba/smb.conf或者sudo gedit /etc/samba/smb.conf的方式打开。
2.找到[global]下面的内容将workgroup = WORKGROUP前面的分号(;)去掉(分号打头的代表的是注释),并在它的后面添加内容,最终变为
workgroup = WORKGROUP
display charset = UTF-8
unix charset = UTF-8
dos charset = cp936
3.找到security = user这一行,将其前面的分号去掉,并在其后面添加内容,最终变为:
security = user
username map = /etc/samba/smbusers
4.将要共享的文件夹添加到Samba服务器上,并指定允许访问的用户。通过以下来实现,在文件的末尾添加以下内容(当然,以下的内容你也可以通过图形化的Samba配置管 理器来设置,设置后,在本文件里会自动体现。):
[share] //windows系统下显示的要共享的名
comment = test whether the method is good //注释,你用于共享添加的注释,可以提供共享的目的
path = /home/share //前面步骤在Ubuntu系统上建立的用于共享的文件夹
public = yes
writeable = yes
valid users = chgzhi //访问Samba服务器的用户,但它必须又是一个Ubuntu用户,同时还必须一个单独的不同于登录Ubuntu系统的密码当然你可让它们一致。
create mask = 0700
directory mask = 0700
force user = nobody
force group = nogroup
available = yes
browseable = yes
5. 保存并退出该文件的编辑过程。
2.4 定义Samba用户的访问密码
注意,只要已经合法存在的Ubuntu系统的用户才可以作为Samba服务器的用户。现在假定你Ubuntu系统已经有一个用户chgzhi,这正是在上小节中我们设置的用户(valid users = chgzhi)。我们现在要做的是给改用户设置相应的密码,如果是初次设置密码采用以下命令:
sudo smbpasswd -achgzhi
如果你早前一设置过此密码,则去掉参数a。
2.5 重新启动Samba服务器
由于刚刚重新配置了服务器,此时我们最好重新启动服务器,使用的命令如下:
sudo service smbd restart
3 关闭防火墙
因为Ubuntu系统处于服务器的地位,所以我们只需要关闭Ubuntu系统的防火墙即可,对于Win7系统的防火墙不需要关闭。命令如下:
sudo ufw disable
至此,服务器端我们需要做的工作已经完毕,接下来就是利用客户端连接共享的文件夹了。
4 客户端连接
4.1 smbclient客户端程序
这是一个Samba 服务器程序自带的客户端命令行程序,它支持在另外一台Ubuntu系统已装Samba 的情况下的访问。在此我们利用它测试刚建立的服务器是否成功。如下图2 所示。 我们这里只是本机测试,并没有利用另外的一台电脑连接Samba服务器。图2中可以看出,我们连接成功,并且进入了客户端交互命令提示符(smb: \>),有各种各样的命令可供你使用,具体的请参看文献[1] 的第535页的表22-2。图中输入的密码时你利用2.4节的方法设立的密码。我已经在享受共享文件夹带来的便利,图2就是在台式机的buntu系统上截图而得,并通过共享文件夹允许Win7系统访问,而本文的书写是在Win7 系统上进行的。Figure 2 smbclient客户端程序示例
4.2 利用Win7系统以客户端的形式连接Samba服务器
在装有Win7系统的笔记本上来访问Ubuntu 电脑上设置的共享文件夹,过程很简单,不需要转任何的客户端程序。
1.点击MyComputer 出现图3,再点击图中的Map network drive,然后出现图4。
2.在图4中的folder 文本框中输入Ubuntu 机器的IP 地址和共享的文件夹名share。点击finish 出现图5。
Figure 4 Win7连接示意
3.在图5中输入你的Samba帐户,也就是在2.4节建立的,点击Ok 按钮。令人激动的时刻到了,连接成功,如图6。你可以*自在的在两个不同的操作系统间共享文件了, 享受网络化带来的成果吧!
Figure 5 Win7 连接---输入Samba用户名和密码
Figure 6 在Win7 系统下连接的Samba 服务器共享的文件夹share
5 总结
本文讲述的共享文件夹设置的方法,要求读者具有Ubuntu 使用的基本知识,特别是Terminal 下Bash Shell的使用。关于Ubuntu 系统基本使用方法的介绍,推荐书籍[1]。该书类似于大学新生入学针对Windows 系统的《计算机文化基础课程》,但更实用化。我相信,本文介绍的方法仅仅是一种方法而已,肯定存在更好的共享文件夹的方法。如果哪位读者有更好的方法,请赐教。References
[1] Richard Blum. Ubuntu Linux Secrets. Wiley, Indianapolis, IN, 2009.