Samba是一个能让Linux系统应用Microsoft网络通讯协议的软件,而SMB是Server Message Block的缩写,即为服务器消息块 ,SMB主要是作为Microsoft的网络通讯协议,后来Samba将SMB通信协议应用到了Linux系统上,就形成了现在的Samba软件。

       Samba最大的功能就是可以用于Linux与windows系统直接的文件共享和打印共享,Samba既可以用于windows与Linux之间的文件共享,也可以用于Linux与Linux之间的资源共享,由于NFS(网络文件系统)可以很好的完成Linux与Linux之间的数据共享,因而 Samba较多的用在了Linux与windows之间的数据共享上面。

      组成Samba运行的有两个服务,一个是SMB,另一个是NMB;SMB是Samba 的核心启动服务,主要负责建立 Linux Samba服务器与Samba客户机之间的对话, 验证用户身份并提供对文件和打印系统的访问,只有SMB服务启动,才能实现文件的共享,监听139 TCP端口;而NMB服务是负责解析用的,类似与DNS实现的功能,NMB可以把Linux系统共享的工作组名称与其IP对应起来,如果NMB服务没有启动,就只能通过IP来访问共享文件,监听137和138 UDP端口。

  1、安装samba服务

# yum install samba samba-client samba-swat

  2、查看安装情况

# rpm -qa | grep samba

  3、安装包说明

  samba-common-3.5.10-125.el6.x86_64               //主要提供samba服务器的设置文件与设置文件语法检验程  序testparm
  samba-client-3.5.10-125.el6.x86_64                    //客户端软件,主要提供linux主机作为客户端时,所需要  的工具指令集
 samba-swat-3.5.10-125.el6.x86_64                    //基于https协议的samba服务器web配置界面
  samba-3.5.10-125.el6.x86_64                            //服务器端软件,主要提供samba服务器的守护程序,共享  文档,日志的轮替,开机默认选项

  Samba服务器安装完毕,会生成配置文件目录/etc/samba和其它一些samba可执行命令,/etc/samba/smb.conf是samba的核心配置文件 /etc/init.d/smb是samba的启动/关闭文件

 4、启动Samba服务器

可以通过/etc/init.d/smb start/stop/restart来启动、关闭、重启Samba服务

           /etc/init.d/nmb start/stop/restart

 5、查看samba的服务启动情况

# service smb status

 6、设置开机自启动

# chkconfig --levels 35 smb on             //在3、5级别上自动运行samba服务

案例一、公司现有一个工作组workgroup,需要添加samba服务器作为文件服务器,并发布共享目录/share,共享名为public,此共享目录允许所有员工访问。

注释:(个人觉得/etc/samba/smb.conf里看着太过于繁琐 所以直接用rm -rf /etc/samba/smb.conf 删除掉smb.conf  然后手动创建自己需要的配置文件)

1、   

   # vi /etc/samba/smb.conf

       

   # golbal settings

     workgroup = WORKGROUP        //定义工作组

     server string = zhengmin Samba Server Version %v     //定义samba服务器的简要说明

     netbios name = zhengmin samba        //定义windows中显示出来的计算机名

   # logging options

     log file = /var/log/samba/log.%m      //定义samba用户的日志文件 %m代表客户端主机名

   # standalone server options

     security = share        //共享级别 定义不需要用户名和密码就可以访问

   # share definitions

   [public]                   //对共享目录的设置

     comment = public stuff       //对共享目录的说明

     path = /share            //用来指定共享的目录

     public = yes              //所有人可以查看


2、

  建立共享目录

上面设置了共享目录为/share,下面就需要建立/share目录

由于要设置匿名用户可以下载或上传共享文件,所以要给/share目录授权为nobody权限。

# chown -R nobody:nobody /share/

重启samba服务

# service smb restart

# service nmb restart

检测smb.conf是否正确

# testparm

最后搭建完成

  • 在Linux下访问Samba服务器的共享文件

smbclient //192.168.1.90/public

  • 在windows下访问Samba服务器的共享文件

直接在浏览器地址栏输入//192.168.1.90/public

(注释 : 如果在客户机访问samba服务器是报错Error NT_STATUS_HOST_UNREACHABLE 说明是samba服务器的防火墙开着在需要关闭)

(注释: 如果报错NT_STATUS_ACCESS_DENIED listing \*    )说明是被SELinux阻挡了  解决方法:关闭SELinux,先使用getenforce查看状态,如果是Enforcing,就使用setenforce 0关闭。
[root@CentOSH02V03 samba]# getenforce
Enforcing
[root@CentOSH02V03 samba]# setenforce 0

以上还是临时关闭了selinux机制,不需要重启  但是每次开机它还是会再启动  

永久性关闭selinux需要修改其配置文件  

# vi  /etc/selinux/config

将SELINUX=enforcing 改为SELINUX=disabled

重启生效

案例二、公司现有多个部门,因工作需要,将TS部的资料存放在samba服务器的/ts 目录中集中管理,以便TS人员浏览,并且该目录只允许TS部员工访问。

1、添加TS部组合用户

# groupadd ts

# useradd -g ts sandy

# useradd -g ts zhengmin                                     //创建用户并加到ts组

# passwd sandy                //为sandy创建密码

2、在根目录下创建ts目录

# cd /

# mkdir ts

# cd ts

# touch newyork.city             // 创建ts目录并在目录下创建文件newyork.city

3、将两个账户添加到samba账户中

# smbpasswd -a sandy

# smbpasswd -a zhengmin

4、修改配置文件/etc/samba/smb.conf



# golbal settings

        workgroup = WORKGROUP

        server string = zhengmin Samba Server Version %v

        netbios name = zhengmin samba

# logging options

        log file = /var/log/samba/log.%m

# standalone server options

        security = user                                //用户级别,由提供服务的samba服务器负责检查账户和密码


# share definitions

[homes]                                             //设置用户宿主目录

        comment = Home Directories

        browseable = no

        writable = yes

[public]

        comment = public stuff

        path = /share

        public = yes

[ts]                                                       //ts目录,只运行ts组成员访问

        comment = TS

        path = /ts

        valid users = @ts                             

5、重新加载配置

# service smb reload

6、访问测试


  • 在windows下访问Samba服务器的共享文件

直接在浏览器地址栏输入//192.168.1.90/ts       //访问ts共享目录

              //192.168.1.90/sandy       //访问sandy用户可以访问的所有共享

      在Linux下访问Samba服务器的共享文件

      1、查看Samba服务器的共享资料

# smbclient  –L  //Samba服务器的ip地址  -U  Samba用户名

# smbclient -L //192.168.1.90/public  -u sandy         //需要用户名和密码是的查看方式

# smbclient -L //192.168.1.90/public                    //不需要密码查看        -L是list的意思

 linux登陆samba服务器

# smbclient //192.168.1.90/public -U sandy

  在客户机挂载共享文件

# cd /mnt

# mkdir samba

# mount -t cifs -o username=sandy,password=1234567 //192.168.1.90/public  /mnt/samba

# df -h                               //查看挂载是否成功