该系列文章只是本人的学习笔记,文章中的文字描述提取自《Linux鸟哥私房菜》《Linux运维之道》等书中的重点内容,部分内容是在培训Linux运维时总结的笔记,化繁为简能够在工作中快速复习掌握重点,并不代表个人立场,但转载请加出处,并注明参考文献。

1987年,微软公司和英特尔公司,共同制定了SMB(Server Messages Block 服务消息块)协议,指在解决局域网内的文件或打印机等资源的共享问题,这也使得在多个主机之间共享文件变得越来越简单.到了1991年,当时还在读大学的Tridgwell为了解决Linux系统与Windows系统的文件共享问题,基于SMB协议,开发出了SMBServer服务程序,后来由于名称冲突,改名为Samba,而如今Samba服务已经成为了,Linux系统与Windows系统之间数据传输的最佳选择.

Samba 服务概述

Samba是SMB的一种实现方法,主要用来实现Linux系统的文件和打印服务。Linux用户通过配置使用Samba服务器可以实现与Windows用户的资源共享。守护进程smbd和nmbd是Samba的核心,在全部时间内运行。nmbd程序使得通过企图计算机可以浏览Linux服务器。

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

smb: 实现资源共享、权限验证 -> TCP 139 445

nmb: 实现计算机名解析 -> UDP 137

◆Samba和FTP的区别◆

Samba可以实现跨平台的文件传输,并且支持在线修改,这一点是它和FTP服务器的明显区别.

Linux 系统之间的资源共享,我们使用的是NFS协议.

Windows 系统之间的资源共享,我们使用的是NetBIOS协议.

Linux 和 Windows 之间资源共享我们就要使用SMB协议了.CIFS协议.

◆Samba的作用◆

1.共享文件与打印机等资源的服务

2.支持跨平台访问的身份验证和权限设置,支持SSL

3.解析NetBIOS名字:Samba通过nmbd服务可以搭建NBNS(NetBIOS Name Service)服务器,提供名称解析,将 计算机的NetBIOS名解析为IP地址,实现主机之间的访问定位(windows独有).

◆Samba配置文件解析◆

[global]						#定义全局策略
workgroup=MYGROUP #定义工作组
netbios name=MYSERVER #指定NetBios名称
interfaces=lo 192.168.1.1 #指定samb侦听那个网络接口
hosts allow=127.0.0.1 #指定哪些主机能访问samba服务器
log file=/var/log/samba/log.%m #定义日志文件
max log size=50 #日志大小
security=user/share #用户名密码认证/匿名用户认证
map to guest = Bad User #7系列匿名访问应加入此选项
passdb backend=tdbsam/ldapsam #加密方式
deadtime=10 #十分钟内不访问自动断开连接
display charset=UTF8 #使用UTF8字符集
max connections=0 #指定链接限制
guest account=nobody #匿名用户账号为nobody
load printers=no #是否共享打印机
cups options=raw #打印属性 [homes] #共享家目录
comment = Home Directories #共享名称
browseable = no #目录是否可被浏览
writable = no #目录是否可写
valid users = %S
valid users = MYDOMAIN\%S [printers] #打印机共享
comment = All Printers
path = /var/spool/samba #打印机共享池
browseable = no
guest ok = no
writable = no
printable = yes [common] #自定义共享资源名称
comment=LyShark #共享资源描述
path=/home/samba #共享目录
valid users=tom lyshark #有效账户列表
create mask=0750 #上传文件默认权限,默认(0750)
directory mask=0775 #创建目录默认权限,默认(0755)
browseable=yes #共享目录是否对所有人可见
writable=yes
read only=yes #赋予文件只读权限
write list=admin #写权限账户列表,这里控制admin有写权限
write list=@admin #设置一个组有写权限
admin users=lyshark #管理员账号,这里设置lyshark为管理员
invalid users=root bin #禁止root bin 访问common共享目录
guest ok=yes #是否启用匿名访问

匿名验证 Samba 配置

匿名Samba的主要作用是,在局域网内编辑共享文件,比如你有一个word文件需要让大家填写,此时我们就可以使用Samb服务将Word文档匿名分享出去,让大家填写文档

◆配置Samba服务端◆

1.首先通过yum,来安装samba服务程序,恰巧samba服务名也是samba

[root@localhost ~]# yum install -y samba samba-client
Loaded plugins: product-id, search-disabled-repos, subscription-manager
This system is not registered with an entitlement server. You can use subscription-manager.
Package samba-4.7.1-6.el7.x86_64 already installed and latest version
Package samba-client-4.7.1-6.el7.x86_64 already installed and latest version
Nothing to do

