一、了解samba服务;
1.概念:实现windows和linux系统之间实现smb协议的一款开源软件,是c/s结构。
2.SMB(服务消息块协议):是一种在局域网上共享文件和打印机的通信协议,提供不同系统之间共享文件或打印机。
3.NetBios(网络基本输入输出系统协议):负责数据传输过程中的主机解析。
4.CIFS(通用网络文件系统):CIFS 是针对 Microsoft Windows 操作系统的本地网络文件系统。 Linux 系统可以挂载和访 问CIFS 文件共享 , 如同常见的网络文件系统一样。
5.samba的作用:共享文件和打印机,支持将linux加入到windows的AD中;实现linux和windows之间的访问。
6.实现原理:Samba服务功能强大,这与其通信基于SMB协议有关。SMB不仅提供目录和打印机共享,还支持认证、权限 设置。在早期,SMB运行于NBT协议(NetBIOS over TCP/IP)上,使用协议的137、138及TCP协议的139端口, 后期SMB经过开发,可以直接运行于TCP/IP协议上,没有额外的NBT层,使用TCP协议的445端口。
客户端---------(1)---------> 服务端---------(2)---------->smb.conf主配置文件
客户端-------- (4)----------> 服务端----------(3)---------->日志文件
二、samba软件包的组成:
1.samba软件组成:samba-common(公共组件)、samba-client(客户端)、samba(主程序)、samba-winbind(允许unix 系统利用windowsAD的用户信息);
2.samba服务的程序组件:
smb:提供共享访问,管理文件传输,端口tcp139号(smb协议)、tcp445号(cifs协议)
nmb:负责NetBIOS协议(负责跨平台实现共享)解析,端口udp137、138号
三、理解samba的主配置文件:/etc/samba/smb.conf
1.主配置文件的格式:#表示注释、;表示配置的样例、[global]全局设置、[homes]家目录共享设置、[printers]打印机共享设 置;
四、搭建匿名和认证的共享
a.配置网络:如ip、网关、主机名、关闭selinux、关闭iptables;
b.安装samba:推荐使用yum安装;
c.修改配置文件:smb.conf主配置文件,根据需求进行修改;smbusers共享账号的别名文件;一个smb用户可以映射到多 个名称;
d.管理samba用户:
pdbedit -a -u 用户 ##添加系统用户到smb用户
pdbedit -x -u 用户 ##删除系统用户在smb用户中
pdbedit -L ##查看smb用户
e.启动服务:
/etc/init.d/smb start ##启动共享
/etc/init.d/nmb start ##启动netBOIS服务
f.访问测试:
五、samba服务的访问:
1.smbclient:
yum -y install samba-client ##安装软件包
smbclient -L ip地址 -U 用户 ##列出共享
smbclient -U 用户 //ip地址/共享名 ##访问匿名共享时,不需要指定-U
2.mount:
yum -y install cifs-utiles ##安装cifs工具
mount -o username=用户名 //ip/共享名 挂载点 ##访问认证共享
mount -o username=* //ip/共享名 挂载点 ##访问匿名共享
3.windows客户端共享的原理:
net share ##管理本地共享
net use ##管理共享映射
net use 共享路径 /delete ##删除共享缓存
inetcpl.cpl ##打开inet选项,删除访问记录

配置文件方以及
smb共享实现linux和windows间共享:

匿名共享:
1.设置网络参数和基础环境:
[root@smb ~]# vi /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
HWADDR=00:0C:29:68:b1:0f
NM_CONTROLLED=no
ONBOOT=yes
BOOTPROTO=static
IPADDR=192.168.100.150
NETMASK=255.255.255.0
GATEWAY=192.168.100.100
DNS1=192.168.100.100
:wq

[root@smb ~]# vi /etc/sysconfig/network
HOSTNAME=smb.linuxfan.cn
:wq
[root@smb ~]# vi /etc/selinux/config
SELINUX=disabled
:wq

