zoukankan      html  css  js  c++  java
  • Linux 配置samba服务实现与Windows文件共享

    目录:

      1、samba服务介绍

      2、 安装samba服务和客户端

      3、samba配置文件详解

      4、配置实例

      5、客户端挂载与测试

      6、samba排错

      

    1、Samba服务介绍

        Samba 最先在Linux 和Windows 两个平台之间架起了一座桥梁,正是由于Samba 的出现,我们可以在Linux 系统和Windows 系统之间互相通信,比如拷贝文件、实现不同操作系统之间的资源共享等等,我们可以将其架设成一个功能非常强大的文件服务器,也可以将其架设成打印服务器提供本地和远程联机打印。 

    Samba 应用环境:

    • 文件和打印机共享:文件和打印机共享是Samba 的主要功能,SMB 进程实现资源共享,将文件和
    • 打印机发布到网络之中,以供用户可以访问。

    身份验证和权限设置:smbd 服务支持user mode 和domain mode 等身份验证和权限设置模式,通过加密方式可以保护共享的文件和打印机。

    端口号: 139 和 445

        在早期,SMB 运行于NBT 协议(NetBIOS over TCP/IP)上,使用UDP 协议的137、138 及TCP 协议的139 端口。NetBIOS是Network Basic Input/Output System的简称,网络基本输入/输出系统协议。协议,一般指用于局域网通信的一套API,是由IBM公司开发。主要作用:通过NETBIOS协议获得计算机名称,然后把计算机名解析为对应IP地址。

    模式: C/S 模式 

    Samba 常规服务器配置---基本的Samba服务器的搭建流程主要分为四个步骤:

       [1]、编辑主配置文件smb.conf,指定需要共享的目录,并为共享目录设置共享权限。

       [2]、在smb.conf 文件中指定日志文件名称和存放路径。

       [3]、设置共享目录的本地系统权限及samba共享权限。

       [4]、重新加载配置文件或重新启动smb 服务,使用配置生效

    2、安装samba服务和客户端

    # yum install -y samba            #samba服务端程序
    # systemctl start smb          #启动smb服务
    # systemctl enable smb       #开机自启动smb
    # netstat -lnt                      #查看监听的端口号
    tcp        0      0 0.0.0.0:139             0.0.0.0:*               LISTEN     
    tcp        0      0 0.0.0.0:445             0.0.0.0:*               LISTEN     
    tcp6       0      0 :::139                  :::*                    LISTEN     
    tcp6       0      0 :::445                  :::*                    LISTEN   
    
    # yum install -y samba-client    #samba客户端程序,如果是需要mount,还需要安装cifs-utils
    # yum install -y cifs-utils

    3、samba配置文件详解

      smb.conf 文件的开头部分为samba 配置简介,告诉我们smb.conf 文件的作用及相关信息。

     smb.conf 中还有以“;”开头,这些都是samba 配置的格式范例,默认是不生效滴,可以通过去掉前面的“;”并加以修改来设置想使用的功能。

    下面我们说下[global]全局配置中常用字段及设置方法:

    [homes]为特殊共享目录,表示用户主目录。

    [printers]表示共享打印机。

    [share]                                                      #设置共享名

            comment = Home Directories          #对共享名的描述

            browseable = yes                            #是否允许查看此共享内容 。如果是否,用smbclient默认是看不到,只有通过绝对路径,才可以查看到。

            path = /tmp/mysql                           #共享路径,写绝对路径

            public = yes                                    #允许匿名查看

            readonly = yes

    3.1 设置访问用户

          如果共享资源存在重要数据的话,需要对访问用户审核,我们可以使用valid users 字段进行设置,格式:

      valid users = 用户名

      valid users = @组名 

    3.2 设置目录只读

         共享目录如果限制用户的读写操作,我们可以通过readonly 实现哈~,格式:

      readonly = yes                        #只读

      readonly = no                         #读写 

    3.3 设置目录可写

          如果共享目录允许用户写操作,可以使用writable 或write list 两个字段进行设置 writable 格式:

      writable = yes                       #读写

      writable = no                        #只读

      write list 格式:

      write list = 用户名

      write list = @组名 

    3.4 hosts allow 和 hosts deny 字段的使用

      hosts allow #字段定义允许访问的客户端

      hosts deny #字段定义禁止访问的客户端 

    这里我们添加hosts deny 和hosts allow 字段:

           hosts deny = 192.168.0.0          #表示禁止所有来自192.168.0.0/24 网段的IP 地址访问

           hosts allow = 192.168.0.24        #表示允许192.168.0.24 这个IP 地址访问

    注意:当host deny 和hosts allow 字段同时出现并定义滴内容相互冲突时,hosts allow 优先。

    4、配置实例

    4.1 匿名共享

      公司现在用一个工作组MYGROUP, 需要添加samba服务器作为文件服务器,并发布共享目录 /share,共享名为share,这个共享目录允许所有公司员工访问:

    CentOS 6 Samba 3.x的配置示例:

    [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 [share] comment = share path = /share browseable = yes guest ok = yes writable = yes public=yes

    CentOS 7 samba 4.x 配置示例:

    [global]
            workgroup = MYGROUP
            server string = Samba Server Version %v
            log file = /var/log/samba/log.%m
            max log size = 50
    
            passdb backend = tdbsam
            security = user
            map to guest = Bad User
    
            load printers = yes
            cups options = raw
    
    [share]
            comment = share
            path = /share
            browseable = yes
            guest ok = yes
            writable = yes
            public=yes
                         

    4.2、通过用户名和密码共享文件

    为samba服务器添加安全登陆账户,此账户必须是Linux服务器的账户。先通过命令添加系统账户:

    # useradd sales1           #可以不设置密码,Linux服务器账户的密码与samba管理的密码是独立的

    第1种方法:使用smbpasswd文件

    修改samba global配置文件:

    # vim /etc/samba/smb.conf   
    security = user
    passdb backend = smbpasswd
    smb passwd file = /etc/samba/smbpasswd

    再使用命令:

    # smbpasswd -a sales1         #把系统账户sales1添加到samba服务中,会提示你输入密码。
    # cat /etc/samba/smbpasswd    #在为此账户创建smb共享密码时,会先查看先前设置的共享用户的密码位置,发现没有这个文件夹,然后自动创建这个文件夹。 
    sale1:500:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX:7CE21F17C0AEE7FB9CEBA532D0546AD6:[U          ]:LCT-57DFF2F4:

     第2种方法:使用passdb数据库做用户认证

    修改samba global配置文件:

    # vim /etc/samba/smb.conf   
    security = user
    passdb backend = tdbsam

    默认情况下,会生成一个数据库文件 /var/lib/samba/private/passdb.tdb ,以后就可以通过命令 pdbedit 去管理账户,但pdbedit 命令只能添加和删除账户,不能更改密码,更改密码就需要用:smbpasswd 命令了。

    # pdbedit -a sales1      #添加系统账户sales1到samba服务中
    # pdbedit -L             #列出samba服务添加的系统账户
    # smbpasswd sales1       #修改passdb.tdb数据库中sales1账户的密码

     5、客户端挂载与测试

    客户端挂载,需要安装:

    # yum install -y cifs-utils
    # smbclient -L -U sales1 #此命令是查看samba服务器的共享,需要先安装samba-client
    # mount.cifs -o user=sales1,password=123456 //10.6.2.199/share /mnt

    # mount.cifs -o credentials=/etc/samba/passwd //10.6.2.199/share /mnt #可以把用户名和密码
    # cat /etc/samba/passwd
    username=sales1
    password=123456
    domain=MYGROUP

    6、samba 排错

    可以使用命令查看samba服务配置文件加载的问题

    # testparm
  • 相关阅读:
    linux 文件系统基本结构
    linux bash命令行基本操作
    U盘安装Centos6.2
    linux安装JDK
    linux重启和关闭系统命令
    eclipse安装反编译工具JadClipse
    Linux系统 Centos6 安装
    Linux 发展史
    计算机硬件
    网络 、osi 七层模型、tcp/ip 五层参考
  • 原文地址:https://www.cnblogs.com/reachos/p/8711081.html
Copyright © 2011-2022 走看看