2.然后创建一个共享目录,这个目录主要用来存储一些文件,后期要共享出去

[root@localhost ~]# mkdir /smb_file
[root@localhost ~]#
[root@localhost ~]# chmod 755 -R /smb_file/
[root@localhost ~]#

3.编辑Samba主配置文件,在配置文件最下面创建匿名共享区域,如果有多个匿名区域可以继续往下写配置

[root@localhost ~]# vim /etc/samba/smb.conf

  6 [global]
7 workgroup = SAMBA
8 security = user
9 map to guest=Bad User #添加此项,开启免密码认证 .....
38
39 [smb_file] #共享目录显示的名称
40 comment=hello guest #描述信息(可以自定义)
41 path=/smb_file #共享的目录
42 browseable=yes #共享目录是否对所有人可见
43 guest ok=yes #允许匿名用户访问
44 writable=yes #匿名用户可写
45 public=yes #所有人可见

4.重启SMB服务,并设置开机自启动

[root@localhost ~]# systemctl restart smb
[root@localhost ~]# systemctl enable smb

◆配置Linux客户端◆

1.首先想要使用Samba资源,需要在Linxu客户端安装一个Samba的客户端工具,下面就开始安装吧

[root@localhost ~]# yum install -y samba-client
Loaded plugins: product-id, search-disabled-repos, subscription-manager
This system is not registered with an entitlement server. You can use subscription-manager.
Package samba-client-4.7.1-6.el7.x86_64 already installed and latest version
Nothing to do

2.匿名用户访问,我们可以直接使用下面的命令无需输入密码直接扫描资源,并使用

[root@localhost ~]# smbclient -L //服务器IP	             #查看smaba共享目录

Enter SAMBA root s password:

        Sharename       Type      Comment
--------- ---- -------
print$ Disk Printer Drivers
smb_file Disk hello guest
IPC$ IPC IPC Service (Samba 4.7.1)
Reconnecting with SMB1 for workgroup listing. Server Comment
--------- ------- Workgroup Master
--------- ------- [root@localhost ~]# smbclient //服务器IP/共享名 #查看共享文件 Enter SAMBA root s password:
Try "help" to get a list of possible commands.
smb: \> ls
. DR 0 Mon Nov 5 04:53:30 2018
.. DR 0 Mon Nov 5 04:45:11 2018
17811456 blocks of size 1024. 16582792 blocks available
smb: \>

◆配置Windows客户端◆

运行CMD(Win+R) > 输入:\\服务器IP\	共享资源名			#访问目录

C:\Users\LyShark>net use * /del               #清理windows目录缓存
你有以下的远程连接: \\192.168.1.20\smb_file
继续运行会取消连接。 你想继续此操作吗? (Y/N) [N]: y
命令成功完成。

密码验证 Samba 配置

基于密码验证的Samba的常用作用是,在局域网内,实现加密访问,只有知道相应密码的人才能访问指定资源

◆配置Samba服务端◆

1.首先通过yum,来安装samba服务程序,恰巧samba服务名也是samba

[root@localhost ~]# yum install -y samba samba-client
Loaded plugins: product-id, search-disabled-repos, subscription-manager
This system is not registered with an entitlement server. You can use subscription-manager.
Package samba-4.7.1-6.el7.x86_64 already installed and latest version
Package samba-client-4.7.1-6.el7.x86_64 already installed and latest version
Nothing to do

2.然后创建一个共享目录,这个目录主要用来存储一些文件,后期要共享出去

[root@localhost ~]# mkdir /smb_file
[root@localhost ~]#
[root@localhost ~]# chmod 755 -R /smb_file/
[root@localhost ~]#

3.编辑Samba主配置文件,在配置文件最下面创建共享区域,如果有多个区域可以继续往下写配置

[root@localhost ~]# vim /etc/samba/smb.conf

 39 [smb_file]                       #共享目录显示的名称
40 comment=hello admin #描述信息(可以自定义)
41 path=/smb_file #共享的目录
42 browseable=yes #共享目录是否对所有人可见
43 guest ok=no #允许匿名用户访问
44 writable=yes #可写

4.通过命令管理,创建一个系统用户,并转换为Samba用户

