Samba文件共享服务

  • Linux系统中一种文件共享程序
  • 在Windows网络环境中,主机之间进行文件和打印机共享是通过微软公司自己的SMB/CIFS网络协议实现的。SMB(Server Message Block,服务消息块)和CIFS(Common Internet File System,通过互联网文件系统)协议是微软的私有协议,在Samba项目出现之前,并不能直接与linux/UNIX系统进行通信。
  • Samba是著名的开源软件项目之一,它在linux/UNIX系统中实现了微软的SMB/CIFS网络协议,从而使得跨平台文件共享变得更加容易。在部署Windows、linux/UNIX混合平台的企业环境时,选用Samba可以很好地解决不同系统之间的文件互访问题。

Samba软件包的构成:

  • Samba服务的程序组件

    • smbd负责为客户机提供服务器中共享资源(目录和文件等)的访问
    • nmbd负责提供基于NetBIOS协议的主机名称解析,以便为Windows网络中的主机进行查询服务
  • 使用netstat命令可以验证服务进程状态,其中smbd程序负责监听TCP协议的139端口(SMB协议)、445端口(CIFS协议),而nmbd服务程序负责监听UDP协议的137-138端口(NetBIOS协议)
  • netstat -anptu | grep "mbd" 查看Samba运行状态
  • 主配置文件smb.conf
  • Samba服务idea服务的文件位于/etc/samba/目录中,其中smb.conf是主配置文件
  • 在smb.conf文件中,以"#"号开始的行表示注释性的文字,以";"开始的行表示是配置样例
  • grep -v "#" /etc/samba/smb.conf | grep -v ";" | grep -v "$" -->过滤标识符

/etc/samba/smb.conf 文件概述

  • 主配置文件smb.conf
  • [global]全局设置:对整个Samba服务器都有效
  • [homes]宿主目录共享设置:设置Linux用户默认共享,对应用户的宿主目录
  • [printers]打印机共享设置

Samba服务器的常见配置项及含义说明

security = user //安全级别,可用值如下:
share、user、server、domain。 [global]
workgroup = MYGROUP //所在工作组名称
server string = Samba Server Version %v //服务器描述信息 ; netbios name = WORKGROUP //网络主机名
; interfaces = lo eth0 192.168.12.2/24 192.168.13.2/24 //接口地址
; hosts allow = 127. 192.168.12. 192.168.13. //允许主机地址 # logs split per machine
log file = /var/log/samba/log.%m //日志文件位置,//"%m" 变量表示客户机地址
# max 50KB per log file, then rotate
max log size = 50 //日志文件的最大容量,单位为KB [homes]
comment = Home Directories //对共享在服务器中对应的实际路径
browseable = no //该共享目录在"网上邻居"中是否可见
writable = yes //是否可写,与read only的作用相反
; valid users = %S
; valid users = MYDOMAIN\%S [printers]
comment = All Printers
path = /var/spool/samba //共享目录在服务器中对应的真实路径
browseable = no
guest ok = no //是否允许所有人访问,等效于"public"
writable = no
printable = yes //是否允许打印机

testparm程序

Samba服务器提供了一个配置文件检查工具---testparm程序,使用testparm工具可以对smb.conf配置文件的正确性个进行检查,如果发现有错误将会进行提醒。

可匿名访问的共享

  • 可匿名访问的共享适用于公开的资源分享,一般只建议提供只读访问
  • 设置匿名共享文件夹时,在主配置文件smb.conf中主要调整两个地方即可
    1. 可以将默认的安全级别修改为share
    2. 添加一段共享目录配置

需用户验证的共享

  • 匿名共享虽然用起来非常方便,但因为任何人都可以访问到共享的文件数据,在某些时候可能会导致信息的泄露
  • 实现步骤:
    1. 建立Samba用户数据库,使用pdbedit工具可以对共享用户进行管理
    2. 设置用户访问授权,将security安全级别提升为"user"
    3. 确定目录访问授权
      通过Samba服务器共享本地的文件夹时,用户最终是否拥有读取、写入权限,除了需要设置用户授权以外,还需要满足一个前提条件---在服务器本机中,与共享用户同名的系统用户对发布为共享的本地文件夹(如/opt/mytools/)必须有相应的读取、写入权限。//另外,当通过共享目录上传文档时,对于共享用户所上传的文件,创建子目录的默认权限,可以分别使用配置项"directory mask"、"create mask"进行指定

