在Linux中配置SMB共享的完整指南

 更新时间:2025年11月13日 08:50:27   作者:vortex5  
SMB是一种网络文件共享协议,广泛用于 Windows、Linux 等系统间的文件共享,在渗透测试(pentest)场景中,配置 SMB 共享可以方便地在测试环境中传输工具、Payload 或测试数据,本文将详细介绍如何在 Linux 系统中配置 SMB 共享,需要的朋友可以参考下

引言

SMB(Server Message Block)是一种网络文件共享协议,广泛用于 Windows、Linux 等系统间的文件共享。在渗透测试(pentest)场景中,配置 SMB 共享可以方便地在测试环境中传输工具、Payload 或测试数据。本文将详细介绍如何在 Linux 系统中配置 SMB 共享。

一、环境准备

1. 操作系统要求

本文以 Ubuntu 22.04 LTS 为例,其他基于 Debian 的系统(如 Kali Linux)操作类似;RHEL/CentOS 系统步骤略有差异(包管理工具为 yumdnf)。

2. 安装 SMB 服务

Linux 中常用的 SMB 服务端是 samba,需先安装相关包:

# Ubuntu/Debian/Kali 系统
sudo apt update && sudo apt install samba samba-common-bin -y

# RHEL/CentOS 系统
sudo yum install samba samba-common -y

安装完成后,启动服务并设置开机自启:

# 启动服务
sudo systemctl start smbd nmbd

# 设置开机自启
sudo systemctl enable smbd nmbd

# 检查服务状态(确保为 active (running))
sudo systemctl status smbd

二、配置 SMB 共享(核心步骤)

SMB 的核心配置文件为 /etc/samba/smb.conf,我们需要在该文件中添加共享目录的配置。

1. 备份配置文件(重要)

修改配置前先备份默认配置,避免误操作导致服务异常:

sudo cp /etc/samba/smb.conf /etc/samba/smb.conf.bak

2. 创建共享目录

根据需求创建共享目录并设置合适的权限(SMB 服务需要访问权限):

注意:若目录所有者为 root,需确保 samba 服务用户(通常是 nobody)有访问权限。

3. 编辑 SMB 配置文件

使用文本编辑器(如 nanovim)打开配置文件,在文件末尾添加以下配置(对应需求:可浏览、可写、允许匿名访问):

[pentest]
    comment = Pentest Tools Share  # 共享描述(可选)
    path = /root/pentest           # 共享目录路径
    browseable = yes               # 允许浏览(在网络邻居中可见)
    writable = yes                 # 允许写入(修改/删除文件)
    guest ok = yes                 # 允许匿名访问(无需密码)
    force user = root              # 解决权限不足问题
    # 禁止跟随符号链接(安全加固,避免访问共享外文件)
    follow symlinks = no
    wide links = no

配置说明:

  • [pentest]:共享名称(客户端访问时显示的名称);
  • guest ok = yes:允许匿名用户访问(无需登录,适合测试环境,但生产环境不建议);
  • writable = yes:允许写入操作,需确保目录权限足够(如 777 或所有者为 samba 服务用户);
  • force user = root:所有访问该共享的操作(包括匿名用户)都将以 root 身份执行,解决 /root 目录的权限限制(可能有安全隐患)。

4. 验证配置文件语法

修改后需验证配置是否有误,避免服务启动失败:

testparm

若输出类似 Loaded services file OK. 则表示配置有效。

5. 重启 SMB 服务

使配置生效:

sudo systemctl restart smbd nmbd

三、防火墙配置(可选)

若系统启用了防火墙(如 ufwfirewalld),需开放 SMB 服务的端口(默认端口:139、445)。

1. ufw 防火墙(Ubuntu/Debian 常用)

# 允许 SMB 端口
sudo ufw allow 139/tcp
sudo ufw allow 445/tcp

# 重启防火墙
sudo ufw reload

# 查看开放的端口
sudo ufw status

2. firewalld 防火墙(RHEL/CentOS 常用)

# 允许 SMB 服务
sudo firewall-cmd --add-service=samba --permanent
sudo firewall-cmd --reload

四、客户端访问测试

配置完成后,可通过 Windows、Linux 或 macOS 客户端访问共享目录。

1. Windows 客户端访问

  • 打开资源管理器,在地址栏输入 \\Linux服务器IP\pentest(例如 \\192.168.1.100\pentest);
  • 由于配置了 guest ok = yes,无需输入用户名密码,直接访问即可;
  • 尝试创建、复制或删除文件,验证读写权限是否生效。

2. Linux 客户端访问

需安装 cifs-utils 工具:

# 安装工具
sudo apt install cifs-utils -y  # Ubuntu/Debian
# 或 sudo yum install cifs-utils -y  # RHEL/CentOS

# 创建挂载点
mkdir -p ~/pentest_share

