Samba是在Linux和UNIX系统上实现SMB协议的一个免费软件,由服务器及客户端程序构成。SMB(Server Messages Block,信息服务块)是一种在局域网上共享文件和打印机的一种通信协议,它为局域网内的不同计算机之间提供文件及打印机等资源的共享服务。SMB协议是客户机/服务器型协议,客户机通过该协议可以访问服务器上的共享文件系统、打印机及其他资源。

Samba服务的程序组件

samba服务器提供了smbd、nmbd两个服务程序,分别完成不同的功能;

smbd: 负责为客户机提供服务器中共享资源(目录和文件等)的访问;

nmbd: 负责提供基于NetBIOS协议的主机名称解析,以便于Windows网络中的主机进行查询服务;

smbd程序负责监听端口
SMB协议139端口; CIFS协议445端口;

nmbd程序负责监听端口
负责监听UDP协议的137~138端口(NetBIOS协议)

netstat -naptu | grep mbd  //查看端口状态

部署Samba服务

rpm -ivh /mnt/Packages/samba-3.6.9-164.el6.x86_64.rpm
//安装sabma软件包

samba主配置文件:/etc/samba/smb.conf
(关于配置文件修改方法可参考man smb.conf),下面将简单介绍配置文件中主要修改部分含义;

security = share
//设置用户用户访问samba服务器认证方式;

share: 用户访问不需要账户密码,可直接进行访问,即匿名访问;
user: Samba服务器提供的共享文件只能被授权的用户访问,由samba server 负责检查账号密码的正确性;
server: 依靠其他Windows NT/2000或者samba server 来验证用户的账号和密码,是一种代理验证方式;
domain: 域安全级别,使用主域控制器(PDC)来完成认证。

passdb backend = tdbsam //定义用户后台类型

smbpasswd: 使用SMB服务的smbpasswd命令给系统设置smb密码;
tdbsmb: 创建数据库文件并使用pdedit建立smb独立用户,用smbpasswd -a username 为smb用户设立密码,前提是针对已有账户,也可使用
pdedit -a username //新建smb账户
pdedit -x username //删除smb账户
pdedit -L //查看已有smb账户

实验要求:
①服务器提供samba服务;
②客户机访问服务器;
③拟定客户机和服务器在同一局域网内;
服务器IP:192.168.100.109
客户机IP:192.168.100.3
④实现客户机的匿名访问、用户验证访问和匿名用户访问方式。

实现匿名访问

vim /etc/samba/smb.conf  //编辑smb服务主配置文件

security = share //101行,以share方式共享文件

在配置文件底端增添需要共享文件:
[abc] //共享目录为abc
path=/opt/abc //共享目录所在路径
public=yes //文件类型为公共
browseable=yes //允许访问该目录
write=yes //可以写入
create mask=0644 //匿名用户写入权限
directory mask =0755 //匿名用户创建目录权限

mkdir /opt/abc      //创建匿名访问目录
chmod 777 /opt/abc   //将共享目录权限放到最大
service iptables stop  //关闭防火墙
setenforce 0        //关闭增强安全×××

客户端中实现匿名访问如下:

Samba文件共享服务
Samba文件共享服务

实现本地用户访问

vim /etc/samba/smb.conf //编辑smb配置文件

security = user //101行,以用户验证方式共享文件

在配置文件底端增添需要共享文件:
[share] //共享目录为share
path=/opt/share //共享目录所在路径
browseable=yes //允许访问该目录
create mask=0644 //用户写入权限
directory mask =0755 //用户创建目录权限
valid users = zhangsan,lisi //设置允许访问的有效账户
write list = zhangsan //只允许zhangsan账户有写入权限

mkdir /opt/share  //创建共享目录
chmod 777 /opt/share   //将共享目录权限放到最大
service iptables stop  //关闭防火墙
setenforce 0        //关闭增强安全×××
useradd -s /sbin/nologin zhangsan //新建zhangsan用户
useradd -s /sbin/nologin lisi  //新建lisi用户
smbpasswd -a zhangsan  //将系统用户添加为samba用户,并设置密码
smbpasswd -a lisi  //将系统用户添加为samba用户,并设置密码
service smb restart //重启samba服务
pdbedit -L  // 查看samba用户

Samba文件共享服务
客户端中实现账户访问如下:
Samba文件共享服务
zhangsan账户可以实现账户访问,并拥有在share文件中读写权限。
Samba文件共享服务
lisi账户只能在自己的家目录下具有读写权限,而在share目录下没有写入权限。

实现虚拟账户访问

vim  /etc/samba/smbusers     //编辑虚拟账户配置文件

新增如下内容:

zhangsan = 01 02 03 //设置用户别名
lisi = 11 22 33

vim /etc/samba/smb.conf  //编辑主配置文件

security = user
username map = /etc/samba/smbusers
//加入虚拟用户的文件映射

service smb restart //重启服务

客户端中操作如下:

Samba文件共享服务
Samba文件共享服务
使用虚拟账户登陆,其他账户类似。