命令

  • pdbedit -a -u 添加一个Samba用户
  • pdbedit -x -u 删除一个Samba用户
  • pdbedit -L 列表查看Samba用户
  • pdbedit -Lv 详细查看Samba用户
  • smbpasswd -a 用户名: 是指给现有用户设置密码。而非建立用户
  • 创建用户是:useradd 用户名
  • 搜索/etc/samba/smbpasswd里面存放了SAMBA所有的用户。

使用命令

  • cat /etc/samba/smbpasswd
  • vim /etc/samba/smbpasswd
  • /etc/samba/ 下没有smbpasswd
    如果没有的话你就使用SMB用户创建命令来创建,这样SMBpasswd文件会自动生成。
    需要注意的是,在/etc/samba/smb.conf文件对权限的设置,优先级低于Linux系统中的文件系统权限,也就是说,想要实现共享目录或者文件具有某种权限,首先必须保证该目录或者文件在文件系统中具有该权限。

共享账号映射(别名)

  • 为了进一步提高Samba共享服务的安全性,除了可以对指定的共享目录设置用户授权以外,还可以采取用户映射、访问地址限制等措施
  • 在使用Samba共享账号时,通常情况下,一个共享用户账号都有一个同名的系统用户账号。
  • Samba服务器提供了"用户名称映射"(Username Map)机制,可以将一个共享用户映射为多个不同的名称(别名)
  • Samba共享账号的映射文件默认位于/etc/samba/smbusers
  • 设置好共享用户的别名记录以后,若要正常启用账号映射功能,需要修改主配置文件/etc/samba/smb.conf,添加全局配置项"username map=/etc/samba/smbusers",然后重新加载配置即可生效

访问地址限制

  • 针对访问Samba服务器的客户机,可以通过"hosts allow"、"host deny"配置项进行访问限制,前者英语指定仅允许访问共享的客户机地址,后者用于指定仅拒绝访问共享的客户机地址,两种方式任选其一即可
  • 访问地址限制一般应用于[global]全局配置部分,也可以应用于某个具体的共享配置段部分。限制的对象可以是主机名、IP地址或者网络段地址(省去主机部分),多个地址之间以逗号或空格进行隔离

使用smbclient访问共享文件夹

  • WINDOWS: \SAMBA服务器地址
  • LINUX : smbclient 命令,查看及登陆使用共享
  • smbclient -U sunboy //192.168.4.11/tools
  • smbclient //192.168.1.108/public -N 【匿名访问】
  • 改配置文件之后就检查语法,重启服务。

使用mount 挂载共享目录

mkdir /media/smbdir
mount -o username=hunter //192.168.4.11/tools /media/smbdir/
Passwd:
mount | tail -n 1

【知识补充】

  • Windows中登录过共享服务器输入的用户名和密码会有记录,实验时可以在dos界面输如下命令以清除记录
  • net use * /del
  • 若window客户机正常访问,但linux客户机访问不了samba服务器时,查看客户机是否安装samba4-libs包
  • 若linux客户机出现:mount: block device //192.168.1.108/share is write-protected, mounting read-only
  • mount: cannot mount block device //192.168.1.108/share read-only 的报错信息,则要安装cifs-utils包

网络邻居是个网站还是问题出现了错误?!

  • 如果是网上邻居的话,清除方式是:
    1. 依次点击“开始”——“运行”;
    2. 在打开的窗口中键入“control keymgr.dll”,回车。

