当我们需要windows和linux更好的进行文件交互时,使用Samba服务是一个不错的选择,本文介绍如何在linux中搭建Samba服务和怎样在windows下访问linux共享文件。

一、理论知识

1.SAMBA服务简介

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

2.SAMBA工作原理
  • 协议协商
    客户端在访问Samba服务器时,发送negprot指令数据包,告知目标计算机其支持的SMB类型。Samba 服务器根据客户端的情况,选择优的SMB类型,并做出回应。
  • 建立连接
    当SMB类型确认后,客户端会发送session setup指令数据包,提交帐号和密码,请求与Samba服务器建 立连接,如果客户端通过身份验证,Samba服务器会对session setup报文作出回应,并为用户分配唯一 的UID,在客户端与其通信时使用。
  • 访问共享资源
    客户端访问Samba共享资源时,发送tree connect指令数据包,通知服务器需要访问的共享资源名,如 果设置允许,Samba服务器会为每个客户端与共享资源连接分配TID,客户端即可访问需要的共享资源。
  • 断开连接
    共享使用完毕,客户端向服务器发送tree disconnect报文关闭共享,与服务器断开连接 。
3.SAMBA工作协议

Samba服务功能强大,这与其通信基于SMB协议有关。SMB不仅提供目录和打印机共享,还支持认证、权限 设置。
       Samba在windows下使用的是NetBIOS协议,如果你要使用Linux下共享出来的文件,请确认你的windows系 统下是否安装了NetBIOS协议 。

4. SAMBA端口 :TCP 139/445;UDP 137/138

二、samba服务命令知识

  1. samba用户

    管理samba用户
    • 添加samba用户
      smbpasswd -a
      pdbedit -a -u
    • 修改用户密码
      smbpasswd
    • 删除用户和密码
      smbpasswd –x
      pdbedit –x –u
    • 查看samba用户列表
      /var/lib/samba/private/passdb.tdb
      pdbedit –L –v
    • 查看samba服务器状态
      smbstatus
  2. SAMBA主配置文件

    SAMBA服务器全局配置
        - workgroup 指定工作组名称- server string 主机注释信息- netbios name 指定NetBIOS名- interface 指定服务侦听接口和ip- hosts allow 可用 “ , ” ,空格,或tab风格,默认允许所有主机访问,也可在每个共享独立配置- hosts deny 拒绝指定主机访问- config file =/etc/samba/conf.d/%U 用户独立的配置文件- Log level =2 日志级别,默认为0,不记录日志- max log size = 50 日志文件达到50k,将轮循rotate,单位KB- pasdb backend = tdbsam 密码数据库格式
    
    SAMBA服务共享目录配置
        - 每个共享目录应该有独立的  []  部分- [共享名称]  远程网络看到的共享名称- comment 注释信息- path 所共享的目录绝对路径- public 能否被guest访问的共享,默认为no,和guest ok类似- browsable 是否允许所有用户浏览此共享,默认为yes,no为隐藏- writable = yes 可以被所有用户读写,默认为no- read only = no 和 writable = yes  等价,如与以上设置发生冲突,放在后面的设置生效,默认为只读- write list 三种形式:用户,@组名- valid users 特定用户才能访问该共享,如为空,将允许所有用户访问,用户名之间用空格分隔
    

三、实际操作

1.安装SAMBA服务器及客户端
[root@c74 ~]# yum install samba -y   #服务器端安装
[root@c66 ~]# yum install samba-client -y    #客户端安装
2.关闭防火墙&Selinux
[root@c74 ~]# systemctl stop firewalld
[root@c74 ~]# setenforce 0
3.服务端配置

/etc/samba/smb.conf #SAMBA主配置文件

1) 配置共享资源

  1. 创建共享资源的账户
    #Samba服务程序默认使用的是用户口令认证模式。
    #不同之处,只有建立账户信息数据库之后,才能使用用户口令认证模式。
    #pdbedit命令用于管理SMB服务程序的账户信息数据库。在第一次把账户信息写入到数据库时需要使用-a参数,以后在执行修改密码、删除账户等操作时就不再需要该参数了。
     [root@c74 ~]# useradd u1[root@c74 ~]# id u1 uid=1000(u1) gid=1000(u1) groups=1000(u1)   #查看用户u1的id[root@c74 ~]# pdbedit -a -u u1  #设置密码new password:retype new password:Unix username:        u1NT username:          Account Flags:        [U          ]User SID:             S-1-5-21-879942754-2335623176-2780471471-1000Primary Group SID:    S-1-5-21-879942754-2335623176-2780471471-513Full Name:            Home Directory:       \\c74\u1HomeDir Drive:        Logon Script:         Profile Path:         \\c74\u1\profileDomain:               C74Account desc:         Workstations:         Munged dial:          Logon time:           0Logoff time:          Wed, 06 Feb 2036 23:06:39 CSTKickoff time:         Wed, 06 Feb 2036 23:06:39 CSTPassword last set:    Tue, 27 Nov 2018 20:25:05 CSTPassword can change:  Tue, 27 Nov 2018 20:25:05 CSTPassword must change: neverLast bad password   : 0Bad password count  : 0Logon hours         : FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
  1. 创建共享资源文件目录
    #注意文件读写权限问题
      [root@c74 ~]# mkdir /share[root@c74 ~]# chown -Rf u1:u1 /share/[root@c74 ~]# ll /drwxrwxrwx.   2 u1   u1       6 Nov 18 15:39 share

