使用Samba实现文件共享
该系列文章只是本人的学习笔记,文章中的文字描述提取自《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实现文件共享的更多相关文章
- 配置 samba 实现文件共享
用于实现文件共享 netstat -apn|grep smb 可以按到 smb服务,需要开启139 .445端口号 需要在防火墙添加如下规则vi /etc/sysconfig/iptables -A ...
- 【转】win7 虚拟机virtualbox中ubuntu12.04安装samba实现文件共享
原文网址:http://blog.csdn.net/watkinsong/article/details/8878786 昨天心血来潮,又装了个虚拟机,然后安装了ubuntu12.04,为了实现在虚拟 ...
- linux之使用samba实现文件共享
早期网络想要在不同主机之间共享文件大多要用FTP协议来传输,但FTP协议仅能做到传输文件却不能直接修改对方主机的资料数据,这样确实不太方便,于是便出现了NFS开源文件共享程序,NFS是一个能够将多台L ...
- Linux使用Samba实现文件共享
Samba服务是现在Linux系统与Windows系统之间共享文件的最佳选择. [root@study ~]# yum install samba -y #安装samba服务 [root@study ...
- 《linux就该这么学》课堂笔记15 vsftpd文件传输、Samba/NFS文件共享
1.为了能够在如此复杂多样的设备之间(Windows.Linux.UNIX.Mac等不同的操作系统)解决问题解决文件传输问题,文件传输协议(FTP)应运而生. FTP服务器是按照FTP协议在互联网上提 ...
- 使用Samba实现文件共享:Windows和Linux之间
1.概述: 1987 年,微软公司和英特尔公司共同制定了 SMB(Server Messages Block,服务器消息 块)协议,旨在解决局域网内的文件或打印机等资源的共享问题,这也使得在多个主机之 ...
- Ubuntu+Win7+Samba实现文件共享
Samba是Ubuntu和Windows进行网络共享的工具,比如分享打印机,互相之间传输资料文件. 安装samba sudo apt-get install samba 查看samba是否安装成功 s ...
- 服务器搭建5 Samba实现文件共享
Samba服务器工作原理 客户端向Samba服务器发起请求,请求访问共享目录,Samba服务器接收请求,查询smb.conf文件,查看共享目录是否存在,以及来访者的访问权限,如果来访者具有相应的权限, ...
- Linux下通过samba进行文件共享与挂载
1.在共享服务端安装samba:# yum install samba samba-client.x86_64 samba-common -y 2.在共享服务端需要防火墙开通139.445端口: # ...
随机推荐
- object SparkStreaming_StateFul {
窗口查询 ) )).reduceByKeyAndWindow(_+_,_-_,Seconds(10),Seconds(15)) 每隔15s进行查询,查询为前10s的结果.这里的值必须为采集时间 ...
- TCP与UDP传输协议
目录结构: contents structure [-] 1 TCP协议和UDP协议的比较 1.1 TCP协议 TCP的全称是Transmission Control Protocol (传输控制协议 ...
- canvas 实现掉落效果
var canvas = document.getElementById('canvas'); var cxt = canvas.getContext('2d'); cxt.strokeStyle = ...
- presentation skills
下面是从一个网站摘录下来的关于presentation skill需要回答的14个问题:网站的地址为:http://www.mindtools.com/pages/article/newCS_96.h ...
- php中如何解决显示数据库中的内容乱码
第一步: 第二步:在代码开始处加一行
- Tomcat架构解析(三)-----Engine、host、context解析以及web应用加载
上一篇博文介绍了Server的创建,在Server创建完之后,就进入到Engine的创建过程,如下: 一.Engine的创建 1.创建Engine实例 当前次栈顶元素为Service对象,通过Se ...
- 消除flex-wrap之后每个item上下的距离
设置flex-wrap后,每个item上下都会有距离.更改父元素的高度,就可以删除这些距离. 更改后:
- ssh 认证
ssh 秘钥认证流程 ssh配置认证 基于口令(密码)的安全验证 [root@m01 ~]# ssh 10.0.0.41 hostname root@10.0.0.41's password: bac ...
- innerText兼容处理
转载自:https://www.cnblogs.com/leejersey/p/3520497.html:稍微改了一下和加了一些注释: IE.Safari.Opera和Chrome支持innerTex ...
- js实现百度搜索框滑动固定顶部
现在很多主流系统例如百度.有道.爱奇艺等的搜索框都有一个特点,滑动到刚好看不到搜索框时,固定搜索框到顶部,这也算是一个对用户友好型的操 作. 在看了百度的js和css后自己摸索出来实现效果,还是学艺不 ...