部署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目录下面。

[[email protected]/]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”,也可以使用“servicesmbstart”命令来启动。

3、smb的主配置文件

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

部署Samba文件共享服务

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

部署Samba文件共享服务

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

部署Samba文件共享服务

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

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

[[email protected]/]vim/etc/samba/smb.conf

[global]

workgroup=WORKGROUP

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

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

[file]

comment=SharedDirectory

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

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

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

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

[[email protected]/]servicesmbstart

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

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

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

部署Samba文件共享服务

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

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

[[email protected]/]vim/etc/samba/smb.conf

[global]

security=user

hostallow=192.168.1192.168.10--只允许192.168.1.0和192.168.10.0网段访问,hostdeny=表示拒接指定的网段访问。

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

[tools]

comment=Youcangetsoftwaretoolsfromhere

path=/opt/mytools

public=no

readonly=no

validusers=user--指定访问的用户

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

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

[[email protected]/]servicesmbreload

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

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

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

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

[[email protected]/]vim/etc/samba/smdusers

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

user=testusers

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

[[email protected]/]vim/etc/samba/smb.conf

[global]

usernamemap=/etc/samba/smbusers

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

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

[[email protected]/]servicesmbrestart

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

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

[[email protected]/]smbclient-L192.168.10.1

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

[[email protected]/]smbclient//192.168.10.1/tools

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

[[email protected]/]mount-ousername=test//192.168.10.1/tools/media/smbfile