[root@smb ~]# chkconfig iptables off ##设置防火墙开机不启动
[root@smb ~]# reboot ##重启主机

2.安装samba软件:
[root@smb ~]# mount /dev/cdrom /mnt ##挂载光盘到/mnt这个目录下
[root@smb ~]# rm -rf /etc/yum.repos.d/*
[root@smb ~]# vi /etc/yum.repos.d/centos.repo ##编辑yum配置文件
[local]
name=local
baseurl=file:///mnt
enabled=1
gpgcheck=0
:wq
[root@smb ~]# yum -y install samba ##安装samba软件包

3.修改/etc/samba/smb.conf定制功能:
[root@smb ~]# vi /etc/samba/smb.conf ##删除注释:%g /^#/d 删除空行:%g/^$/d 删除样例行:%g /^;/d 删除多余空行;修改如下:
[global]

    workgroup = MYGROUP
    ##指定服务器所在的工作组
    server string = Samba Server Version %v
    ##服务器的描述
    log file = /var/log/samba/log.%m
    ##日志文件
    max log size = 50
    ##最大日志大小
    security = share
    ##设置共享类型
    passdb backend = tdbsam
    ##服务用户后台类型
    load printers = yes
    ##是否共享打印机
    cups options = raw
    ##设置共享打印机类型

[public]
comment = Public Stuff
##描述
path = /opt/share
##设置共享的路径
public = yes
##设置是否公开共享
writable = yes
##设置是否可写,即上传文件
printable = no
##共享打印机设置
:wq
[root@smb ~]# mkdir /opt/share
[root@smb ~]# touch /opt/share/a.file
[root@smb ~]# chmod 777 /opt/share
[root@smb ~]# testparm ##测试配置是否有误

4.启动服务:
[root@smb ~]# /etc/init.d/smb start
[root@smb ~]# /etc/init.d/nmb start
[root@smb ~]# chkconfig smb on
[root@smb ~]# netstat -utpln |grep mb ##TCP:139,445/UDP:137,138查看端口

5.客户端测试:
windows:
\192.168.100.150\public
linux:
第一种方式:
挂载光盘,配置yum源;
yum -y install cifs*
mount -o cifs //192.168.100.150/public /benet/ ##匿名共享提示输入密码直接回车
ls /benet ##验证
第二种方式:
挂载光盘,配置yum源;
yum -y install samba-client
smbclient //192.168.100.150/public ##登陆
smb: \> ##ls查看,get 文件名 下载 ,put 文件名 上传 ,quit退出

用户认证的共享:注意匿名和认证选一个
1.创建用户:
useradd u01
useradd u02
pdbedit -a u01 ##将系统用户添加为smb用户
pdbedit -a u02
pdbedit -L ##查看smb用户
2.修改配置文件:
[root@smb ~]# vi /etc/samba/smb.conf
[global]

    workgroup = MYGROUP
    server string = Samba Server Version %v
    log file = /var/log/samba/log.%m
    max log size = 50
    security = user    ##用户认证的共享,将share改为user
    passdb backend = tdbsam
    load printers = yes
    cups options = raw

[public]
comment = Public Stuff
path = /opt/share
public = no ##共享非公开
writable = no ##默认不可以写
valid users = u01, u02 ##允许访问的用户
write list = u01 ##有写入权限的用户
:wq
testparm ##测试配置是否有误
/etc/init.d/smb restart ##重启服务
netstat -utpln |grep mb ##查看端口使用情况
3.测试:
windows主机:
\192.168.100.150
登陆用户名密码测试读取写入权限
cmd中net use 查看保存的链接信息
net use * /del 删除保存的连接信息
再次访问\192.168.100.150测试另外用户

linux:客户机必须配置ip,能够与samba服务器处于同一网络
第一种方式:
mount -o username=u01 //192.168.100.150/public /mnt
cd /mnt
touch b.file
ls
第二种方式:
smbclient -U u02 //192.168.100.150/public