2)修改SAMBA主配置文件,修改共享信息

       [root@c74 ~]# vi /etc/samba/smb.conf[global]     #全局配置名称 workgroup = MYGROUP #工作组名称server string = Samba Server Version %v #samba信息,参数%v为显示SMB版本号log file = /var/log/samba/log.%m    #日志存放位置与>名称,%m为来访的主机名max log size = 50   #日志大容量50kbsecurity = user     #安全验证方式,见下介绍passdb backend = tdbsam     #用户后台的类型,见下介>绍load printers = yes     #共享打印机设备cups options = raw      #打印机的选项[share1]    #局部共享配置名称comment = share info... #提示信息path = /share      #共享目录public = no             #关闭所有人可见writable = yes          #可写#安全验证方式介绍:
#share:来访主机无需验证口令;比较方便,但安全性很差
#user:需验证来访主机提供的口令后才可以访问;提升了安全性 #server:使用独立的远程主机验证来访主机提供的口令(集中管理账户)
#domain:使用域控制器进行身份验证 #用户后台的类型介绍:
#smbpasswd:使用smbpasswd命令为系统用户设置Samba服务程序的密码
#tdbsam:创建数据库文件并使用pdbedit命令建立Samba服务程序的用户
#ldapsam:基于LDAP服务进行账户验证

3)重启SAMBA服务并且开机自启

        [root@c74 ~]# systemctl restart smb && systemctl enable smb
4.windows测试共享

开始—>运行—>\192.168.192.133—>输入用户名密码—>登录成功 (用户为服务端设置的共享用户),此时出现的共享文件名是我们在SAMBA主配置文件里面区域配置的文件名,并不是我们在服务器端创建的共享文件,但二者是有联系的。

创建一个文本文件,写入信息并保存测试
#由于Windows系统的缓存原因,下次在登陆时仍保存上一次的用户名,可在cmd模式下清除Samba登陆信息,命令如下 net use * /del /y

在window中的共享目录里新建一个目录:windowsset
去服务器里面的共享目录/share查看:
[root@c74 share]# ls
windowsset服务器端存在windowsset目录
可以做更多的测试,如删除目录,创建、写入、删除文件。结果发现这些操作都可以实现。
5.Linux测试共享

#linux连接samba smbclient //192.168.192.133/share1 -U u1
#//192.168.192.133/share1 此处文件名为并不是服务端共享的文件名,而是服务端SAMBA主配置文件中的局部共享配置名称

[root@c66 sharemnt]# smbclient //192.168.192.133/share1 -U u1
Enter SAMBA\u1's password:
Domain=[C74] OS=[Windows 6.1] Server=[Samba 4.7.1]
smb: \> pwd
Current directory is \\192.168.192.133\share1\
#此时所处路径为服务端的/share1,操作结果可以去服务端的共享目录/share查看
smb: \> mkdir 11
smb: \> cd  11
smb: \11\> cd ..
smb: \> rm -rf 11
NT_STATUS_NO_SUCH_FILE listing \-rf

#可进入该目录下的所有目录,也可以创建目录,但不能删除目录
#可以删除文件,但不能创建、写入、修改文件

解决以上问题的方法

SAMBA挂载
#客户端安装支持文件共享服务的软件包cifs-utils yum install cifs-utils -y
#Samba的用户名、密码、共享域的顺序将相关信息写入到一个认证文件中

[root@c66 ~]# vi /etc/samba/shareuser.smb  #这个文件没有,需要创建
username=u1
password=123456
domain=MYGROUP
[root@c66 ~]# chmod -Rf 600 /etc/samba/shareuser.smb
[root@c66 ~]# mkdir /sharemnt     #创建挂载目录
[root@c66 ~]# vi /etc/fstab   #自动挂载
//192.168.192.133/share1   /sharemnt  cifs   credentials=/etc/samba/shareuser.smb   0  0
#//192.168.192.133/share1 此处文件名为并不是服务端共享的文件名,而是服务端SAMBA主配置文件中的局部共享配置名称
[root@c66 ~]# mount -a #此时Linux客户端即可在共享文件里进行任何操作