# 挂载 SMB 共享(匿名访问)
sudo mount -t cifs //192.168.1.100/pentest ~/pentest_share -o guest

# 访问共享目录
cd ~/pentest_share

3. macOS 客户端访问

  • 打开「访达」,按下 Cmd + K
  • 输入 smb://192.168.1.100/pentest,点击「连接」;
  • 选择「客人」身份,点击「连接」即可访问。

五、渗透测试场景注意事项

  1. 匿名访问风险guest ok = yes 允许任何人访问,仅适合内网测试环境,禁止在公网暴露;
  2. 权限控制:若需限制访问,可关闭匿名访问(guest ok = no),并添加 samba 用户:
# 创建 samba 用户(需先存在系统用户)
sudo smbpasswd -a 用户名
# 例如:sudo smbpasswd -a pentester(设置密码后,客户端需用该用户登录)
  1. 日志审计:SMB 日志默认位于 /var/log/samba/,可通过日志跟踪访问记录;
  2. 端口隐藏:若需隐藏共享(browseable = no),客户端需知道共享名称才能访问(适合敏感测试数据)。

六、常见问题排查

访问被拒绝

  • 检查目录权限(是否为 777 或 samba 用户可访问);
  • 确认 writable = yesread only = no
  • 防火墙是否开放 139/445 端口。

服务启动失败

  • testparm 检查配置文件语法错误;
  • 查看日志:sudo tail -f /var/log/samba/log.smbd

客户端无法发现共享

  • 确保 browseable = yes
  • 直接通过 IP+共享名访问(而非依赖网络邻居自动发现)。

通过以上步骤,即可在 Linux 系统中快速配置一个针对 /root/pentest 目录的 SMB 共享,满足渗透测试中文件传输的需求。根据实际场景,可进一步调整权限和访问控制策略。

以上就是在Linux中配置SMB共享的完整指南的详细内容,更多关于Linux配置SMB共享的资料请关注脚本之家其它相关文章!

相关文章

  • 使用光盘配置本地yum源的方法 yum源配置

    使用光盘配置本地yum源的方法 yum源配置

    这篇文章主要介绍了linux使用光盘配置本地yum源的方法
    2014-01-01
  • CentOS7更换YUM源为国内源的操作步骤

    CentOS7更换YUM源为国内源的操作步骤

    由于CentOS7默认的yum源是国外的,导致我们使用yum下载软件的下载速度不是很理想,这时候我们就需要将yum源更换成国内的源,所以 本文指导CentOS7更换国内YUM源(阿里云、清华等)以提升下载速度,需要的朋友可以参考下
    2025-05-05
  • Linux下Squid代理服务器的架设与维护经验分享

    Linux下Squid代理服务器的架设与维护经验分享

    现有Chinanet ip 126个,不可能分给所有的用户使用。通过架设代理服务器来实现让所有用户使用网络资源是最简单并且相对安全和可靠的方法。
    2011-06-06
  • Linux中的ls -l命令展示信息

    Linux中的ls -l命令展示信息

    这篇文章主要介绍了Linux中的ls -l命令展示信息,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-11-11
  • 简要分析linux系统的启动过程

    简要分析linux系统的启动过程

    接触linux系统运维已经好几年了,常常被问到linux系统启动流程问题,这篇文章主要介绍了简要分析linux系统的启动过程,需要的朋友可以参考下
    2018-08-08
  • linux vim一些实用的快捷键和方法分享

    linux vim一些实用的快捷键和方法分享

    这篇文章主要介绍了linux vim一些实用的快捷键和方法,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-11-11
  • 在Ubuntu20.04 LTS中配置Java开发环境

    在Ubuntu20.04 LTS中配置Java开发环境

    这篇文章主要介绍了在Ubuntu20.04 LTS中配置Java开发环境,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-08-08
  • Linux如何修改用户名,新增用户,删除用户

    Linux如何修改用户名,新增用户,删除用户

    这篇文章主要介绍了Linux如何修改用户名,新增用户,删除用户问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-07-07
  • 万网独享主机Apache为Ecshop商城添加404页面的方法详解

    万网独享主机Apache为Ecshop商城添加404页面的方法详解

    基本都是做看客的角色,自己基本都没写过文章,不过昨天的经历确实让我有想法了,因为在网络上面看了很多文章,每篇写的都相对较片面,对于我这个Linux新手来说不免有点分不清东南西北,一不小心就浪费了半天时间。
    2011-03-03
  • Centos7.4服务器安装apache及安装过程出现的问题解决方法

    Centos7.4服务器安装apache及安装过程出现的问题解决方法

    这篇文章主要介绍了Centos7.4服务器安装apache及安装过程出现的问题解决方法,结合实例形式分析了Centos7.4服务器安装apache相关命令、配置操作及端口占用等常见问题解决方法,需要的朋友可以参考下
    2019-03-03

最新评论