部署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