首页 > 代码库 > smba使用环境搭建

smba使用环境搭建

什么是samba?

Samba是在Linux和UNIX系统上实现SMB协议的一个免费软件,由服务器及客户端程序构成。SMB(Server Messages Block,信息服务块)是一种在局域网上共享文件和打印机的一种通信协议,它为局域网内的不同计算机之间提供文件及打印机等资源的共享服务。SMB协议是客户机/服务器型协议,客户机通过该协议可以访问服务器上的共享文件系统、打印机及其他资源。通过设置“NetBIOS over TCP/IP”使得Samba不但能与局域网络主机分享资源,还能与全世界的电脑分享资源。

samba可以实现不同操作系统的资源共享

如何创建samba环境:

  1. 首先检查机器上是否有samba程序, 如果查找没有则需要安装,我使用的这台测试机是有的,所以不需要安装,如果你的需要安装,参看step2

    [root@localhost ~]# rpm -qa |grep samba
    samba-winbind-3.6.23-20.el6.x86_64
    samba4-libs-4.0.0-64.el6.rc4.x86_64
    samba-client-3.6.23-20.el6.x86_64
    samba-winbind-clients-3.6.23-20.el6.x86_64
    samba-common-3.6.23-20.el6.x86_64
    samba-3.6.23-20.el6.x86_64
    samba-swat-3.6.23-20.el6.x86_64

  2. 安装samba

    yum install samba samba-client samba-common

  3. 修改机器上的samba配置文件,文件的位置如下,建议在修改前,备份一份,以便于出问题时可以恢复到以前,这种备份的思想应该在很多地方都是适合的

    [root@localhost samba]# ll
    total 16
    -rw-r--r-- 1 root root  20 Jul 24  2015 lmhosts
    -rw-r--r-- 1 root root 342 Oct 10  2015 smb.conf
    -rw-r--r-- 1 root root 342 Oct 19 17:30 smb.conf.bak
    -rw-r--r-- 1 root root  97 Oct 10  2015 smbusers
    [root@localhost samba]# pwd
    /etc/samba

  4. smb.conf配置文件修改说明

    global部分:

    workgroup     工作组名称(访问服务器的客户端电脑的工作组,注释1)

    server string  主机的简易说明,可随意填写

    unix charset  (Linux服务器上使用的编码,一般来说就是i18n)

    doc charset   (Windows客户端的编码)

    log file      登录档(一般设为默认就可以)

    security      安全性参数, 包括(share,user,domain)

    share: 不需要设置密码,任何人都可以访问

    user: 使用samba服务本身的密码数据库

    passdb backend  (user密码的数据库)


    //参考例子

    workgroup= MYGROUP  #注释1

    serverstring = Samba Server Version %v

      unixcharset=utf-8 

      doccharset=utf-8

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

      security= user

     passdbbackend = tdbsam 

   分享资源部分:Share Definitions

    [共享名称]      客户端看到的文件夹名称

     comment    这个路径的说明

     path       共享的Linux文件系统目录

     browseable 是否让所有的用户看到

     writable   是否可写人

     read only  只读

    public     默认yes

    (writable 和read only 最后出现的为主要设定)

     / //////////////////

     [myShare]

     comment=myShare‘s share path

     path=/usr/package

     browseable= yes

     writable= yes

      public= yes

    测试机配置----要共享/usr/local/autotest文件

      1 [global]
      2 workgroup = WORKGROUP
      3 server string = Samba Server %v
      4 netbios name = centos
      5 force user = autotest
      6 security = share
      7 map to guest = bad user
      8 dns proxy = no
      9 #============================ Share Definitions ==============================
     10 [sharename]
     11 comment = Insert a comment here
     12 path = /usr/local/autotest
     13 public = yes
     14 writable = yes

5. 改变了配置文件后要想知道自己的修改是否正确,可以用testparm进行检查

[root@localhost local]# testparm
Load smb config files from /etc/samba/smb.conf
rlimit_max: increasing rlimit_max (1024) to minimum Windows limit (16384)
Processing section "[sharename]"
WARNING: The security=share option is deprecated
Loaded services file OK.
Server role: ROLE_STANDALONE
Press enter to see a dump of your service definitions

[global]
    netbios name = CENTOS
    server string = Samba Server %v
    security = SHARE
    map to guest = Bad User
    dns proxy = No
    idmap config * : backend = tdb
    force user = autotest

[sharename]
    comment = Insert a comment here
    path = /usr/local/autotest
    read only = No
    guest ok = Ye

 6. 改变需要共享的文件的属性,使得用户可以有读写的权限

  chmod –R 777 /usr/local/autotest

7. 启动samba服务

6.5 6.6的启动方式如下

[root@localhost local]# /etc/init.d/smb start
Starting SMB services:                                     [  OK  ]
[root@localhost local]# /etc/init.d/nmb start
Starting NMB services:                                     [  OK  ]
[root@localhost local]# service smb status--->查看samba服务状态
smbd (pid  6690) is running...

7.0 及其以上的启动方式如下:

  systemctl enable smb.service
  systemctl enable nmb.service
  systemctl restart smb.service
  systemctl restart nmb.service

8. 跳过防火墙

6.5 6.6方法如下:

[root@localhost local]#  service  iptables stop
[root@localhost local]# setnforce 0
-bash: setnforce: command not found
[root@localhost local]# setenforce 0
setenforce: SELinux is disabled
7.0及其以上方法如下:

 systemctl stop firewalld.service

setenforce 0


9. 检查samba服务的可用性

[root@localhost local]# smbclient -L //192.168.0.85---用匿名方式进行访问,直接输入回车
WARNING: The security=share option is deprecated
Enter root‘s password:
Domain=[WORKGROUP] OS=[Unix] Server=[Samba 3.6.23-20.el6]

    Sharename       Type      Comment
    ---------       ----      -------
    sharename       Disk      Insert a comment here
    IPC$            IPC       IPC Service (Samba Server 3.6.23-20.el6)
Domain=[WORKGROUP] OS=[Unix] Server=[Samba 3.6.23-20.el6]

    Server               Comment
    ---------            -------
    CENTOS               Samba Server 3.6.23-20.el6
    LOCALHOST            localhost server (Samba, Ubuntu)

    Workgroup            Master
    ---------            -------
    WORKGROUP            LOCALHOST

至此,从windows机器就可以访问这台linux机器了


技术分享


我是在6.6及7.0的两台机器上都进行了samba服务的设置,在6.6的机器上配置很顺利,配置完成后再windows的机器就可以访问了,但是7.0的机器上还遇到了访问时需要输入用户名和密码的问题,该问题的解决方式参照鸟哥的文章,链接如http://linux.vbird.org/linux_server/0370samba.php#server 

 主要用到了以下命令,自己强制添加了用户名和密码

   usradd -G users test
   useradd -G users test
  echo 1234 | passwd --stdin test
  pdbedit -a -u test



smba使用环境搭建