zoukankan      html  css  js  c++  java
  • samba搭建

    samba搭建

    历史背景

    1987年,微软公司和英特尔公司共同制定了SMB(Server Messages
    Block,服务器消息块)协议,旨在解决局域网内的文件或打印机等资源的共享问题,这也使得在多个主机之间共享文件变得越来越简单。到了1991年,当时还在读大学的Tridgwell为了解决Linux系统与Windows系统之间的文件共享问题,基于SMB协议开发出了SMBServer服务程序。这是一款开源的文件共享软件,经过简单配置就能够实现Linux系统与Windows系统之间的文件共享工作。当时,Tridgwell想把这款软件的名字SMBServer注册成为商标,但却被商标局以SMB是没有意义的字符而拒绝了申请。后来Tridgwell不断翻看词典,突然看到一个拉丁舞蹈的名字—Samba,而且这个热情洋溢的舞蹈名字中又恰好包含了“SMB”,于是Samba服务程序的名字由此诞生(见图12-1)。Samba服务程序现在已经成为在Linux系统与Windows系统之间共享文件的最佳选择。

    常用参数

    [global] 参数 作用
    workgroup = MYGROUP #工作组名称
    server string = Samba Server Version %v #服务器介绍信息,参数%v为显示SMB版本号
    log file = /var/log/samba/log.%m #定义日志文件的存放位置与名称,参数%m为来访的主机名
    max log size = 50 #定义日志文件的最大容量为50KB
    security = user #安全验证的方式,总共有4种
    #share:来访主机无需验证口令;比较方便,但安全性很差
    #user:需验证来访主机提供的口令后才可以访问;提升了安全性
    #server:使用独立的远程主机验证来访主机提供的口令(集中管理账户)
    #domain:使用域控制器进行身份验证
    passdb backend = tdbsam #定义用户后台的类型,共有3种
    #smbpasswd:使用smbpasswd命令为系统用户设置Samba服务程序的密码
    #tdbsam:创建数据库文件并使用pdbedit命令建立Samba服务程序的用户
    #ldapsam:基于LDAP服务进行账户验证
    load printers = yes #设置在Samba服务启动时是否共享打印机设备
    cups options = raw #打印机的选项
    [homes] #共享参数
    comment = Home Directories #描述信息
    browseable = no #指定共享信息是否在“网上邻居”中可见
    writable = yes #定义是否可以执行写入操作,与“read only”相反
    [printers] #打印机共享参数

    配置共享资源

    Samba服务程序的主配置文件包括全局配置参数和区域配置参数。全局配置参数用于设置整体的资源共享环境,对里面的每一个独立的共享资源都有效。区域配置参数则用于设置单独的共享资源,且仅对该资源有效。

    常用参数

    参数 作用
    [database] 共享名称为database
    comment = Do not arbitrarily modify the database file 警告用户不要随意修改数据库
    path = /home/database 共享目录为/home/database
    public = no 关闭“所有人可见”
    writable = yes 允许写入操作

    配置步骤

    第1步:创建用于访问共享资源的账户信息。

    pdbedit命令用于管理SMB服务程序的账户信息数据库,格式为“pdbedit [选项] 账户”。在第一次把账户信息写入到数据库时需要使用-a参数,以后在执行修改密码、删除账户等操作时就不再需要该参数了。

    参数 作用
    -a 用户名 建立Samba账户
    -x 用户名 删除Samba账户
    -L 列出账户列表
    -Lv 列出账户详细信息的列表
    [root@localhost samba]# pdbedit -a -u boy
    new password:
    retype new password:
    Unix username:        boy
    NT username:
    Account Flags:        [U          ]
    User SID:             S-1-5-21-3832935702-3078286262-1233481437-1000
    Primary Group SID:    S-1-5-21-3832935702-3078286262-1233481437-513
    Full Name:
    Home Directory:       \localhostoy
    HomeDir Drive:
    Logon Script:
    Profile Path:         \localhostoyprofile
    Domain:               LOCALHOST
    Account desc:
    Workstations:
    Munged dial:
    Logon time:           0
    Logoff time:          Wed, 06 Feb 2036 10:06:39 EST
    Kickoff time:         Wed, 06 Feb 2036 10:06:39 EST
    Password last set:    Sat, 20 Jul 2019 09:47:00 EDT
    Password can change:  Sat, 20 Jul 2019 09:47:00 EDT
    Password must change: never
    Last bad password   : 0
    Bad password count  : 0
    Logon hours         : FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
    

    第2步:创建用于共享资源的文件目录。

    # 创建家目录
    [root@localhost samba]# mkdir /home/database
    [root@localhost samba]# chown -Rf boy:boy /home/database
    
    # 安装semanage
    [root@localhost samba]#  yum -y install policycoreutils-python.x86_64
    
    [root@localhost samba]# semanage fcontext -a -t samba_share_t /home/database
    
    # 修改完毕后执行restorecon命令,让应用于目录的新SELinux安全上下文立即生效。
    [root@localhost samba]# restorecon -Rv /home/database
    restorecon reset /home/database context unconfined_u:object_r:home_root_t:s0->unconfined_u:object_r:user_home_dir_t:s0
    

    第3步:设置SELinux服务与策略,使其允许通过Samba服务程序访问普通用户家目录。

    [root@localhost database]# getsebool -a | grep samba
    samba_create_home_dirs --> off
    samba_domain_controller --> off
    samba_enable_home_dirs --> off
    samba_export_all_ro --> off
    samba_export_all_rw --> off
    samba_load_libgfapi --> off
    samba_portmapper --> off
    samba_run_unconfined --> off
    samba_share_fusefs --> off
    samba_share_nfs --> off
    sanlock_use_samba --> off
    tmpreaper_use_samba --> off
    use_samba_home_dirs --> off
    virt_use_samba --> off
    [root@localhost database]# setsebool -P samba_enable_home_dirs on
    

    第4步:在Samba服务程序的主配置文件中,根据表12-2所提到的格式写入共享信息。在原始的配置文件中,[homes]参数为来访用户的家目录共享信息,[printers]参数为共享的打印机设备。

    [root@localhost samba]# cat smb.conf
    # See smb.conf.example for a more detailed config file or
    # read the smb.conf manpage.
    # Run 'testparm' to verify the config is correct after
    # you modified it.
    
    # 配置全局配置
    [global]
            workgroup = MYGROUP
            server string = Samba Server Version %v
            log file = /var/log/samba/log.%m
            max log size = 50
            security = user
            passdb backend = tdbsam
            load printers = yes
            cups options = raw
    
    
    [homes]
            comment = Home Directories
            valid users = %S, %D%w%S
            browseable = No
            read only = No
            inherit acls = Yes
    
    [printers]
            comment = All Printers
            path = /var/tmp
            printable = Yes
            create mask = 0600
            browseable = No
    
    [print$]
            comment = Printer Drivers
            path = /var/lib/samba/drivers
            write list = @printadmin root
            force group = @printadmin
            create mask = 0664
            directory mask = 0775
            
    # 配置共享资源
    [database]
            comment = Do not arbitrarily modify the database file
            path = /home/database
            public = no
            writable = yes
    
    

    第5步:Samba服务程序的配置工作基本完毕,重启服务

    [root@localhost samba]# systemctl restart smb
    [root@localhost samba]# systemctl enable smb
    

    windows访问

    第一步:cmd输入samba的服务器ip地址

    1563633174891

    第二步:输入账户密码

    1563633216385

    linux访问

    第一步:客户端安装支持文件共享服务的软件包(cifs-utils)。

    [root@localhost ~]# yum install cifs-utils

    第二步:在Linux客户端,按照Samba服务的用户名、密码、共享域的顺序将相关信息写入到一个认证文件中。为了保证不被其他人随意看到,最后把这个认证文件的权限修改为仅root管理员才能够读写:

    [root@localhost ~]# cat auth.smb
    username=boy
    password=123
    domain=MYGROUP

    第三步:在Linux客户端上创建一个用于挂载Samba服务共享资源的目录,并把挂载信息写入到/etc/fstab文件中,以确保共享挂载信息在服务器重启后依然生效

    [root@linuxprobe ~]# mkdir /database
    [root@linuxprobe ~]# vim /etc/fstab
    #
    # /etc/fstab
    # Created by anaconda on Wed May 4 19:26:23 2017
    #
    # Accessible filesystems, by reference, are maintained under '/dev/disk'
    # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
    #
    /dev/mapper/rhel-root                     /            xfs       defaults   1 1
    UUID=812b1f7c-8b5b-43da-8c06-b9999e0fe48b /boot        xfs       defaults   1 2
    /dev/mapper                                  /rhel-swap    swap swap  defaults    0 0
    /dev/cdrom                                /media/cdrom iso9660    defaults    0 0
    //192.168.10.10/database /database cifs credentials=/root/auth.smb 0 0
    [root@linuxprobe ~]# mount -a
    
    
  • 相关阅读:
    Debian 9 更换源
    MySqlDataAdapter.Fill() 报异常‘给定关键字不在字典中’的解决方案
    阿里云函数计算 .NET Core 初体验
    TimeSpan 的 Milliseconds 和 TotalMilliseconds 有啥区别?
    使用 gitee 托管你的 go 模块
    markdown的css样式(自己写的)
    markdown的流程图实现和代码语法着色
    Python元组与字典详解
    centos7的防火墙(firewalld)
    centos7 安装java和tomcat9
  • 原文地址:https://www.cnblogs.com/akiz/p/11219620.html
Copyright © 2011-2022 走看看