四、练习题

  1. 现有一个工作组WG,并发布共享目录/share,此共享目录允许所有员工访问
  [root@c74 ~]# vi /etc/samba/smb.conf [global]        workgroup = WG        security = user        passdb backend = tdbsam        map to guest = bad user        dns proxy = no[share]        comment = Share Directories        path = /share        read only = yes        guest ok = yes [root@c74 ~]# systemctl restart smb mkdir -p /share[root@c74 ~]# mkdir -p /share  在windows中测试,开始运行并输入\\192.168.5.129\share,根据结果查看是否正确
#在测试中一旦用Windows登陆Samba,下次在登陆时仍保持上一次的用户名,可使用 net use * /del /y 清除Samba登陆信息
  1. 现有多个部门,因工作需要,将TS部的资料存放/TS录中集中管理,以便TS人员浏览,并且该目录只允许TS部员工访
  [root@c74 ~]# mkdir -p /ts [root@c74 ~]# useradd ts_user1 -g ts -s /sbin/nologin [root@c74 ~]# chown -R ts_user1:ts /ts [root@c74 ~]# chmd 660 /ts smbpasswd -a ts_user1 #进行测试;在创建一个其它用户测试可否访问? [root@c74 ~]# vi /etc/samba/smb.conf [global]        workgroup = WG        security = user        passdb backend = tdbsam        map to guest = bad user        dns proxy = no[share]       comment = Share Directories        path = /share        read only = yes        guest ok = yes[TS]        comment = ts        path = /ts        writable = yes        write list = +ts [root@c74 ~]# systemctl restart smb
  1. 实现不同的用户访问同一个共享目录具有不同的权限,便于管理和维护。
    a. 某公司有5个部门,分别为:人事行政部(HR)、财务部(FM)、技术支持部(TS)、项目部(PD)、客服部(CS)
    b. 各部门的文件夹只允许本部门员工有权访问;各部门之间交流性质的文件放到公用文件夹中(SHARE)
    c. 每个部门都有一个管理本部门文件夹的管理员账号和一个只能新建和查看文件的普通用户权限的账号
    d. 公用文件夹中存放各部门共享文件的文件夹
    e. 对于各部门自己的文件夹,各部门管理员具有完全控制权限,而各部门普通用户可以在该部门文件夹下新建文件及文 件夹,并且对于自己新建的文件及文件夹有完全控制权限,对于管理员新建及上传的文件和文件夹只能访问,不能更改 和删除。不是本部门用户不能访问本部门文件夹
    f. 对于公用文件夹中的各部门共享文件夹,各部门管理员具有完全控制权限,而各部门普通用户可以在该部门文件夹下 新建文件及文件夹,并且对于自己新建的文件及文件夹有完全控制权限,对于管理员新建及上传的文件和文件夹只能访 问,不能更改和删除。本部门用户(包括管理员和普通用户)在访问其他部门共享文件夹时,只能查看不能修改删除新建
  • 名称要求:(可忽略大小写)
    各文件夹名称,HR、FM、TS、PD、CS、SHARE
    HR管理员HR_ADMIN,普通用户HR_USER
    FM管理员FM_ADMIN,普通用户FM_USER
    TS管理员TS_ADMIN,普通用户TS_USER
    PD管理员PD_ADMIN,普通用户PD_USER
    CS管事员CS_ADMIN,普通用户CS_USER
#HR [root@c74 ~]# useradd hr_admin hr_user -s /sbin/nologin [root@c74 ~]# smbpasswd -a hr_admin [root@c74 ~]# smbpasswd -a hr_user [root@c74 ~]# mkdir -p /company/HR [root@c74 ~]# chmod 1775 /company/HR  [root@c74 ~]# chown hr_admin:hr_admin /company/HR #SHARE [root@c74 ~]# mkdir -p /company/share [root@c74 ~]# mkdir -p /company/share/HR#smb [root@c74 ~]# vi /etc/samba/smb.conf [global]        workgroup = WORKGROUP        security = user        passdb backend = tdbsam        map to guest = bad user        dns proxy = no [share]        comment = Share        path = /share        browseable = yes        read only = yes        guest ok = yes [hr]        comment = HR        path = /company/HR        browseable = yes        writable = yes        admin users = hr_admin        valid users = hr_user,hr_admin        create mask = 0750        directory mask = 0750 [share_hr]        comment = share_hr        path = /company/share/HR        writable = yes        admin users = hr_admin        valid users = hr_user,hr_admin #重启服务并进行测试        [root@c74 ~]# systemctl restart smb

