zoukankan      html  css  js  c++  java
  • samba

    一、samba简介

    Samba最大的功能可用于Linux与windows系统直接的文件共享和打印共享,Samba既可用于windows与Linux之间的文件共享,也可用于Linux与Linux之间的资源共享,由于NFS的出现,因而 Samba更多用在Linux与windows之间的数据共享上面。

      Samba服务器可实现如下功能:

    • WINS和DNS服务;
    • 网络浏览服务;
    • Linux和Windows域之间的认证和授权;
    • UNICODE字符集和域名映射;
    • 满足CIFS协议的UNIX共享等。

    二、samba服务的安装

    1、环境准备

    # uname -r
    2.6.32-642.11.1.el6.x86_64
    # uname -m
    x86_64
    # cat /etc/redhat-release
    CentOS release 6.8 (Final)

    # getenforce
    Disabled

    #/etc/init.d/iptables stop

    2、执行yum安装(需配置好yum源)

    yum install samba samba-client samba-swat -y

    3、检查是否安装成功

    #rpm -qa|grep samba

    samba-common-3.6.23-36.el6_8.x86_64
    samba-3.6.23-36.el6_8.x86_64
    samba-winbind-3.6.23-36.el6_8.x86_64
    samba-client-3.6.23-36.el6_8.x86_64
    samba-swat-3.6.23-36.el6_8.x86_64
    samba-winbind-clients-3.6.23-36.el6_8.x86_64

    4、启动samba服务并配置开机启动

    # /etc/init.d/smb start
    启动 SMB 服务: [确定]

    # netstat -lntup|grep smbd
    tcp 0 0 0.0.0.0:445 0.0.0.0:* LISTEN 25190/smbd
    tcp 0 0 0.0.0.0:139 0.0.0.0:* LISTEN 25190/smbd
    tcp 0 0 :::445 :::* LISTEN 25190/smbd
    tcp 0 0 :::139 :::* LISTEN 25190/smbd

    将samba服务添加到系统自启动:

    # chkconfig --level 35 smb on

    # chkconfig --list | grep smb

    smb 0:关闭 1:关闭 2:关闭 3:启用 4:关闭 5:启用 6:关闭

    三、samba服务的配置

    Samba服务配置主要是指/etc/samba/smb.conf文件的配置。

    1、公共匿名类共享目录的配置(即匿名账户访问共享目录或文件)

    #vim /etc/samba/smb.conf

      workgroup = WORKGROUP      //定义工作组,也就是windows下的工作组

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

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

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

       security = share                               //共享级别,用户不需要账号和密码即可访问

      [share]       //建立共享目录模块

        comment = share Stuff       //对共享目录说明,可自定义
        path = /share        //指定共享目录的路径
        public = yes              //所有人可查看,等效于guest ok =yes
        writable = yes      //有可写权限

    • 新建/share目录,并设置属组属主为nobody。

    #mkdir /share

    #chown -R nobody:nobody /share/

    #/etc/init.d/smb restart    //重启服务
    #/etc/init.d/nmb restart

    • 测试smb.conf配置是否正确:

    #testparm
    Load smb config files from /etc/samba/smb.conf
    rlimit_max: increasing rlimit_max (1024) to minimum Windows limit (16384)
    Processing section "[homes]"
    Processing section "[printers]"
    Processing section "[share]"
    WARNING: The security=share option is deprecated
    Loaded services file OK.
    ......................................

    • 访问samba服务器的共享文件:

    1)、centOS系统测试:

    [root@zhang share]# smbclient //127.0.0.1/share
    WARNING: The security=share option is deprecated
    Enter root's password:     //由于匿名访问不需要密码,可直接回车即可
    Domain=[WORKGROUP] OS=[Unix] Server=[Samba 3.6.23-36.el6_8]
    Server not using user level security and no password supplied.
    smb: > ls
    . D 0 Mon Mar 27 10:35:40 2017
    .. DR 0 Mon Mar 27 10:34:42 2017
    a.txt 0 Mon Mar 27 10:35:33 2017
    aa.py 0 Mon Mar 27 10:35:40 2017

    46201 blocks of size 2097152. 40904 blocks available
    smb: >q    //退出访问

    2)、windows系统下的共享访问

    \172.172.0.10share

    2、按权限对目录进行分组访问(配置用户名和密码访问的samba服务)

    # useradd -s /sbin/nologin renli     //先建立系统用户
    # passwd  renli    //设置密码

    # smbpasswd -a renli     //将用户添加到samba账户中

     smbpasswd:
             -a Sys_User: 添加系统用户为samba用户
             -d :禁用用户
             -e: 启用用户
             -x: 删除用户

    New SMB password:
    Retype new SMB password:
    Added user renli.

    pdbedit -a -u renli   //也可以创建samba账户

    smbpasswd:该方式是使用smb工具smbpasswd给系统用户(真实用户或者虚拟用户)设置一个Samba 密码,客户端就用此密码访问Samba资源。smbpasswd在/etc/samba中,有时需要手工创建该文件。
    tdbsam:使用数据库文件创建用户数据库。数据库文件叫passdb.tdb,在/etc/samba中。passdb.tdb用户数据库可使用smbpasswd –a创建Samba用户,要创建的Samba用户必须先是系统用户。也可使用pdbedit创建Samba账户。pdbedit参数很多,列出几个主要的:
    pdbedit –a username:新建Samba账户。
    pdbedit –x username:删除Samba账户。
    pdbedit –L:列出Samba用户列表,读取passdb.tdb数据库文件。
    pdbedit –Lv:列出Samba用户列表详细信息。
    pdbedit –c “[D]” –u username:暂停该Samba用户账号。
    pdbedit –c “[]” –u username:恢复该Samba用户账号。

    3、修改主配置文件

    # vi /etc/samba/smb.conf

    修改:

    security = user     //修改共享级别为用户访问

    hosts allow = 127.  172.172.0   //只允许127.0.0.0与172.172.0.0网段主机访问

    [renli]
    comment = renli share
    path = /share   //共享目录路径
    public = no    //不公开,受限浏览
    writable = yes
    directory mask = 0755   //创建目录的权限掩码
    create mask = 0644    //创建文件的权限掩码
    valid users = renli,root   //被许可访问该共享目录的用户账号
    write list = renli,root    //允许写入的用户账号,注意如果不能写入就是系统共享文件权限不足,修改即可。

    
    

    全局配置说明:

    netbios name = MYSERVER  # 设置出现在“网上邻居”中的主机名

    hosts allow = 127.  192.168.12.  192.168.13. # 用来设置允许的主机,如果在前面加”;”则表示允许所有主机

    log file = /var/log/samba/%m.log #定义samba的日志,这里的%m是上面的netbios name

    max log size = 50 # 指定日志的最大容量,单位是K

    自定义共享:

         [shared_name] #共享名称
    path = /path/to/share_directory #共享路径
    comment = Comment String # 注释信息
    guest ok = {yes|no} | public = {yes|no} # 是否启用来宾账号
    writable = {yes|no} |  read only = {yes|no} # 共享目录是否可写
    write list = +GROUP_NAME  # 允许可写的用户列表,前面有+是代表允许可写的组
    测试配置文件是否有语法错误,以及显示最终生效的配置:
         testparm

    重新加载samba服务:

    # service smb reload
    重新载入 smb.conf 文件: [确定]

    在windows系统下测试:

      打开我的电脑,在地址栏中输入\IP,弹出用户登陆框,如图所示:

    输入用户名和密码即可访问。如不能新建文件或文件夹,写入数据,则是共享系统文件权限不够。

    3、设置用户映射及访问地址限制

    #vim /etc/samba/smbusers

    添加: 用户=别名1 别名2 别名3

    renli = u1 u2 u3

    #vim /etc/samba/smb.conf

    [global]

    添加:

    username map = /etc/samba/smbusers

    hosts allow = 192.168.1. 192.168.2. 127.     //允许访问的IP地址段

    hosts deny = 192.168.1. 192.168.2.       //拒绝访问的IP地址段

    重新加载服务:

    /etc/init.d/smb reload

    使用别名访问共享:

    smbclient -U u1 //172.172.0.10/renli

    使用mount挂载共享文件夹到本地:

    mount -o username=u1 //172.172.0.10/renli /media

    如报错:

    # mount -o username=u1 //172.172.0.10/renli /media
    mount: block device //172.172.0.10/renli is write-protected, mounting read-only
    mount: cannot mount block device //172.172.0.10/renli read-only   //不能加载块设备

    解决:

    yum install cifs-utils

    重新挂载读写模式:

    # mount -o username=u1,rw //172.172.0.10/renli /media
    Password:             //输入密码即可挂载成功

    后续更新.............

  • 相关阅读:
    包含源文件 —— 是奇技淫巧还是饮鸩止渴?
    感谢各位网友——《品悟C——抛弃 C程序设计 中的谬误与恶习》正式出版
    能否用痰盂盛饭——谈谈在头文件中定义外部变量
    C:劣书简易鉴别法
    从“站在巨人的肩上”到“跪到侏儒之脚下”——图灵公司副主编自供(二)
    劣质代码评析——刻舟求剑的故事
    Python自然语言处理学习笔记(36): 4.8 Python库的样本
    Python自然语言处理学习笔记(38): 4.10 深入阅读
    Python自然语言处理学习笔记(37):4.9 小结
    Python自然语言处理学习笔记(35): 4.7 算法设计
  • 原文地址:https://www.cnblogs.com/zhangxinqi/p/centOS-samba.html
Copyright © 2011-2022 走看看