一、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. Apache监控调优

    apache是一款对静态资源处理得比较好的中间件,但是对动态请求处理得不是很好,tomcat则正好相反. apache运用得比较多得工作模式主要是Prefork和Worker两种模式 1.Prefor ...

  2. USB转换PS2接线原理

    https://blog.csdn.net/dfyy88/article/details/4540170 USB转换PS2接线原理 2009年09月10日 18:36:00 阅读数:13285 USB ...

  3. NW.js

    1.package.json属性说明: ——window窗口外观常用属性包括: title : 字符串,设置默认 title width/height : 主窗口的大小 toolbar : bool ...

  4. HTML——<body> 计算机代码 【头部在“网站开发”中】

    HTML属性 完整的属性列表 在引用属性值的时候,如果某些属性本身就有双引号——name= 'John "ShotGun" Nelson' 

  5. 程序员听到bug后的N种反应…

    程序员的世界里, 不止有代码, 还有bug,bug,bug- 当出现bug时, 程序员们的反应是怎样的呢? 作者:苏小喵,来源:小花小画(微信号:hua-little) - END - 推荐阅读: 1 ...

  6. [多校联考2019(Round 5 T3)]青青草原的表彰大会(dp+组合数学)

    [多校联考2019(Round 5)]青青草原的表彰大会(dp+组合数学) 题面 青青草原上有n 只羊,他们聚集在包包大人的家里,举办一年一度的表彰大会,在这次的表彰大会中,包包大人让羊们按自己的贡献 ...

  7. 哈希hash

    定义 是把任意长度的输入(又叫做预映射pre-image)通过散列算法变换成固定长度的输出,该输出就是散列值 生成方法 hash() 哈希特性 不可逆 :在具备编码功能的同时,哈希算法也作为一种加密算 ...

  8. PythonDay07

    第七章 今日内容 基础数据类型补充 以后会遇到的坑 二次编码 基础类型补充 stra = "One two"print(a.capitalize())   # 首字母大写print ...

  9. django字段类型(Field types)介绍

    字段类型(Field types) AutoField 它是一个根据 ID 自增长的 IntegerField 字段.通常,你不必直接使用该字段.如果你没在别的字段上指定主 键,Django 就会自动 ...

  10. git将某个分支的代码完全覆盖另一个分支

    假设每个人有个开发分支,想隔一段时间就把自己的开发分支上的代码保持和测试分支一直,则需要如下操作: 1.我想将test分支上的代码完全覆盖dev分支,首先切换到dev分支git checkout de ...