SAMBA文件共享服务相关推荐

  1. 搭建samba文件共享服务

    文章目录 搭建samba文件共享服务 前言 搭建及设置步骤 实验环境 Win10文件共享到Linux里面 首先创建一个共享目录 GUEST账户启用 打开本地策略 将用户权限分配里面的拒绝从网络访问这台 ...

  2. Centos 8 搭建samba文件共享服务(超详细)

    文章目录 一.samba文件共享服务简介 二.搭建及设置步骤 一.samba文件共享服务简介 Samba是在Linux和UNIX系统上实现SMB协议的一个免费软件,由服务器及客户端程序构成.SMB(S ...

  3. LinuxProbe 0x15 SAMBA文件共享服务、NFS网络文件系统、AutoFs自动挂载服务、DNS域名解析服务

    配置网络文件系统(Network File System,NFS)服务来简化Linux系统之间的文件共享工作, 通过部署NFS服务在多台Linux系统之间挂载并使用资源. 在管理设备挂载信息时,使用a ...

  4. ubuntu18.4搭建samba文件共享服务

    今天比较有空就来玩玩怎么去在ubuntu上搭建samba服务器,通过win7 ip地址去访问共享文件,这也是个windos和ubuntu共享文件一种常用方法.这里只是做笔记用,既然其他网友已经写得很好 ...

  5. samba文件共享服务详解

    内容: 1.samba的作用以及由来 2.samba的特性 3.samba的工作过程 4.samba的安装以及配置 5.samba的搭建测试 一.samba的作用以及由来 SAMBA历史溯源(摘自百度 ...

  6. 主机屋linux怎么连,全网最详细的samba文件共享服务!

    了解samba: 1. samba是linux共享文件系统,将SMB(服务消息块)/CIFS(通用网络文件系统)协议在linux中进行实现,让linux.unix.windows系统之间可以相互访问文 ...

  7. 解决samba文件共享服务因445端口被禁不能访问问题

    依靠samba服务挂载的远程文件夹忽然不能访问了,怀疑是端口被禁, 查看samba服务使用的端口: sudo netstat -tlnp |grep smb 显示当前使用的是默认的139和445(wi ...

  8. cifs文件系统{samba文件共享服务}

    一.samba介绍 1.提供cifs协议实现共享文件,主要用于windows与linux的网络文件系统 二.搭建环境安装服务 1.配置yum仓库 2.关闭防火墙 systemctl stop fire ...

  9. 服务器文件共享不同用户互访设置,samba配置_samba文件共享服务配置详解

    摘要 腾兴网为您分享:samba文件共享服务配置详解,之了课堂,央视影音,人人理财,平安证券等软件知识,以及游戏通用窗口化工具,福建省校讯通,净天之命1.71,teamviewer安卓,宝贝听听,手机 ...

  10. RedHat学习笔记40--Samba文件共享服务

    本系列博客是笔者在学习刘遄的<Linux就该这样学>的笔记,个人觉得这是一本很好的书,很值得我们去学习.因为笔者是自学,可能有些问题了解的层面没有那么深,各位大牛在看到笔者写的内容有错漏, ...

最新文章

  1. 内存映射IO (MMIO) 简介
  2. web前端知识体系大全
  3. 【TensorFlow2.0】TensorFlow2.0专栏上线,你来吗?
  4. go get国内解决办法汇总
  5. (七)SpringBoot+SpringCloud —— 集成断路器
  6. a股历史30年的大盘价_2020年7月30日大盘走势分析
  7. 数学江湖中的“独孤九剑”
  8. WriteableBitmap process summary
  9. linux下vi常用命令——读《鸟哥的linux私房菜》整理
  10. Linux网络实时流量监测工具iftop的安装使用
  11. IE9 BUG overflow :auto 底部空白解决方案
  12. c语言图书管理系统登录系统,C语言图书管理系统设计代码.doc
  13. SuperMap AR三维管线制作
  14. GitHub 下载单个文件/文件夹
  15. 什么是操作系统?操作系统的定义、功能、特性
  16. 澳拳击袋鼠体型巨大 身高超2米体重近200斤
  17. 2020年创业风口:社交电商
  18. 借助云开发,利用订阅消息,云函数路由实现小程序好友一对一聊天,添加好友等仿微信功能
  19. 【JavaScript】 模块 module
  20. SAP系统md04例外消息说明

热门文章

  1. linux 消息队列
  2. Vim插件推荐--模糊搜索插件ctrlp使用方法
  3. lan口配置 petalinux_【Xilinx-Petalinux学习】-02-建立PetaLinux工程
  4. WIN10更新后遗症+解决方案2——Solidworks注册机闪退
  5. 通过微信聊天记录生成词云
  6. CAD2020软件安装教程【搬运】
  7. iserdese2接口详解_Xilinx FPGA LVDS应用
  8. SBI集团“逆市”入股玖富,背后意味着什么?|一点财经
  9. P2P平台公司的9种职位
  10. 工业企业能源管理系统