Linux 上配置 SMB (Samba) 服务教程

Linux 上配置 SMB (Samba) 服务教程

本教程以 Debian 系统为例指导配置 Samba 服务。

步骤 1: 安装 Samba

首先,使用 apt 安装 Samba:

sudo apt update
sudo apt install samba
步骤 2: 配置 Samba

编辑 Samba 的配置文件 /etc/samba/smb.conf

sudo nano /etc/samba/smb.conf

我们以使用 SMB1 协议为例,在 [global] 部分添加以下配置来强制使用 SMB1 协议,并设置安全性参数:

[global]
   workgroup = WORKGROUP
   server string = Samba Server
   security = user
   map to guest = never
   min protocol = NT1
   max protocol = NT1
  • security = user:指定 Samba 使用用户级别安全性,要求每个连接都有指定的用户名和密码。
  • min protocol = NT1max protocol = NT1:强制 Samba 使用 SMB1 协议。
步骤 3: 配置共享文件夹

在配置文件末尾添加共享文件夹的配置,确保只有特定用户可以访问:

[shared]
   path = /srv/samba/shared
   browseable = yes
   writable = yes
   valid users = sambauser
   create mask = 0755
  • valid users = sambauser:限制只有 sambauser 用户可以访问共享。
步骤 4: 创建共享文件夹并设置权限

创建共享文件夹并设置适当的权限:

sudo mkdir -p /srv/samba/shared
sudo chown nobody:nogroup /srv/samba/shared
sudo chmod 0777 /srv/samba/shared
步骤 5: 创建 Samba 用户

创建系统用户并设置 Samba 密码:

# 创建系统用户(如果尚未创建)
sudo useradd -M -s /sbin/nologin sambauser

# 设置 Samba 用户密码
sudo smbpasswd -a sambauser
步骤 6: 重启 Samba 服务

保存配置文件后,重启 Samba 服务以应用更改:

sudo systemctl restart smbd
步骤 7: 查看 Samba 使用的端口

通常,Samba 使用以下端口:

  • TCP 139 - NetBIOS 会话服务
  • TCP 445 - 直接 TCP/IP CIFS

使用以下命令查看 Samba 正在监听的端口:

sudo ss -tuln | grep ':139\|:445'

或者使用:

sudo netstat -tuln | grep ':139\|:445'
sudo lsof -i -P -n | grep smbd
步骤 8: 配置防火墙

确保防火墙允许 Samba 服务端口:

sudo ufw allow Samba

如果是租用的云服务器,可能需要在云服务器的控制台放开相应端口。

步骤 9: 测试连接和查看服务状态
  1. 查看 Samba 服务状态

查看当前 Samba 服务的运行状态,确保服务正常运行:

sudo systemctl status smbd
  1. 测试 Samba 连接

从客户端(例如 Windows)连接到共享文件夹,可以使用以下方法:

  • 打开文件资源管理器,在地址栏中输入 \\服务器IP地址\shared(例如 \\192.168.1.100\shared)。
  • 使用指定的用户名和密码进行登录,确保连接成功。
  1. 使用 smbclient 进行测试

在本地或远程测试 Samba 共享连接:

smbclient //localhost/shared -U sambauser

输入密码后,如果连接成功,会进入 Samba 客户端提示符,可以用 ls 查看共享文件夹内容。

步骤 10: nmbd(NetBIOS)配置

重要说明

nmbd 是 NetBIOS 名称服务的守护进程,用于在局域网(LAN)环境中解析主机名。假如你需要通过主机名而不是 IP 地址访问局域网 Samba 服务器,可以配置使用 nmbd。
但是,nmbd 和 NetBIOS 广播在公网环境中不可用,因为:

  • NetBIOS 依赖局域网广播:NetBIOS 使用 UDP 广播进行名称解析,只能在局域网内工作,无法跨越路由器、NAT 网关或互联网进行解析。
  • 安全性问题:在公网中启用 nmbd 并开放 UDP 137 和 138 端口可能带来安全风险,因为这些端口容易受到攻击。
  • 标准的主机名解析应使用 DNS:在公网或跨网环境中,推荐使用 DNS 服务器进行主机名解析,安全性和稳定性更高。
nmbd 监听的端口
  • UDP 137 - NetBIOS 名称服务:用于名称解析。
  • UDP 138 - NetBIOS 数据报服务:用于浏览和发现服务。
nmbd 的配置步骤(仅限局域网)
  1. 确保 nmbd 启用

    启用 nmbd 服务,使得主机名可以在局域网中被发现和解析:

    sudo systemctl start nmbd
    sudo systemctl enable nmbd
    
  2. 配置 NetBIOS 名称

    /etc/samba/smb.conf[global] 部分设置 netbios name

    [global]
    netbios name = debian  # 将此处的名称更改为你的主机名
    
  3. 检查 nmbd 监听端口

    使用以下命令检查 nmbd 是否在监听 UDP 137 和 138 端口:

    sudo ss -uln | grep ':137\|:138'
    
  4. 使用主机名连接:

    例如可在 Windows 文件资源管理器地址栏中输入:

    \\debian\shared
    
  5. 禁用 nmbd(如果不需要)

    如果不需要通过主机名访问,仅使用 IP 地址,可以禁用 nmbd:

    sudo systemctl stop nmbd
    sudo systemctl disable nmbd
    
公网主机名访问 SMB 的正确方法
  1. 配置 DNS 解析: 在公网环境中,通过购买域名并在 DNS 服务器中配置 A 记录,将服务器 IP 地址与主机名关联。

  2. 修改 Hosts 文件: 对于临时使用,可以在客户端的 Hosts 文件中手动添加主机名和 IP 地址的映射。

客户端通过主机名连接示例
  1. 使用 DNS 解析的主机名连接:

    • 例如,如果你的 DNS 配置了 debian.yourdomain.com,在 Windows 文件资源管理器中输入:
      \\debian.yourdomain.com\shared
      
  2. 修改 Hosts 文件连接:

    • 在 Hosts 文件中添加:
      <云服务器的公网IP>  debian
      
    • 然后在资源管理器中输入:
      \\debian\shared
      

总结

以上步骤详细讲解了如何在 Linux 上配置 SMB 服务,希望能帮助到大家!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值