zoukankan      html  css  js  c++  java
  • 红帽7 Samba服务实现文件共享

    Samba 文件共享服务

    首先需要先通过Yum 软件仓库来安装 Samba 服务程序(Samba 服务程序的名字也恰巧是软件包的名字)

    [root@localhost ~]# yum install samba
    Loaded plugins: langpacks, product-id, subscription-manager
    This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.
    Resolving Dependencies
    --> Running transaction check
    ---> Package samba.x86_64 0:4.1.1-31.el7 will be installed
    --> Finished Dependency Resolution
    
    Dependencies Resolved
    
    ================================================================================
     Package         Arch             Version                 Repository       Size
    ================================================================================
    Installing:
     samba           x86_64           4.1.1-31.el7            rhel7           527 k
    
    Transaction Summary
    ================================================================================
    Install  1 Package
    
    Total download size: 527 k
    Installed size: 1.5 M
    Is this ok [y/d/N]: y
    Downloading packages:
    Running transaction check
    Running transaction test
    Transaction test succeeded
    Running transaction
      Installing : samba-4.1.1-31.el7.x86_64                                    1/1 
    rhel7/productid                                          | 1.6 kB     00:00     
      Verifying  : samba-4.1.1-31.el7.x86_64                                    1/1 
    
    Installed:
      samba.x86_64 0:4.1.1-31.el7                                                   
    
    Complete!
    View Code

    去除Samba服务主配置文件中的注释信息,先把主配置文件改个名字,然后使用 cat 命令读入主配置文件,再在 grep 命令后面添加-v 参数(反向选择),分别去掉所有以井号(#)和分号(;)开头的注释信息行,对于剩余的空白行可以使用^$参数来表示并进行反选过滤,最后把过滤后的可用参数信息通过重定向符覆盖写入到原始文件名称中。

    [root@localhost ~]# mv /etc/samba/smb.conf /etc/samba/smb.conf_bak
    [root@localhost ~]# cat /etc/samba/smb.conf_bak | grep -v "#" | grep -v ";" | grep -v "^$" > /etc/samba/smb.conf
    [root@localhost ~]# cat /etc/samba/smb.conf
    [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
        browseable = no
        writable = yes
    [printers]
        comment = All Printers
        path = /var/spool/samba
        browseable = no
        guest ok = no
        writable = no
        printable = yes

      Samba服务程序中的参数以及作用

    [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]   #打印机共享参数
      comment = All Printers  
      path = /var/spool/samba #共享文件的实际路径(重要)。
      browseable = no  
      guest ok = no #是否所有人可见,等同于"public"参数。
      writable = no  
      printable = yes

     

    配置共享资源

    用于设置 Samba 服务程序的参数以及作用

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

     

     

     

     

     

     

     

     

     

    第一步:创建用于访问共享资源的账户信息。Samba 服务程序默认使用的是用户口令认证模式(user)。这种认证模式可以确保仅让有密码且受信任的用户访问共享资源,只有建立账户信息数据库之后,才能使用用户口令认证模式。另外,Samba 服务程序的数据库要求账户必须在当前系统中已经存在,否则日后创建文件时将导致文件的权限属性混乱不堪,由此引发错误。

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

    作时就不再需要该参数了。

     用于 pdbedit 命令的参数以及作用

    参数 作用
    -a 用户名 建立Samba用户
    -x 用户名 删除Samba用户
    -L 列出用户列表
    -Lv 列出用户详细信息的列表

     

     

     

     

     

     

     

     

    [root@localhost ~]# id lisi
    uid=1001(lisi) gid=1001(lisi) groups=1001(lisi)
    [root@localhost ~]# pdbedit -a -u lisi
    new password:   输入该账户在Samba服务数据库中的密码
    retype new password:   再次输入密码确认
    Unix username:        lisi
    NT username:          
    Account Flags:        [U          ]
    User SID:             S-1-5-21-914565673-3598972981-4268758770-1000
    Primary Group SID:    S-1-5-21-914565673-3598972981-4268758770-513
    Full Name:            
    Home Directory:       \localhostlisi
    HomeDir Drive:        
    Logon Script:         
    Profile Path:         \localhostlisiprofile
    Domain:               LOCALHOST
    Account desc:         
    Workstations:         
    Munged dial:          
    Logon time:           0
    Logoff time:          Wed, 06 Feb 2036 23:06:39 CST
    Kickoff time:         Wed, 06 Feb 2036 23:06:39 CST
    Password last set:    Tue, 13 Nov 2018 16:40:45 CST
    Password can change:  Tue, 13 Nov 2018 16:40:45 CST
    Password must change: never
    Last bad password   : 0
    Bad password count  : 0
    Logon hours         : FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF

    第二步:创建用于共享资源的文件目录。在创建时,不仅要考虑到文件读写权限的问题,还需考虑SELinux服务与策略,/database 目录是所有者是root不允许其他用户访问,所以可以把权限设置高些或者用chmod命令把所有者改成 lisi 即可。

    [root@localhost ~]# mkdir /database
    [root@localhost ~]# ls -ld /database/
    drwxr-xr-x. 2 root root 21 Nov 13 16:44 /database/
    [root@localhost ~]# chmod 777 /database/

    第三步:设置 SELinux 服务与策略

    [root@localhost ~]# 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_portmapper --> off
    samba_run_unconfined --> off
    samba_share_fusefs --> off
    samba_share_nfs --> off
    sanlock_use_samba --> off
    use_samba_home_dirs --> off
    virt_sandbox_use_samba --> off
    virt_use_samba --> off
    [root@localhost ~]# setsebool -p samba_export_all_rw=on

    第四步:在 Samba 服务程序的主配置文件中,根据上表中的信息写入。[homes]参数为来访用户的家目录共享信息,[printers]参数为共享的打印机设备,不需要可删除。

    [root@localhost ~]# vim /etc/samba/smb.conf
    [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
    [database]
    comment = Do not arbitrarily modify the database file
    path = /database
    public = no
    writable = yes

    第五步:Samba 服务程序的配置工作基本完毕。接下来重启 smb 服务(Samba 服务程序在 Linux 系统中的名字为 smb)并清空 iptables 防火墙就可检验效果了。

    [root@localhost ~]# systemctl restart smb
    [root@localhost ~]# systemctl enable smb
    ln -s '/usr/lib/systemd/system/smb.service' '/etc/systemd/system/multi-user.
    target.wants/smb.service'
    [root@localhost ~]# iptables -F
    [root@localhost ~]# service iptables save
    iptables: Saving firewall rules to /etc/sysconfig/iptables:[ OK ]

    Windows 访问文件共享服务

    Samba 服务器和 Windows 客户端使用的操作系统以及 IP 地址

    主句名称 操作系统 IP地址
    Samba 共享服务器 RHEL 7  192.168.10.10
    Windows 客户 Windows10 192.168.10.1

     

     

     

     

     

     

    在 Windows 系统中访问共享资源,只需在 Windows 的“运行”命令框中输入两个反斜杠,然后再加服务器的 IP 地址即可。

     

    输入 lisi 账户名和使用pdbedit命令设置的密码后,就可以登录到界面中了。

     由于 Windows 系统的缓存原因,有可能在第二次登录时提供了正确的账户和密码,依然会报错,这时只需要重新启动一下 Windows 客户端就没问题了

     

     Linux 访问文件共享服务

     Samba 共享服务器和 Linux 客户端各自使用的操作系统以及 IP 地址

    主机名称 操作系统 IP地址
    Samba 共享服务 RHEL7 操作系 192.168.10.10
    Linux 客户端 RHEL7 操作系统 192.168.10.20

     

    [root@localhost Desktop]# yum install cifs-utils
    Loaded plugins: langpacks, product-id, subscription-manager
    This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.
    rhel7                                                    | 4.1 kB     00:00     
    (1/2): rhel7/group_gz                                      | 134 kB   00:00     
    (2/2): rhel7/primary_db                                    | 3.4 MB   00:00     
    Resolving Dependencies
    --> Running transaction check
    ---> Package cifs-utils.x86_64 0:6.2-6.el7 will be installed
    --> Finished Dependency Resolution
    
    Dependencies Resolved
    
    ================================================================================
     Package             Arch            Version               Repository      Size
    ================================================================================
    Installing:
     cifs-utils          x86_64          6.2-6.el7             rhel7           83 k
    
    Transaction Summary
    ================================================================================
    Install  1 Package
    
    Total download size: 83 k
    Installed size: 174 k
    Is this ok [y/d/N]: y
    Downloading packages:
    Running transaction check
    Running transaction test
    Transaction test succeeded
    Running transaction
      Installing : cifs-utils-6.2-6.el7.x86_64                                  1/1 
    rhel7/productid                                          | 1.6 kB     00:00     
      Verifying  : cifs-utils-6.2-6.el7.x86_64                                  1/1 
    
    Installed:
      cifs-utils.x86_64 0:6.2-6.el7                                                 
    
    Complete!
    View Code

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

    理员才能够读写

    [root@localhost ~]# vim auth.smb
    username=lisi
    password=123456
    domain=MYGROUP
    [root@localhost ~]# chmod 600 auth.smb

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

    [root@localhost ~]# mkdir /database
    [root@localhost ~]# vim /etc/fstab 
    #
    # /etc/fstab
    # Created by anaconda on Tue Oct  2 18:32:33 2018
    #
    # 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=e4edf9ea-99aa-4c91-8c9b-c13549216c84 /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
            第一个database指的是共享的名称,也就是samba主配置文件里中括号里的名称
    [root@localhost ~]# mount -a

    Linux 客户端成功地挂载了 Samba 服务的共享资源。进入到挂载目录/database 后就可以看到 Windows 系统访问 Samba 服务程序时留下来的文件了

    [root@localhost database]# cat /database/readme.txt 
    asds

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

  • 相关阅读:
    aop日志记录
    RocketMQ 启动停止命令
    windows搭建RocketMQ服务
    zTree实战
    springboot 传List参数
    Spring Boot之 Controller 接收参数和返回数据总结(包括上传、下载文件)
    SpringBoot Controller接收参数的几种常用方
    clob大数据转换为多行数据
    oracle dba学习
    TreeNode(包含读出文件里的信息)
  • 原文地址:https://www.cnblogs.com/zq8421/p/9952952.html
Copyright © 2011-2022 走看看