ThankNeko's Blog ThankNeko's Blog
首页
  • 操作系统

    • Linux基础
    • Linux服务
    • WindowsServer笔记
    • Ansible笔记
    • Shell笔记
  • 容器服务

    • Docker笔记
    • Kubernetes笔记
    • Git笔记
  • 数据库服务

    • MySQL笔记
    • ELK笔记
    • Redis笔记
  • 监控服务

    • Zabbix笔记
  • Web服务

    • Nginx笔记
    • Tomcat笔记
  • 数据处理

    • Kettle笔记
  • Python笔记
  • Bootstrap笔记
  • C笔记
  • C++笔记
  • Arduino笔记
  • 分类
  • 标签
  • 归档
  • 随笔
  • 关于
GitHub (opens new window)

Hoshinozora

尽人事,听天命。
首页
  • 操作系统

    • Linux基础
    • Linux服务
    • WindowsServer笔记
    • Ansible笔记
    • Shell笔记
  • 容器服务

    • Docker笔记
    • Kubernetes笔记
    • Git笔记
  • 数据库服务

    • MySQL笔记
    • ELK笔记
    • Redis笔记
  • 监控服务

    • Zabbix笔记
  • Web服务

    • Nginx笔记
    • Tomcat笔记
  • 数据处理

    • Kettle笔记
  • Python笔记
  • Bootstrap笔记
  • C笔记
  • C++笔记
  • Arduino笔记
  • 分类
  • 标签
  • 归档
  • 随笔
  • 关于
GitHub (opens new window)
  • 操作系统

    • Linux基础

    • Linux服务

      • Rsync文件传输
      • Sersync实时同步
      • NFS文件服务
      • SSH远程连接
      • Keepalived高可用
      • Supervospr进程管理
      • APT包管理工具
      • Samba文件共享
        • Samba介绍
        • Samba命令
        • Samba服务端部署
        • Windows指定端口连接文件共享
      • JumpServer堡垒机
      • Linux搭建DNS服务
      • Tmux终端管理
      • Iptables
      • Firewalld防火墙管理
      • OpenVPN代理
      • 本地yum仓库搭建
    • Windows Server笔记

    • Shell笔记

    • Ansible笔记

  • 虚拟化服务

  • 数据库服务

  • 监控服务

  • Web服务

  • 数据处理

  • Ops
  • 操作系统
  • Linux服务
Hoshinozora
2024-03-28
目录

Samba文件共享

# Samba介绍

# 简介

Samba是一款开源的文件共享软件,经过简单配置就能够实现Linux系统与Windows系统之间的文件共享。

Samba基于C/S架构的SMB(又名CIFS)协议,它能够在网络上支持SMB协议的主机之间共享文件夹或打印机的通信协议。

Samba既可以用于Windows与Linux之间的文件共享,也可以用于Linux系统之间的资源共享。但由于NFS可以很好的完成Linux系统之间的数据共享,因而 Samba较多的用在了Linux与Windows之间的数据共享上面。

# 相关软件包

Samba:服务端软件包

Samba-client:客户端工具包

  • 该软件包为SMB客户端工具,它可以操作SMB服务器上的文件资源、打印机资源。

Samba-common:公共文件包

# 服务组成

Samba服务由smbd和nmbd两个守护进程组成,两个进程的启动脚本相互独立。

# smbd

该进程负责验证用户身份、建立会话进程、提供对文件系统和打印机的访问机制,只有smbd进程启动,才能实现网络文件共享。

smbd进程是Samba的核心,对应TCP/445端口,他用于实现smb/cifs协议。

# nmbd

该进程对应TCP/139、UDP/137、UDP/138端口,负责提供NetBIOS主机名称解析服务,实现Windows中通过主机名互相通信的功能。

启动该进程后客户端可以通过Linux系统共享的工作组名称访问共享文件,否则只能通过IP地址来访问共享的文件。

# 相关文件

smb启动脚本

/etc/rc.d/init.d/smb start|stop|restart|status

nmb启动脚本

/etc/rc.d/init.d/nmb start|stop|restart|status

日志文件目录

/var/log/samba/

主配置文件路径

/etc/samba/smb.conf

# 配置文件

# 介绍

/etc/samba/smb.conf是Samba服务的主要配置文件,由3个标准节[global]、[homes]、[printers]和若干个自定义节组成。

  • [global] 定义Samba服务的全局环境配置。
  • [homes] 定义共享用户主目录。
  • [printers] 定义打印机共享配置。
  • [共享名称] 定义用户自定义的共享目录。
# 常用配置

[global]

[global]
# 工作组名称
workgroup = WORKGROUP

# 指定SMB端口号
smb ports = 4450

# 服务器介绍信息,可不填,%v表示Samba的版本号
server string = Samba Server Version %v

# 定义NetBIOS名称,如果不填则会使用服务器DNS名称的第一部分。该名称和workgroup配置的名字不能一致
netbios name = smbserver

# 指定监听的网卡,可以写网卡名或IP地址
interfaces = lo eth0 192.168.12.2/24 192.168.13.2/24

# 允许访问的客户端,多个参数以空格隔开,可以指定IP或网段。hosts deny则相反
hosts allow = 127. 192.168.1. 192.168.10.1

# 指定最大连接数,0表示不限制
max connections = 0

# 设置闲置会话关闭时间,会关闭没有打开任何文件的会话。单位是分钟,0表示关闭。
deadtime = 0