SAMBA 服务配置的更多相关文章

  1. samba服务配置(二)

    需求: 某公司销售部门提出一个文件共享需求,要求部门共享目录有三个,第一个共享目录所有销售部门人员都具有可读可写权限: 第二个共享目录所有销售人员只读权限,经理级别的销售人员具有可读可写权限:第三个共 ...

  2. Centos7 -samba服务配置

    Centos7 -samba服务配置 https://blog.csdn.net/zh515858237/article/details/76914905 http://blog.51cto.com/ ...

  3. Samba服务配置简明笔记

    内部服务器之间拷贝数据,用root账号访问,没有做更复杂的设置. 1.用YUM安装samba服务器端及客户端: [root@tenjs05 init.d]# yum install samba sam ...

  4. Centos6.5以下Samba服务配置

    一.简介 Samba是一个能让Linux系统应用Microsoft网络通讯协议的软件,而SMB是Server Message Block的缩写,即为服务器消息块 ,SMB主要是作为Microsoft的 ...

  5. 《samba服务配置的文本》

    创建简单的samba服务器 samba  很少用于互联网 /大部分用于局域网  网页更新/ 首先看下你是否安装后了samba. rpm -qa | grep samba samba的简介 1)samb ...

  6. Centos samba 服务配置

    1背景 转到Linux有段时间了,vim操作还不能应对工程代码,之前一直都是Gnome桌面 + Clion 作开发环境,无奈在服务器上没有这样的环境, 看同事是(Windows)Source Insi ...

  7. samba服务配置(一)

    samba是一个实现不同操作系统之间文件共享和打印机共享的一种SMB协议的免费软件. samba软件结构: /etc/samba/smb.conf    #samba服务的主要配置文件 /etc/sa ...

  8. linux下Samba服务配置

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

  9. Samba服务配置及配置文件说明

    前言 1.配置Samba服务为什么要关闭防火墙(firewalld)和Selinux? 在linux操作系统中默认开启了防火墙,Selinux也处于启动状态,一般状态为enforing:所以,在我们搭 ...

随机推荐

  1. Polling 、Long Polling 和 WebSocket

    最近在学习研究WebSocket,了解到Polling 和Long Polling,翻阅了一些博文,根据自己的理解,做个学习笔记 Polling (轮询): 这种方式就是客户端定时向服务器发送http ...

  2. Chrome崩溃的解决办法

    前两天Win10 更新的安全组件,第二天上班来就打开不了Chrome了,打开就是:噢哟,崩溃了! 那是连 setting 页都打不开的啊...好晕,好晕. 我是真的有点崩溃啊,在网上找了好久,什么与百 ...

  3. Hbase安装使用

    启动Hadoop 启动Hbase jps 进入shell 建立表及使用

  4. String.format()的详细用法

    问题 在开发的时候一段字符串的中间某一部分是需要可变的 比如一个Textview需要显示”XXX用户来自 上海 年龄 21 性别 男” 其中的 XXX 是用户名 每个用户也是不一样的 地区 上海 为可 ...

  5. spring cloud 服务链路追踪 skywalking 6.1

    随着微服务架构的流行,服务按照不同的维度进行拆分,一次请求往往需要涉及到多个服务.互联网应用构建在不同的软件模块集上,这些软件模块,有可能是由不同的团队开发.可能使用不同的编程语言来实现.有可能布在了 ...

  6. zabbix php-fpm监控

    #!/bin/bash################################### Zabbix monitoring script## php-fpm:# - anything avail ...

  7. Linux桌面环境

    早期的 Linux 系统都是不带界面的,只能通过命令来管理,比如运行程序.编辑文档.删除文件等.所以,要想熟练使用 Linux,就必须记忆很多命令. 后来随着 Windows 的普及,计算机界面变得越 ...

  8. Python 3.X 练习集100题 03

    一个整数,它加上 100 后是一个完全平方数,再加上 168 又是一个完全平方数,请问该数是多少? import math for i in range(10000): n1 = math.sqrt( ...

  9. Android studio中遇到的问题

    首先声明只是Android studio使用中遇到的问题纯属个人学习笔记,有什么不对的可以留言. 将脱壳后的java文件拖入到Android studio android studio 首先提示是ER ...

  10. HUT 排序训练赛 G - Clock

    Clock Time Limit: 1000MS   Memory Limit: 32768KB   64bit IO Format: %I64d & %I64u [Submit]   [Go ...