首页 > 其他分享 >使用Samba实现文件共享

使用Samba实现文件共享

时间:2023-01-07 11:34:44浏览次数:34  
标签:Samba 文件共享 实现 samba 共享 root smb localhost

SMB服务消息块协议,指在解决局域网内的文件或打印机等资源的共享问题,这也使得在多个主机之间共享文件变得越来越简单,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独有). <br>

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						#是否启用匿名访问

<br>

匿名验证 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
命令成功完成。

<br>

密码验证 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

<br>

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

<br>

Samba 给用户取别名

1.修改主配置文件

vim /etc/samba/smbusers

用户名=别名1 别名2

lyshark= wang rui

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

vim /etc/samba/smb.conf

username map = /etc/samba/smbusers

标签:Samba,文件共享,实现,samba,共享,root,smb,localhost
From: https://blog.51cto.com/lyshark/5995421

相关文章

  • Nginx和Tomcat实现负载均衡​
    实验图​推荐步骤​Nginx服务器开启路由转发功能,客户端和Tomcat服务器配置ip地址设置正确​安装Tomcat服务器配置网站​安装Nginx代理和负载均衡功能配置DNS服务器域名解析,......
  • 水泥厂PLC控制系统如何实现设备智能管理和能耗监控
    水泥行业是典型的资源型、高能耗型的产业,是工程建筑的重要物资。近年来随着环境问题和资源问题的日益突出,节能增效成为水泥行业关注的重点内容。PLC在水泥厂控制系统有着重......
  • Unity URP管线如何实现屏幕后处理
    URP管线可扩展的自己的RendererFeature,这里写了一个屏幕后处理的demo,首先shader如下:1Shader"MyURP/Kerry/PostProcess/URPFeature_PostProcessDemo"2{3Pro......
  • 【数据结构】C语言实现的AVL树操作集
    看到网上完整的AVL树操作集较少,索性自己写了一个,望大佬指教!不多废话,上代码:AVLTREE.h头文件1#pragmaonce2#include<stdio.h>3#include<stdlib.h>4#inclu......
  • 代码随想录算法训练营第10天 | 232. 用栈实现队列 225. 用队列实现栈
    232.用栈实现队列文章:代码随想录(programmercarl.com)思路:使用栈来模式队列的行为,如果仅仅用一个栈,是一定不行的,所以需要两个栈一个输入栈,一个输出栈,这里要注意输入栈......
  • Python实现单项链表
    单向链表单向链表也叫单链表,是链表中最简单的一种形式,它的每个节点包含两个域,一个信息域(元素域)和一个链接域。这个链接指向链表中的下一个节点,而最后一个节点的链接域则指......
  • 窗体登录逻辑的实现2
    之前在窗体登录逻辑的实现-hanzq_go-博客园(cnblogs.com)中写过一个窗体登录逻辑的实现。这种方式是在应用程序的入口将登录窗体以showdialog的方式显示,如果返回Dial......
  • 算法刷题 Day 10 | 232.用栈实现队列 225. 用队列实现栈
    今日任务:理论基础用栈实现队列用队列实现栈理论基础了解一下栈与队列的内部实现机智,文中是以C++为例讲解的。文章讲解:https://programmercarl.com/%E6%A0%......
  • 客服系统切换中英文多语言 - 使用js更新URL参数来实现切换 【唯一客服】网站网页客服
    我的客服聊天页面有多语言切换功能,是通过URL参数中的lang参数来进行区分的如果要切换中英文或者其他语言,就需要动态更新URL参数中的lang参数,所以实现下面这个函数 //......
  • Vue2和Vue3实现响应式原理
    <!DOCTYPEhtml><html> <head> <metacharset="UTF-8"/> <title>Document</title> </head> <body> <scripttype="text/javascript"> //源数据 letpers......