# 设置日志文件路径
# %m代表客户端名,表示每台客户端单独生成一个日志文件
log file = /var/log/samba/log.%m

# 指定单个日志最大大小,单位为kB,0代表不限制
max log size = 50

# 指定用户访问的安全验证方式:
# share - 共享方式,无需任何验证可直接访问。
# user - 口令方式(默认),通过账号和密码进行验证,可以通过命令创建用户。
# server - 代理验证方式,通过其他远程主机(WindowsNT/2000或SambaServer)对账号密码进行统一验证,如果认证失败将使user模式进行验证。
# domain - 域方式,使用主域控制器(PDC)进行身份认证。
security = user

# 指定用户后台类型:
# smbpasswd - 使用smbpasswd明文存储用户密码,客户端可以用该密码进行访问,密码文件在/etc/samba目录下。
# tdbsam - 使用数据库文件来建立用户数据库,我们可以使用pdbedit命令管理用户,数据库文件在/etc/samba/passdb.tdb。
# ldapsam - 使用LDAP账户管理方式验证用户,首先要建立LDAP服务,然后设置值为"ldapsam:ldap://服务器地址"
passdb backend = tdbsam

# 是否加密认证密码,默认开启
encrypt passwords = yes

# 指定用户密码文件路径
smb passwd file = /etc/samba/smbpasswd

# 指定用户名映射文件路径,内容格式如:root = administrator admin
username map = /etc/samba/smbusers


# 设置Socket选项,优化传输速度
socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192

# 是否共享打印机
load printers = no
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60

[homes]

# 描述信息
comment = Home Directories

# 指定共享信息是否在"网上邻居"可见
browseable = no

# 定义是否可以执行写入操作,与"read only"相反
writable = yes
1
2
3
4
5
6
7
8

[printers]

# 打印机描述信息
comment = All Printers

# 共享文件实际路径
path = /var/spool/samda

# 指定共享信息是否在"网上邻居"可见
browseable = no

# 是否公开访问
guest ok = no

# 定义是否可以执行写入操作,与"read only"相反
writable = yes

# 是否可打印
printable = yes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

[自定义共享名]

# 描述信息
comment = Comment String

# 共享目录路径
path = /data/personal/

# 表示设置是否允许匿名用户访问
public = no

# 表示设置是否所有人均可访问共享目录
guest ok = no

# 是否允许可写
writable = yes

# 是否只读
read only = no

# 设置允许写的用户和组,可为用户名或组名
write list = root,@root

# 设置允许访问的用户和组,可为用户名或组名
valid users = root,@root

# 允许的主机,可指定IP或网段
hosts allow = 192.168.10.1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26

# Samba命令

# smbclient

用于交互式的数据访问SMB共享盘。

# smbpasswd

用于管理Samba独立账号密码。

-a 用户名:建立Samda用户并交互式设置密码。

-x 用户名:删除Samda用户。

-d 用户名:禁用Samda用户。

-e 用户名:启用Samda用户。

# pdbedit

用于管理SMB账户信息数据库。

-a 用户名:建立Samda用户。

-x 用户名:删除Samda用户。

-L:列出用户列表。

-Lv:列出详细用户列表。

# testparm

用于测试配置文件是否有语法错误,以及显示最终生效的配置。

# Samba服务端部署

# 1.安装Samba服务

yum install -y samba samba-common
1

# 2.创建用户密码

# 按提示输入密码
pdbedit -a -u root
1
2

Samba默认使用用户口令认证+数据库存储,数据库存储要求添加的用户已经在系统中创建,不要求用户类型,可以是真实用户或虚拟用户。

# 3.创建共享目录

#创建目录
mkdir /data/personal/
# 修改权限
chown -R harmoniar.harmoniar /data/personal/
1
2
3
4

# 4.修改配置

vim /etc/samba/smb.conf

[global]
    workgroup = WORKGROUP
    server string = Samba Server Version %v
    log file = /var/log/samba/%m.log
    max log size = 1000
    # 外网访问需要修改端口号,有些运营商会禁用445端口
    smb ports = 4450
    security = user
    passdb backend = tdbsam
[personal]
    comment = Personal Directories
    path = /data/personal/
    public = no
    writable = yes
    valid users = share
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

# 5.重启smb服务

systemctl restart smbd && systemctl enable smbd
1

# Windows指定端口连接文件共享

# 1.Windows检查445是否被占用

netstat -ant | findstr 445
1

如果在监听则执行services.msc打开服务列表,找到Server服务将其禁用,然后重启。

# 2.添加本地445端口到服务器4450端口的转发

netsh interface portproxy add v4tov4 listenport=445 listenaddress=127.0.0.1 connectport=4450 connectaddress=lalafell.cn
1

# 3.检查是否执行成功

netsh interface portproxy show all
1

# 4.访问或者添加\\127.0.0.1\网络位置

#Linux#Samba#文件共享
APT包管理工具
JumpServer堡垒机

← APT包管理工具 JumpServer堡垒机→

最近更新
01
二〇二五年四月十七日随笔
04-17
02
二〇二五年四月十六日随笔
04-16
03
二〇二五年四月九日随笔
04-09
更多文章>
Theme by Vdoing | Copyright © 2022-2025 Hoshinozora | MIT License
湘ICP备2022022820号-1
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式