部署Samba文件共享服务

        在windows网络环境中,主机之间进行文件和打印共享是通过微软公司自己的SMB/CIFS网络协议实现的。SMB和CIFS协议是微软的私有协议,在Samba项目出现之前,并不能直接与Linux/UNIX系统进行通信。Samba协议它在Linux/UNIX系统中实现了微软的SMB/CIFS网络协议,从而使跨平台的文件共享变得更加容易了。

1、Samba软件包的构成

samba-3.0.33-3.25.el5 :服务端软件包。

samba-client-3.0.33-3.25.el5 :客服端软件包。

samba-common-3.0.33-3.25.el5 :提供服务端和客服端程序的公共组件。

samba-swat-3.0.33-3.25.el5  :提供WEB接口的图形管理程序。

安装samba可以使用rpm命令安装,samba软件包在系统光盘的server目录下面。

[root@localhost /]rpm -ivh /media/Server/samba-3.0.33-3.25.el5

2、Samba服务的程序组件

Samba服务器提供smbd和nmbd两个服务程序,功能如下:

smbd :负责为客户机提供服务器中共享资源的访问,监听TCP协议的139端口。

nmbd :负责提供基于NetBIOS协议的主机名称解析,监听UDP协议的137-138端口。

samba的启动程序位于“/etc/rc.d/init.d/smb”,也可以使用“service smb start”命令来启动。

3、smb的主配置文件

smb的主配置文件位于“/etc/samba/smb.conf”,其中默认分为三个部分分别为全局设置、宿主目录共享设置和打印机共享设置。

常见全局配置项的含义如下:

常见共享目录的配置项含义如下:

4、构建可匿名访问的共享目录

设置匿名共享文件夹时,在主配置文件smb.conf中主要调整两个地方即可:其一、将默认的安全级别修改为share;其二、添加一段共享目录配置。如下:创建一个file的共享目录。

[root@localhost /]vim /etc/samba/smb.conf

[global]

       workgroup=WORKGROUP

       security=share    --更改默认的安全级别。

.......//省略部分内容

[file]

       comment=Shared Directory

       path=/var/file       --指定共享的目录

       public=yes           --是否允许所有人访问

       read only=yes      --只读权限、writable是写入权限,用户的最终权限取决于本地权限加共享权限。

开启samba服务就可以在客户端输入UNC路径访问了。

[root@localhost /]service smb start

5、构建用户验证的共享目录

设置用户验证共享文件夹时,在主配置文件smb.conf中也要调整两个地方,其一、将默认的安全级别修改为user;其二、添加共享目录配置,指定用户权限。在此之前,还需要创建授权的共享账户。

Samba服务器使用独立的共享账号数据库文件,其中的账号名称必须与它同名的系统用户相对应,以便主机对共享访问的读写权限进行控制;但共享用户的密码是额外设置的,可以与系统用户密码不一样。Samba共享用户的账号数据库默认位于“/etc/samba/passdb.tab”。使用pdbedit命令进行管理。如下:创建共享用户

pdbedit命令中-a:添加用户,-u:指定用户名,-L:查看共享用户,-x:删除共享用户。

修改smb.conf配置文件,添加名为tools的共享目录配置段。

[root@localhost /]vim /etc/samba/smb.conf

[global]

       security=user

       host allow=192.168.1 192.168.10      --只允许192.168.1.0和192.168.10.0网段访问,host deny=表示拒接指定的网段访问。

.......//省略部分内容

[tools]

       comment=You can get software tools from here

       path=/opt/mytools

       public=no

       read only=no

       valid users=user       --指定访问的用户

       write list=user            --指定写入权限的用户

重新加载smb.conf文件中的配置,在客户端输入正确的用户名和密码就可以访问了。

[root@localhost /]service smb reload

6、共享账户映射(别名)

在使用Samba共享账户时,通常情况下,一个共享用户账户对应一个系统用户,为了安全起见,我们可以将一个用户映射为多个不同名称(别名)。

Samba共享的映射文件默认位于“/etc/samba/smbusers”,文件中的配置记录使用“共享用户名=别名1 别名2 别名3 ...”。

如下:给suer用户添加两个别名test和users。

[root@localhost /]vim /etc/samba/smdusers

......//省略部分内容

user=test users

修改好共享用户别名记录以后,还需要修改主配置文件“/etc/samba/smb.conf”

[root@localhost /]vim /etc/samba/smb.conf

[global]

       username map=/etc/samba/smbusers

......//省略部分内容

重新加载smb.conf文件中的配置,在客户端输入别名和密码就可以访问了。

[root@localhost /]service smb restart

7、Linux客户端使用smbclient命令访问共享资源

使用smbclient命令加上“-L选项,并指定目标主机的ip或主机名,就可以查询指定主机中的共享资源了。

[root@localhost /]smbclient -L 192.168.10.1

使用smbclient命令访问共享资源时,需要指定共享的目录,根据提示输入用户名和密码即可。

[root@localhost /]smbclient //192.168.10.1/tools

我们还可以使用mount命令挂载指定的共享目录,注意:mount命令不能挂载匿名的共享目录。

[root@localhost /]mount -o username=test //192.168.10.1/tools /media/smbfile