一、 简介
Samba是基于SMB/CIFS(Server Message Block/Common Internet File System)协议的一个自由开源的软件套件(Samba is an Open Source/Free Software suite that provides seamless file and print services to SMB/CIFS clients),是windows和unix系列OS的沟通桥梁。主要应用于局域网的文件和打印共享上。
二、 Samba工作原理
Samba服务功能强大,这与其通信基于SMB协议有关。SMB不仅提供目录和打印机共享,还支持认证、权限设置。在早期,SMB运行于NBT协议(NetBIOS over TCP/IP)上,使用UDP协议的137、138及TCP协议的139端口,后期SMB经过开发,可以直接运行于TCP/IP协议上,没有额外的NBT层,使用TCP协议的445端口。
工作流程
· 协议协商
客户端发起SMB请求告知SMB类型,服务器进行最优选择进行回复
· 建立连接
确认SMB类型后,client提交账号和密码请求与server建立连接,如果验证通过,server就会做出回应,并且配唯一的UID
· 访问共享资源
Client访问server资源时,会发送tree connect数据包,通知服务器需要访问的资源名称,如果设置允许,则server会为客户与共享资源分配TID。
· 断开连接
共享完毕后client向server发送tree disconnect报文关闭共享,与服务器断开连接
Samba相关进程
Samba服务是由两个进程组成,分别是nmbd和smbd。
nmbd:其功能是进行NetBIOS名解析,并提供浏览服务显示网络上的共享资源列表。
smbd:其主要功能就是用来管理Samba服务器上的共享目录、打印机等,主要是针对网络上的共享资源进行管理的服务。当要访问服务器时,要查找共享文件,这时我们就要依靠smbd这个进程来管理数据传输。
三、 Samba相关软件的安装
查看samba是否已经安装
[root@sharecast yum.repos.d]# rpm -qa | grep samba
#建议使用RPM查询当然也可以使用yum list installed list | grep samba,但RPM输出结果比较简洁
samba-winbind-clients-3.6.9-151.el6.i686
#与windows域认证相关的客户端
samba-common-3.6.9-151.el6.i686 #通用的配置文件
samba-client-3.6.9-151.el6.i686 #samba客户端
samba-winbind-3.6.9-151.el6.i686 #认证windows域的服务
samba4-libs-4.0.0-55.el6.rc4.i686 #samba需要调用的相关的库文件
[root@sharecast yum.repos.d]# yum install -y samba
#进行安装samba服务软件
[root@sharecast yum.repos.d]# rpm -qa | grep samba
#安装完毕可以再进行查看
samba-winbind-clients-3.6.9-151.el6.i686
samba-common-3.6.9-151.el6.i686
samba-client-3.6.9-151.el6.i686
samba-3.6.9-151.el6.i686
#这个就是我们刚才安装的,这里的版本是3.6.9
samba-winbind-3.6.9-151.el6.i686
samba4-libs-4.0.0-55.el6.rc4.i686
#服务的相关命令
#在RHEL下可以使用service
[root@sharecast yum.repos.d]# service smb start
Starting SMB services: [ OK ]
#通用的启动可以使用这个方法
[root@sharecast yum.repos.d]# /etc/init.d/smb stop #停止服务
Shutting down SMB services: [ OK ]
[root@sharecast yum.repos.d]# /etc/init.d/smb restart #重启服务
Shutting down SMB services: [ OK ]
Starting SMB services: [ OK ]
[root@sharecast yum.repos.d]# /etc/init.d/smb status
#查看服务是否运行
smbd (pid 30582) is running...
[root@sharecast yum.repos.d]# service smb reload
#重载服务,更改配置后可以使用此命令使其生效
Reloading smb.conf file: [ OK ]
[root@sharecast ~]# chkconfig smb on #开机自动启动服务
[root@sharecast ~]# chkconfig --list | grep smb #查看一下是否开启成功
smb 0:off 1:off 2:on 3:on 4:on 5:on 6:off
#关于防火墙和selinux
#刚开始我们可以关掉防火墙和selinux,到时候学了iptables在回来琢磨该怎么配置
关闭selinux
[root@sharecast ~]# vim /etc/selinux/config
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - No SELinux policy is loaded.
#SELINUX=enforcing #注释掉这行
# SELINUXTYPE= can take one of these two values:
# targeted - Targeted processes are protected,
# mls - Multi Level Security protection.
SELINUXTYPE=targeted
SELINUXTYPE=disable #然后添加这个行,重启系统才可以生效
[root@sharecast ~]# getenforce #查看selinux是否关闭
Disabled
关闭防火墙
[root@sharecast ~]# service iptables stop
#注意iptables并不是一个服务,它是selinux的一部分,直接与内核打交道
iptables: Flushing firewall rules: [ OK ]
iptables: Setting chains to policy ACCEPT: filter [ OK ]
iptables: Unloading modules: [ OK ]
[root@sharecast ~]# chkconfig iptables off
[root@sharecast ~]# chkconfig --list | grep iptables
iptables 0:off 1:off 2:off 3:off 4:off 5:off 6:off