[root@localhost ~]# useradd -M -s /sbin/nologin admin      #创建一个系统用户
[root@localhost ~]# smbpasswd -a admin #将系统用户转化成Samba用户
-----------------------------------------------------------------
[参数说明] smbpasswd [选项] 账户名称 -a #添加账户并设置密码
-x #删除SMB账户
-d #禁用SMB账户
-e #启用SMB账户
----------------------------------------------------------------- [root@localhost ~]# useradd -M -s /sbin/nologin guest #创建一个系统用户
[root@localhost ~]# pdbedit -a guest #将系统用户转化成Samba用户
new password:
retype new password:
Unix username: guest
NT username:
Account Flags: [U ]
User SID: S-1-5-21-2500030998-3215874083-1041928306-1001
Primary Group SID: S-1-5-21-2500030998-3215874083-1041928306-513
Full Name:
Home Directory: \\localhost\guest
HomeDir Drive:
Logon Script:
Profile Path: \\localhost\guest\profile
Domain: LOCALHOST
Account desc:
Workstations:
Munged dial:
Logon time: 0
Logoff time: Wed, 06 Feb 2036 10:06:39 EST
Kickoff time: Wed, 06 Feb 2036 10:06:39 EST
Password last set: Mon, 05 Nov 2018 06:23:37 EST
Password can change: Mon, 05 Nov 2018 06:23:37 EST
Password must change: never
Last bad password : 0
Bad password count : 0
Logon hours : FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF [root@localhost ~]# pdbedit -L #列出所有Samba用户
admin:1001:
guest:1002:

5.重启SMB服务,并设置开机自启动

[root@localhost ~]# systemctl restart smb
[root@localhost ~]# systemctl enable smb

◆配置Linux客户端◆

1.首先想要使用Samba资源,需要在Linxu客户端安装一个Samba的客户端工具,下面就开始安装吧

[root@localhost ~]# yum install -y samba-client
Loaded plugins: product-id, search-disabled-repos, subscription-manager
This system is not registered with an entitlement server. You can use subscription-manager.
Package samba-client-4.7.1-6.el7.x86_64 already installed and latest version
Nothing to do

2.用户访问,我们可以直接使用下面的命令输入密码扫描资源,并使用

[root@localhost ~]# smbclient -U 用户名 -L //服务器IP               #查看共享目录
Enter SAMBA dmin s password: Sharename Type Comment
--------- ---- -------
print$ Disk Printer Drivers
smb_file Disk hello admin
IPC$ IPC IPC Service (Samba 4.7.1)
admin Disk Home Directories
Reconnecting with SMB1 for workgroup listing. Server Comment
--------- ------- Workgroup Master
--------- ------- [root@localhost ~]# smbclient -U 用户名 //服务器IP/共享文件名 #查看共享文件
Enter SAMBA dmins password:
Try "help" to get a list of possible commands.
smb: \> ls
. D 0 Mon Nov 5 06:30:02 2018
.. DR 0 Mon Nov 5 06:17:37 2018
lyshark N 988 Mon Nov 5 06:23:28 2018 17811456 blocks of size 1024. 16584148 blocks available

◆Linux挂载Samba◆

1.将远程的smb_file共享目录,挂载到本地的/mnt下,我们可以执行以下命令

[文件格式]  [/smb_file共享目录][挂载到/mnt] [username=smb用户名][password=smb密码]

