Linux下进行资源共享有很多种方式,Samba服务器就是最常见的一种。Samba服务器可以让Windows操作系统用户访问局域网中Linux主机,就象访问网上邻居一样方便。如图1所示,图中的服务器运行Samba服务器程序,其操作系统是Linux。该服务器通过Samba可以向局域网中的其他Windows系统提供文件服务。同时,在Linux服务器上还连接了一个共享打印机,打印机也通过Samba向局域网的其他Windows用户提供打印服务。
1
、Samba工作原理
Samba
的工作原理是,让Windows系列操作系统网络邻居的通讯协议——NETBIOS(NETwork Basic Input/Output System)和SMA(Server Message Block)这两个协议在TCP/IP通信协议上运行,并且使用Windows的NETBEUI协议让Linux可以在网络邻居上被Windows看到。其中最重要的就是SMB(Server Message Block)协议,在所有的诸如Windows Server 2003、Windows XP等Windows系列操作系统中广为应用。Samba就是SMB服务器在类UNIX系统上的实现,目前可以在几乎所有的UNIX变种上运行。
2
、Samba服务器的功能
文件共享和打印共享是Samba最主要的功能。Samba为了方便文件共享和打印共享,还实现了相关的控制和管理功能。具体来说,Samba完成的功能有:
共享目录:在局域网上共享某个或某些目录,使得同一个网络内的Windows用户可以在网上邻居里访问该目录,就跟访问网上邻居里其他Windows机器一样。
目录权限:决定每一个目录可以由哪些人访问,具有哪些访问权限。Samba允许设置一个目录让一个人、某些人、组和所有人访问。
共享打印机:在局域网上共享打印机,使得局域网的其他用户可以使用Linux操作系统下的打印机。
打印机使用权限:决定哪些用户可以使用打印机。
安装和配置好了Samba服务器后,Linux就可以向局域网中的Windows用户提供文件和打印服务了。
3
、SMB协议
在NetBIOS出现之后,Microsoft就使用NetBIOS实现了一个网络文件和打印服务系统,该系统基于NetBIOS设定了一套文件共享协议,Microsoft称之为SMB(Server Message Block)协议。这个协议被Microsoft用于它们的Lan Manager和Windows服务器系统中,而Windows系统均包括这个协议的客户软件,因而这个协议在局域网系统中影响很大。
随着Internet的流行,Microsoft希望将这个协议扩展到Internet上,成为Internet上计算机之间相互共享数据的一种标准。它将原有的几乎没有多少技术文档的SMB协议进行整理,重新命名为CIFS(Common Internet File System)。因此,为了让Windows和UNIX计算机相集成,最好的办法即是在UNIX中安装支持SMB/CIFS协议的软件,这样Windows客户就不须要更改设置,就能如同使用Windows NT服务器一样,使用UNIX计算机上的资源了。
下面介绍Samba的安装、简易配置以及启动和停止的指令。
[root@localhost ~]# mkdir /mnt/cdrom
[root@localhost ~]# mount /dev/cdrom /mnt/cdrom
mount: block device /dev/cdrom is write-protected, mounting read-only
[root@localhost ~]# cd /mnt/cdrom/Server/
[root@localhost Server]# ll samba*
-r--r--r-- 86 root root 17012467 Jul 23 2009 samba-3.0.33-3.14.el5.i386.rpm
##
服务器端
-r--r--r-- 86 root root 5930356 Jul 23 2009 samba-client-3.0.33-3.14.el5.i386.rpm
##
客户端
-r--r--r-- 99 root root 9094678 Jul 23 2009 samba-common-3.0.33-3.14.el5.i386.rpm
##
配置文件
-r--r--r-- 86 root root 8628593 Jul 23 2009 samba-swat-3.0.33-3.14.el5.i386.rpm
##
利用web方式实现管理服务器
[root@localhost Server]# rpm -qa |grep samba
samba-common-3.0.33-3.14.el5
samba-client-3.0.33-3.14.el5
samba
客户端已经安装,下面安装服务器
[root@localhost Server]# cd
[root@localhost ~]# yum install samba –y
Installed:
samba.i386 0:3.0.33-3.14.el5
Dependency Installed:
perl-Convert-ASN1.noarch 0:0.20-1.1 ##
依赖的包
Complete!
可以用一下命令查看安装之后形成的文件
[root@localhost Server]# rpm -ql samba|less
[root@localhost Server]# rpm -ql samba-client
[root@localhost Server]# rpm -ql samba-common |less
重新启动服务
[root@localhost ~]# service smb restart
Shutting down SMB services: [ OK ]
Shutting down NMB services: [ OK ]
Starting SMB services: [ OK ]
Starting NMB services:
查看各自的端口号
没有实现地址绑定之前,给eth0添加一个辅助ip地址
[root@localhost ~]# ifconfig eth0:0 192.168.145.102
用window 客户端访问smb服务器
下面绑定地址,在绑定之前先把配置文件备份一份
[root@localhost ~]# cp /etc/samba/smb.conf /etc/samba/smb.conf.bak
[root@localhost ~]# vim /etc/samba/smb.conf
[root@localhost ~]# man 5 smb.conf
可以查看man手册,默认不绑定
[root@localhost ~]#
79 interfaces = lo 192.168.2.101/24
80 bind interfaces only = yes
重新启动smb服务
[root@localhost ~]# service smb restart
在查看一下端口并测试
限定客户端ip登录
81 hosts allow = 192.168.2.5
测试
打开日志信息
90 log file = /var/log/samba/%m.log
92 max log size = 50
测试
Samba
服务器的安全级别
Share
匿名
User
身份验证 samba帐号库(本地)
Server
身份验证 帐号库(其他服务器)
Domain ads
身份验证
把服务器设为share级别
102 security = share
测试
共享名 物理路径 权利
public /abc r o
smbzs /leeabc rw
256 [public]
257 comment = this is a public dir
258 path = /abc
259 browseable = yes
260 guest ok = yes
261 writable = no
262 ; printable = yes
263
264 [smbzs]
265 comment = this is a lee dir
266 path = /leeabc
267 browseable = yes
268 guest ok = no
269 valid users = user1
270 writable = yes
271; printable = yes
创建相应的目录和帐号
[root@localhost ~]# mkdir /abc
[root@localhost ~]# mkdir /leeabc
[root@localhost ~]# useradd user1
[root@localhost ~]# chown user1:user1 /leeabc
[root@localhost ~]# cd /leeabc
[root@localhost leeabc]# touch lee.txt
[root@localhost leeabc]# cd /abc
[root@localhost abc]# touch abc.txt
建立本地帐号库
[root@localhost abc]# smbpasswd -a user1
New SMB password:
Retype new SMB password:
Added user user1.
重新启动
[root@localhost abc]# service smb restart
测试
只能查看public文件夹的内容,不能修改删去,smbzs文件夹的内容有rw权限
测试挂载
[root@localhost ~]# vim /etc/fstab
//192.168.2.101/smbzs /mnt/smb cifs defaults,username=user1%123 0 0
[root@localhost ~]# mount -a
[root@localhost ~]# mount
可以看到已经挂载到/mnt/smb
为了安全
[root@localhost ~]# vim /etc/samba/f1
username=user1
password=123
[root@localhost ~]# vim /etc/fstab
//192.168.2.101/smbzs /mnt/smb cifs defaults,credentials=/etc/samba/f1 0 0
[root@localhost ~]# mount -a
[root@localhost ~]# mount
//192.168.2.101/smbzs on /mnt/smb type cifs (rw,mand)
可以看到已经挂载成功