Samba服务器搭建

好久不见. 提交于 2020-02-05 00:25:34



samba简介

Samba是在Linux和UNIX系统上实现SMB协议的一个免费软件,由服务器及客户端程序构成。SMB(Server Messages Block,信息服务块)是一种在局域网上共享文件和打印机的一种通信协议,它为局域网内的不同计算机之间提供文件及打印机等资源的共享服务。SMB协议是客户机/服务器型协议,客户机通过该协议可以访问服务器上的共享文件系统、打印机及其他资源。通过设置“NetBIOS over TCP/IP”使得Samba不但能与局域网络主机分享资源,还能与全世界的电脑分享资源。

摘自:百度百科

注:多数用于Linux跟Windows之间的文件共享。

samba两个主要进程是:smbdnmbd

两个进程的主要功能,如下:

  • smbd

    文件和打印服务、授权与被授权

  • nmbd(类似于DNS)

    名称解析、浏览服务


搭建服务

实验环境:

  • CentOS-7-x86_64-DVD-1708
  • win10
  • VMware Workstation 15 Pro

实验目的:
     学会搭建简单的samba服务



安装samba软件包

[root@localhost ~]# yum install -y samba* # 偷懒安装所有的依赖组件
[root@localhost ~]# rpm -qa | grep samba # 查看所安装的组件
samba-common-4.6.2-8.el7.noarch
samba-common-libs-4.6.2-8.el7.x86_64
samba-python-4.6.2-8.el7.x86_64
samba-libs-4.6.2-8.el7.x86_64
samba-common-tools-4.6.2-8.el7.x86_64
samba-winbind-modules-4.6.2-8.el7.x86_64
samba-client-4.6.2-8.el7.x86_64
samba-winbind-4.6.2-8.el7.x86_64
samba-client-libs-4.6.2-8.el7.x86_64
samba-4.6.2-8.el7.x86_64
samba-krb5-printing-4.6.2-8.el7.x86_64
[root@localhost ~]# 



配置smb.conf文件

编辑配置文件,添加一个以test作为网络共享文件名的共享目录。

[root@localhost ~]# vim /etc/samba/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 = SAMBA
    security = user

    passdb backend = tdbsam

    printing = cups
    printcap name = cups
    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 = root
    create mask = 0664
    directory mask = 0775
    
[test] # 网络文件名
    comment = This is a test directory # 提示信息
    path = /data/smb # 指定共享路径
    browseable = Yes # 可浏览
    writable = Yes # 可写



创建用户,共享目录

[root@localhost ~]# useradd -s /sbin/nologin -d /home/test test # 禁止本地登录,指定家目录
[root@localhost ~]# passwd test
Changing password for user test.
New password: 
BAD PASSWORD: The password is shorter than 8 characters
Retype new password: 
passwd: all authentication tokens updated successfully.
[root@localhost ~]# smbpasswd -a test # 将本地用户跟samba用户进行映射
New SMB password:
Retype new SMB password:
Added user test.
[root@localhost ~]# mkdir -p /data/smb # 创建共享目录
[root@localhost ~]# touch /data/smb/welcome.txt # 创建个欢迎文件



启动服务

[root@localhost ~]# setenforce 0 # 关闭SELinux
[root@localhost ~]# getenforce 
Permissive
[root@localhost ~]# firewall-cmd --permanent --add-service=samba # 让防火墙放行samba服务
success
[root@localhost ~]# firewall-cmd --reload # 重启防火墙
success
[root@localhost ~]# systemctl start smb # 启动samba服务
[root@localhost ~]# 
[root@localhost ~]# systemctl status smb # 查看samba服务的状态
● smb.service - Samba SMB Daemon
   Loaded: loaded (/usr/lib/systemd/system/smb.service; disabled; vendor preset: disabled)
   Active: active (running) since Tue 2020-02-04 06:37:24 EST; 2min 15s ago
 Main PID: 2766 (smbd)
   Status: "smbd: ready to serve connections..."
   CGroup: /system.slice/smb.service
           ├─2766 /usr/sbin/smbd
           ├─2767 /usr/sbin/smbd
           ├─2768 /usr/sbin/smbd
           └─2769 /usr/sbin/smbd

Feb 04 06:37:24 localhost.localdomain systemd[1]: Starting Samba SMB Daemon...
Feb 04 06:37:24 localhost.localdomain smbd[2766]: [2020/02/04 06:37:24.443822,  0] ../lib/util/b...dy)
Feb 04 06:37:24 localhost.localdomain systemd[1]: Started Samba SMB Daemon.
Feb 04 06:37:24 localhost.localdomain smbd[2766]:   STATUS=daemon 'smbd' finished starting up an...ons
Hint: Some lines were ellipsized, use -l to show in full.
[root@localhost ~]# 



连接测试

  1. Windows+R 输入 \\IP

    1

  2. 输入用户名和密码
    在这里插入图片描述

  3. 成功登陆

    3

注: 一个最简单、基本的samba服务器就搭建完成了。



疑难杂症

  1. 创建文件或文件夹,提示权限不够

    解决方法:

    更改用户对该共享目录的权限

    • 方法一

      [root@localhost data]# chown -R test smb/
      [root@localhost data]# ll
      total 0
      drwxr-xr-x. 2 test root 42 Feb  4 06:47 smb
      [root@localhost data]# 
      
    • 方法二

      [root@localhost ~]# setfacl -m user:test:rwx /data/smb/
      [root@localhost ~]# getfacl /data/smb/
      getfacl: Removing leading '/' from absolute path names
      # file: data/smb/
      # owner: root
      # group: root
      user::rwx
      user:test:rwx
      group::r-x
      mask::rwx
      other::r-x
      [root@localhost ~]#
      

  1. 输入用户名和密码之后,出现下图所示:

    4

    解决方法:

    请查看SELinux的状态(设置为关闭)和防火墙状态(放行samba服务)。



建立连接和清除缓存整个过程,有点繁琐。为了偷懒,我用C语言写一个操作samba服务的小程序。有兴趣的同学可以看一下。
Samba连接小工具

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!