[root@localhost ~]# mount -t cifs //192.168.1.20/smb_file /mnt -o username=admin,password=123123
[root@localhost ~]#
[root@localhost ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/rhel-root 17G 1.2G 16G 7% /
//192.168.1.20/smb_file 17G 1.2G 16G 7% /mnt

Samba ACL权限控制

允许单个IP拒绝所有

[common]

comment=Common Share
hosts allow = IP地址
hosts deny = IP地址

允许单个网段,拒绝所有

[common]

path =/common
hosts allow =127.0.0.0/24 example
hosts deny =127.0.0.0/24 example

Samba 给用户取别名

1.修改主配置文件

vim /etc/samba/smbusers

用户名=别名1 别名2

lyshark= wang rui

2.主配置文件加入以下内容

vim /etc/samba/smb.conf

username map = /etc/samba/smbusers

使用Samba实现文件共享的更多相关文章

  1. 配置 samba 实现文件共享

    用于实现文件共享 netstat -apn|grep smb 可以按到 smb服务,需要开启139 .445端口号 需要在防火墙添加如下规则vi /etc/sysconfig/iptables -A ...

  2. 【转】win7 虚拟机virtualbox中ubuntu12.04安装samba实现文件共享

    原文网址:http://blog.csdn.net/watkinsong/article/details/8878786 昨天心血来潮,又装了个虚拟机,然后安装了ubuntu12.04,为了实现在虚拟 ...

  3. linux之使用samba实现文件共享

    早期网络想要在不同主机之间共享文件大多要用FTP协议来传输,但FTP协议仅能做到传输文件却不能直接修改对方主机的资料数据,这样确实不太方便,于是便出现了NFS开源文件共享程序,NFS是一个能够将多台L ...

  4. Linux使用Samba实现文件共享

    Samba服务是现在Linux系统与Windows系统之间共享文件的最佳选择. [root@study ~]# yum install samba -y #安装samba服务 [root@study ...

  5. 《linux就该这么学》课堂笔记15 vsftpd文件传输、Samba/NFS文件共享

    1.为了能够在如此复杂多样的设备之间(Windows.Linux.UNIX.Mac等不同的操作系统)解决问题解决文件传输问题,文件传输协议(FTP)应运而生. FTP服务器是按照FTP协议在互联网上提 ...

  6. 使用Samba实现文件共享:Windows和Linux之间

    1.概述: 1987 年,微软公司和英特尔公司共同制定了 SMB(Server Messages Block,服务器消息 块)协议,旨在解决局域网内的文件或打印机等资源的共享问题,这也使得在多个主机之 ...

  7. Ubuntu+Win7+Samba实现文件共享

    Samba是Ubuntu和Windows进行网络共享的工具,比如分享打印机,互相之间传输资料文件. 安装samba sudo apt-get install samba 查看samba是否安装成功 s ...

  8. 服务器搭建5 Samba实现文件共享

    Samba服务器工作原理 客户端向Samba服务器发起请求,请求访问共享目录,Samba服务器接收请求,查询smb.conf文件,查看共享目录是否存在,以及来访者的访问权限,如果来访者具有相应的权限, ...

  9. Linux下通过samba进行文件共享与挂载

    1.在共享服务端安装samba:# yum install samba samba-client.x86_64 samba-common -y 2.在共享服务端需要防火墙开通139.445端口: # ...

随机推荐

  1. POJ-3252 Avenger

    题意:在区间中,他们化成2进制的数的0的个数大于等于1的数有多少个. 思路:我们需要记录上一次0和1的个数,此外我们还要特别注意一下前导0. 如果前面全是0的时候我们就要注意下一位是不是还是0,如果一 ...

  2. python之Bottle框架

    一.简单的Bottle框架 1)bottle框架简介 安装 pip install bottle Bottle是一个快速.简洁.轻量级的基于WSIG的微型Web框架. 此框架只由一个 .py 文件,除 ...

  3. kbmmw 5.04 发布

    增加了一大波功能,消灭了一大堆问题,也肯定引进了一大票BUG.We are happy to announce the release of our latest version of kbmMW. ...

  4. 移动端Android软键盘遮住输入框解决!

    在使用vue的情况下,在输入框中添加 <textarea class="textarea" @click="isAndroid" :maxlength=& ...

  5. dblink(转)

    oracle在进行跨库访问时,可以通过创建dblink实现,今天就简单的介绍下如果创建dblink,以及通过dblink完成插入.修改.删除等操作 首先了解下环境:在tnsnames.ora中配置两个 ...

  6. Hibernate 的缓存

    Hibernate的一级缓存 什么是缓存?? 1 数据存到数据库里面,数据库本身是文件系统,使用流方式操作文件效率不是很高.   1.1 把数据存到内存里面,不需要使用流方式,可以直接读取内存中数据 ...

  7. 前端之javascript的数据类型1和BOM对象

    一 js对象 BOM对象:browser object model浏览器模型对象 window对象:定时器 DOM对象:文档对象模型 js对象:字符串对象,数组对象,日期对象,math对象 new关键 ...

  8. extjs如何使用

    刚学ExtJs 不知道如何使用.. 我的操作步骤如下: 1. 在项目中导入ExtJs 2. 创建了一个one.js 和 helloworld.html 3. one.js中的代码如下: Ext.Mes ...

  9. Explain结果解读与实践

    MySQL的EXPLAIN命令用于SQL语句的查询执行计划(QEP).这条命令的输出结果能够让我们了解MySQL 优化器是如何执行SQL 语句的.这条命令并没有提供任何调整建议,但它能够提供重要的信息 ...

  10. AI学习经验总结

    我的人工智能学习之路-从无到有精进之路 https://blog.csdn.net/sinox2010p1/article/details/80467475 如何自学人工智能路径规划(附资源,百分百亲 ...