一、Samba介绍

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

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

 CIFS:Common Internet File System通用网络文件系统,是windows主机之间共享的协议,samba实现了这个协议,所以可以实现wondows与linux之间的文件共享服务。

 SAMBA的功能:

  共享文件和打印,实现在线编辑
  实现登录SAMBA用户的身份认证
  可以进行NetBIOS名称解析
  外围设备共享

二、Samba服务

1、相关包

  Samba 提供smb服务
  Samba-client 客户端软件
  samba-common 通用软件
  cifs-utils smb 客户端工具
  samba-winbind 和AD相关

2、服务进程

  smbd 提供smb (cifs) 服务;监听端口 TCP: 139,445

  nmbd 提供NetBIOS名称解;监听端口 UDP: 137,138

3、配置文件

  主配置文件:/etc/samba/smb.conf  (通过 man smb.conf 可查看帮助)

  语法检查:testparm [-v] [/etc/samba/smb.conf]

  客户端工具:smbclient,mount.cifs

  smb.conf 配置文件:(#和; 开头的语名为注释,大小写不敏感)

    [global]  #全局设置

    workgroup=name  #指定工作组名称
    server=string  #主机注释信息
    netbios=name  #指定NetBIOS名
    interfaces    #指定服务侦听接口和IP
    hosts allow host #允许指定主机访问,默认允许所有主机访问,用逗号、空格、tab分隔,如host allow = 172.16. .example.com
    host deny host   #拒绝指定主机访问
    config file=/etc/samba/conf.d/%U  #用户独立的配置文件
    Log file=/var/log/samba/log.%m  #不同客户机采用不同日志
    log level = 2  #日志级别,默认为0,不记录日志
    max log size=50  #日志文件达到50K,将轮循rotate,单位KB
    security三种认证方式:
      share:匿名(CentOS7不再支持)
      user:samba用户(采有linux用户,samba的独立口令)
      domain:使用DC(DOMAIN CONTROLLER)认证
    passdb backend = tdbsam#密码数据库格式

    [homes]  #用户家目录共享

    [printers]  #定义打印机资源和服务

    [sharename]  #自定义的共享目录配置

    [共享名称]  #远程网络看到的共享名称
    comment  #注释信息
    path  #所共享的目录路径
    public  #能否被guest访问的共享,默认no,和guest ok 类似
    browsable  #是否允许所有用户浏览此共享,默认为yes,no为隐藏
    writable=yes  #可以被所有用户读写,默认为no
    read only=no  #和writable=yes等价,如与以上设置冲突,放在后面的设置生效,默认只读
    write list   #三种形式:用户,@组名,+组名,用,分隔 如writable=no,列表中用户或组可读写,不在列表中用户只读
    valid users  #特定用户才能访问该共享,如为空,将允许所有用户,用户名之间用空格分隔

    宏定义:
      %m  客户端主机的NetBIOS名
      %H  当前用户家目录路径
      %g  当前用户所属组
      %L  samba服务器的NetBIOS名
      %T  当前日期和时间
      %M  客户端主机的FQDN
      %U  当前用户用户名
      %h  samba服务器的主机名
      %I  客户端主机的IP
      %S  可登录的用户名

4、samba用户管理

  实现samba用户需要安装 samba-common-tools 包,samba用户须是Linux用户,建议使用/sbin/nologin

   [root@centos7 ~]# yum install -y samba-common-tools

  添加samba用户

   smbpasswd -a
   pdbedit -a -u

  修改用户密码

   smbpasswd

  删除用户和密码

   smbpasswd -x
   pdbedit -x -u

  查看samba用户列表

   /var/lib/samba/private/passdb.tdb
   pdbedit -L -v

  查看samba服务器状态

   smbstatus

5、smb客户端访问

 1. UNC路径:(Universal Naming Convention,通用命名规范),格式:\\sambaserver\sharename

 2. 终端下使用smbclient登录服务器

  smbclient -L instructor.example.com
  smbclient -L instructor.example.com -U smbuser
  smbclient //instructor.example.com/shared -U smbuser

  可以使用-U选项来指定用户%密码,或通过设置和导出USER和PASSWD环境变量来指定

6、挂载cifs文件系统

 1. 手动挂载

  mount -o user=smbuser,password=centos //server/shared /mnt/smb

 2. 开机自动挂载

  cat /etc/fstab  可以用文件代替用户名和密码的输入

  //server/shared /mnt cifs credentials=/etc/smb.txt 0 0

  如://192.168.214.17/smbshare  /mnt/smbshare  cifs  crendentials=/etc/smb.txt 0 0(如果是centos6还需加 sec=ntlmssp 挂载选项)

  cat /etc/smb.txt

  username=smbuser

  password=centos

  chmod 600 /etc/smb.txt

三、实现smb共享

1、实验环境

  系统:CentOS7.6

  主机:一台服务器端(192.168.214.17),一台客户端(192.168.214.27)

  软件:samba  (服务器端),cifs-utils (客户端),光盘yum源

2、实现过程

 1. 在服务器上安装samba包

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

 2. 创建samba用户和组

[root@centos7 ~]# yum install -y samba-common-tools    #实现samba用户需要装此包
[root@centos7 ~]# groupadd -r smbgroup
[root@centos7 ~]# useradd -s /sbin/nologin -G smbgroup smbuser1
[root@centos7 ~]# smbpasswd -a smbuser1
[root@centos7 ~]# useradd -s /sbin/nologin smbuser2
[root@centos7 ~]# smbpasswd -a smbuser2

 3. 创建samba共享目录,并设置SELinux

[root@centos7 ~]# mkdir /data/smbshare
[root@centos7 ~]# chgrp smbgroup /data/smbshare
[root@centos7 ~]# chmod /data/smbshare
#以下为SELinux设置,SELinux关闭的不用设置
[root@centos7 ~]# semanage fcontext -a -t samba_share_t '/data/smbshare(/.*)?'
[root@centos7 ~]# restorecon -vvFR /data/smbshare

 4. samba服务器配置

[root@centos7 ~]# vim /etc/samba/smb.conf
#在[global]选项下,设置以下两项,如有默认选项,则不用改
security = user
passdb backend = tdbsam
#以下为自定义共享配置
[smbshare]
path = /data/smbshare
writeable = no
write list = @smbgroup #writeable = no时只有smbgroup组的用户才有写权限

 5. 启动samba服务

[root@centos7 ~]# systemctl start smb nmb
[root@centos7 ~]# systemctl enable smb nmb #设置开机启动
#以下为防火墙设置,已关闭的不用设置
[root@centos7 ~]# firewall-cmd --permanent --add-service=samba
[root@centos7 ~]# firewall-cmd --reload

 6. 客户端访问测试

[root@centos7- ~]# yum install -y cifs-utils    #安装包
#用smbuser1用户挂载smb共享并访问
[root@centos7- ~]# mkdir /mnt/smbuser1
[root@centos7- ~]# mount -o username=smbuser1 //192.168.214.17/smbshare /mnt/smbuser1
Password for smbuser1@//192.168.214.17/smbshare: ****** #输入密码
#或用mount -o username=smbuser1,password=centos //192.168.214.17/smbshare /mnt/smbuser1
#注意centos6挂载centos7时还要加一个挂载选项sec=ntlmssp
#mount -o sec=ntlmssp,username=smbuser1,password=centos //192.168.214.17/smbshare /mnt/smbuser1
[root@centos7- ~]# cd /mnt/smbuser1/ #进入挂载目录
[root@centos7- smbuser1]# ls #可以看到可以访问了
a.txt initial-setup-ks.cfg
#根据之前的smb.conf设置知道,smbuser1有写权限,smbuser2无写权限,可以来测试下
[root@centos7- smbuser1]# touch b.txt
[root@centos7- smbuser1]# ls #smbuser1成功了
a.txt b.txt initial-setup-ks.cfg
#用smbuser2用户挂载smb共享并访问
[root@centos7- ~]# mkdir /mnt/smbuser2
[root@centos7- ~]# mount -o username=smbuser2,password=centos //192.168.214.17/smbshare /mnt/smbuser2
[root@centos7- ~]# cd /mnt/smbuser2/
[root@centos7- smbuser2]# ls #可以看到挂载成功了
a.txt b.txt initial-setup-ks.cfg
[root@centos7- smbuser2]# touch c.txt #可以看到无写权限
touch: cannot touch ‘c.txt’: Permission denied

Linux学习-samba服务的更多相关文章

  1. 利用Linux的Samba服务模拟NT域

    利用Linux的Samba服务模拟NT域 Samba是一个与Windows NT具有相同协议的软件包.我们可以利用Samba服务来模拟 Windows NT域,使用户从Windows计算机上直接使用一 ...

  2. Linux 配置samba服务实现与Windows文件共享

    目录: 1.samba服务介绍 2. 安装samba服务和客户端 3.samba配置文件详解 4.配置实例 5.客户端挂载与测试 6.samba排错 1.Samba服务介绍     Samba 最先在 ...

  3. linux配置samba服务【原创】

    转载请注明出处http://www.cnblogs.com/paul8339/p/7509981.html 需求,windows服务器访问linux的共享文件,需要linux服务器安装并配置samba ...

  4. linux下Samba服务配置

    SMB是基于客户机/服务器型的协议,因而一台Samba服务器既可以充当文件共享服务器,也可以充当一个Samba的客户端,例如,一台在Linux 下已经架设好的Samba服务器,windows客户端就可 ...

  5. 【Linux】samba服务

    samba是一个实现不同操作系统之间文件共享和打印机共享的一种SMB协议的免费软件. ①Samba软件包的安装 使用源安装,在终端中输入如下命令: #sudo apt-get install samb ...

  6. 手把手带你基于嵌入式Linux移植samba服务

    摘要:Samba是在Linux和UNIX系统上实现SMB协议的一个免费软件,由服务器及客户端程序构成. 本文分享自华为云社区<嵌入式Linux下移植samba服务--<基于北斗和4G ca ...

  7. Linux下samba服务搭建

    参考: https://www.cnblogs.com/lxyqwer/p/7271369.html https://www.cnblogs.com/liulipeng/p/3406352.html ...

  8. linux学习一个服务(未完)

    学习一个服务的过程 1.了解服务的作用:名字 功能,特点 2.安装 3.配置文件位置,端口 4.服务启动关闭的脚本 5.此服务的使用方法 6.修改配置文件,实战举例 7.排错(从下到上,从内到外)

  9. linux安装Samba服务

    [1].yum -y install samba安装samba [2].找到samba配置文件:vim /etc/samba/smb.conf [3].[gloabl]下面security有三种模式: ...

随机推荐

  1. Selenium学习之==>Switch与SelectApi接口详解

    Switch 我们在UI自动化测试时,总会出现新建一个tab页面.弹出一个浏览器级别的弹框或者是出现一个iframe标签,这时我们用WebDriver提供的Api接口就无法处理这些情况了.需要用到Se ...

  2. 中国MOOC_零基础学Java语言_第7周 函数_1分解质因数

    第7周编程题 查看帮助 返回   第7周编程题 依照学术诚信条款,我保证此作业是本人独立完成的. 温馨提示: 1.本次作业属于Online Judge题目,提交后由系统即时判分. 2.学生可以在作业截 ...

  3. <class 'blog.admin.CategoryAdmin'>: (admin.E108) The value of 'list_display[0]' refers to 'mame', which is not a callable, an attribute of 'CategoryAdmin', or an attribute or method on 'blog.Category'

    系统反馈此类错误是因为行列映射时无法对应: 引起无法对应的原因有: 定义是缺少某列,定义时缩进导致,映射关系时缺少某列,(通俗讲列名对应不上). 这种错误多是python中的 因为其中对于空格的要求是 ...

  4. 9.shodan搜索引擎----Metasploit Web GUI----取证工具箱----sAINT间谍软件

    shodan搜索引擎 物联网搜索引擎 访问路由器,服务器,网络摄像头,安装CLI banner抓取,端口扫描 www.shodan.io 需要注册账户,支持google账户 搜索 webcams 网络 ...

  5. 深入理解java:2. 多线程机制

    引言 很多人都对其中的一些概念不够明确,如同步.并发等等,让我们先理清一些概念,以免产生误会. 多线程:指的是这个程序(一个进程)运行时,产生了不止一个线程. 并行与并发: 并行:多个cpu实例或者多 ...

  6. linux 正则表达式 元字符

    \b 单词边界 \bcool\b  只匹配cool字符串 [root@MongoDB ~]# cat test.txt i am mike1 i am mike i am mike12 匹配有mike ...

  7. Java——LinkedList使用Demo

    package list; import java.util.Iterator; import java.util.LinkedList; public class LinkedListDemo { ...

  8. uboot第二阶段分析1

    一. uboot第二阶段初识 1.1. uboot第二阶段应该做什么 a. 概括来讲uboot第一阶段主要就是初始化了SoC内部的一些部件(譬如看门狗.时钟),然后初始化DDR并且完成重定位. b.  ...

  9. js分页加载数据

    <script type="text/javascript"> $(function(){ $.ajax({ type: "post", dataT ...

  10. I - The Values You Can Make (背包求具体方案)

    题目大意 给你n个数,让你用这n个数在组成k的情况下,找到所有的value,这些value也由这n个数组成,且这些value组合在一起能够组成k 解法 看到题目我的想法就是母函数= =不过wa了,后来 ...