• Samba


    • Samba简介

    Samba是在Linux和UNIX系统上实现SMB协议的一个免费软件,由服务器及客户端程序构成,实现了linux系统和Windows系统之间的文件共享。

    SMB(Server Messages Block,信息服务块)是一种在局域网上共享文件和打印机的一种通信协议,它为局域网内的不同计算机之间提供文件及打印机等资源的共享服务。

    SMB协议是C/S型协议,客户机通过该协议可以访问服务器上的共享文件系统、打印机及其他资源。

    Samba监听的端口有:

    TCP UDP

    139

    445

    137

    138

    tcp端口相对应的服务是smbd服务,其作用是提供对服务器中文件、打印资源的共享访问。
    udp端口相对应的服务是nmbd服务,其作用是提供基于NetBIOS主机名称的解析。

    samba进程:

    进程对应
    nmbd 对应netbios
    smbd 对应cifs协议
    winbindd + ldap 对应Windows AD活动目录

    Samba安全级别:
    Samba服务器的安全级别有三个,分别是user,server,domain

    安全级别作用
    user 基于本地的验证
    server 由另一台指定的服务器对用户身份进行认证
    domain 由域控进行身份验证

    以前的samba版本支持的安全级别有四个,分别是share,user,server,domain
    share是用来设置匿名访问的,但现在的版本已经不支持share了,但是还是可以实现匿名访问的
    只是配置方式变了

    samba配置文件:

    • /etc/samba/smb.conf(主配置文件)
    samba三大组成作用
    [global] 全局配置,此处的设置项对整个samba服务器都有效
    [homes] 宿主目录共享设置,此处用来设置Linux用户的默认共享,对应用户的宿主目录。
    当用户访问服务器中与自己用户名同名的共享目录时,通过验证后将会自动映射到该用户的宿主目录中
    [printers] 打印机共享设置

    常用配置文件参数:

    参数作用
    workgroup 表示设置工作组名称
    server string 表示描述samba服务器
    security 表示设置安全级别,其值可为share、user、server、domain
    passdb backend 表示设置共享帐户文件的类型,其值可为tdbsam(tdb数据库文件)、ldapsam(LDAP目录认证)、smbpasswd(兼容旧版本samba密码文件)
    comment 表示设置对应共享目录的注释,说明信息,即文件共享名
    browseable 表示设置共享是否可见
    writable 表示设置目录是否可写
    path 表示共享目录的路径
    guest ok 表示设置是否所有人均可访问共享目录
    public 表示设置是否允许匿名用户访问
    write list 表示设置允许写的用户和组,组要用@表示,例如 write list = root,@root
    valid users 设置可以访问的用户和组,例如 valid users = root,@root
    hosts deny 设置拒绝哪台主机访问,例如 hosts deny = 192.168.72.1
    hosts allow 设置允许哪台主机访问,例如 hosts allow = 192.168.72.2
    printable 表示设置是否为打印机

    关闭firewalld和selinux

    主机名称 操作系统 IP地址
    Samba共享服务器 centos8 192.168.248.134
    客户端 centos8 192.168.248.156

    安装Samba服务软件包

    [root@localhost ~]# yum -y install samba
    

     创建共享文件夹

    [root@localhost ~]# mkdir /opt/data
    

     描述共享文件夹信息,在samba服务主配置文件中下面追加共享文件夹配置参数。

    [root@localhost ~]# cat >> /etc/samba/smb.conf <<EOF
    > [database]
    > comment = data
    > path = /opt/data
    > browseable = yes
    > guest ok = yes
    > writable = yes
    > write list = share
    > public = yes
    > EOF
    

    启动samba服务,尝试在Windows上访问

    windows系统被要求验证账户口令

    创建SMB服务独立账号

    Samba服务自有密码文件
    通过smbpasswd -a USERNAME命令设置

    smbpasswd命令:
        -a Sys_User     //添加系统用户为samba用户并为其设置密码
        -d              //禁用用户帐号
        -e              //启用用户帐号
        -x              //删除用户帐号
    

    创建系统用户,并添加为smb用户

    [root@localhost ~]# useradd   smbuser
    [root@localhost ~]# smbpasswd  -a smbuser
    New SMB password:
    Retype new SMB password:
    Added user smbuser.
    

    在Windows主机上验证登录smbuser用户

    服务端配置用户认证共享

    #上面已经创建smbuser用户这里将smbuser用户映射为test
    [root@localhost ~]# echo 'smbuser = test' > /etc/samba/user
    
    #在全局配置中添加
    [root@localhost ~]# vim /etc/samba/smb.conf
    [global]
            workgroup = SAMBA
            security = user
            username map = /etc/samba/user   #添加此行
    
    可以使用testparm命令测试语法是否错误
    [root@localhost ~]# testparm
    Load smb config files from /etc/samba/smb.conf
    Loaded services file OK.
    Weak crypto is allowed
    Server role: ROLE_STANDALONE
    
     #重新启动服务
    [root@localhost ~]# systemctl  restart smb 

    在客户端查看查看samba服务器有哪些共享资源

    #安装客户端包
    [root@localhost ~]# yum -y install samba-client
    
    #将samba服务器的共享资源wangqing挂载到客户机本地
    [root@localhost ~]# mount -t cifs //192.168.248.134/database /opt  -o username=test,password=123
    
    #在客户机上进入共享目录创建新文件
    [root@localhost ~]# cd /opt/
    [root@localhost opt]# ls
    [root@localhost opt]# touch zxc
    [root@localhost opt]# mkdir asd
    [root@localhost opt]# ls
    asd  zxc
    
    #在服务器上验证
    [root@localhost ~]# ls /opt/data/
    asd  zxc
    

    配置匿名共享

    #修改全局配置文件
    [root@localhost ~]# vim /etc/samba/smb.conf 
    [global]
            workgroup = SAMBA
            security = user
            map to guest = Bad User   #添加此行
    
    [database]
          comment = data
          path = /opt/data
          browseable = yes
          guest ok = yes
          writable = yes
          public = yes         
    #重启服务
    [root@localhost ~]# systemctl  restart smb
    
    #在客户端将samba服务器的共享资源挂载到客户机本地
    [root@localhost ~]# mount -t cifs //192.168.248.134/database /opt -o username="Bad User"
    [root@localhost ~]# cd /opt/
    [root@localhost opt]# ls
    asd  zxc
    [root@localhost opt]# mkdir haha
    [root@localhost opt]# ls
    asd  haha  zxc
    
    #到服务端查看
    [root@localhost ~]# ll /opt/data/
    total 0
    drwxr-xr-x. 2 smbuser smbuser 6 Apr  2 17:03 asd
    drwxr-xr-x. 2 nobody  nobody  6 Apr  2 20:27 haha
    -rwxr--r--. 1 smbuser smbuser 0 Apr  2 17:03 zxc
    

     

  • 相关阅读:
    程序员要善于在工作中找到偷懒的办法
    关于count(1) 和 count(*)
    前端设计+程序开发那点事
    关于MySQL Connector/C++那点事儿
    windows下编译php5.2.17这是闹哪样?
    easyui使用时出现这个Uncaught TypeError: Cannot read property 'combo' of undefined
    视频文件自动转rtsp流
    Jenkins Pipeline如何动态的并行任务
    Jenkins的Dockerfile中如何批量迁移原Jenkins安装的插件
    Groovy中json的一些操作
  • 原文地址:https://www.cnblogs.com/diqiyao/p/14611031.html
Copyright © 2020-2023  润新知