以 Debian/Ubuntu 系统为例。

1. 更新源安装服务

sudo apt update
sudo apt install smbd nmbd -y
sudo apt install smbclient -y # 客户端工具用于测试

2. 创建并准备共享目录

决定你要共享的文件夹,并设置好权限。这里假设共享目录为 /mnt/share​。

# 创建共享目录
sudo mkdir -p /mnt/share

# 设置目录权限,确保后续的 Samba 用户有访问权限
# 例如,设置为 2775 可以确保新创建的文件继承组所有权 [citation:4]
sudo chmod -R 2775 /mnt/share

# 你可以更改目录的所有者,方便后续非 root 用户如 max 访问管理
sudo chown -R max:max /mnt/share

3. 修改 Samba 配置文件

Samba 的主要配置文件是 /etc/samba/smb.conf​。在修改前,强烈建议先备份原文件。

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

在文件末尾,添加你的共享定义。以下是一个常见的配置示例,你可以根据需要调整参数:

[share]                      # 这是其他设备上看到的共享文件夹名称
   comment = My Shared Folder
   path = /mnt/share         # 填写你实际的共享路径
   browseable = yes
   read only = no
   guest ok = no             # 不允许匿名访问,需要用户认证
   valid users = @sambauser  # 允许 "sambauser" 用户组的成员访问
   create mask = 0775        # 新建文件的权限掩码
   directory mask = 0775     # 新建文件夹的权限掩码
   force user = max          # (可选) 强制所有操作以指定系统用户身份进行

Note: 配置文件 [global]​ 段需要修改和注意的项:

workgroup = WORKGROUP  # 确保工作组名称和你 Windows 的工作组名称一致
log level = 2          # 设置日志级别为 2 或 3,便于日常监控查找问题

4. 添加 Samba 用户

Samba 使用独立的用户数据库,但用户必须已经存在于系统中(/etc/passwd​)。

  • 如果还没有系统用户,可以创建一个(例如,名为 max​):

sudo useradd -M -s /usr/sbin/nologin max
  • 将该用户添加到你在配置文件中指定的用户组(例如 sambauser​):

sudo groupadd sambauser
sudo usermod -aG sambauser max
  • 将该系统用户添加到 Samba 数据库中并设置独立的 Samba 密码:

sudo smbpasswd -a max
  • 系统会提示你输入并确认密码 。之后,可以启用该用户:

sudo smbpasswd -e max

5. 重启 Samba 服务

配置完成后,重启 Samba 守护进程使更改生效,并设置开机自启:

sudo systemctl restart smbd nmbd
sudo systemctl enable smbd nmbd
  • ​smbd​ 负责文件共享服务。

  • ​nmbd​ 负责 NetBIOS 名称解析,帮助在网络中发现你的电脑。

6. 配置防火墙(如有并启用)

如果你的 Debian 开启了防火墙(如 ufw​),需要允许 Samba 服务。

sudo ufw allow samba
sudo ufw reload

7. 测试与访问

  • ​本地测试​:使用 smbclient​ 测试连接是否成功。

smbclient -L //localhost -U max
  • 输入密码后,应该能看到你配置的 [share]​ 共享 。

  • 从 Windows 访问:在 Windows 的资源管理器地址栏输入 \\<你的Debian IP地址>\share​,然后输入用户名 max​ 和之前设置的 Samba 密码即可访问 。

  • ​从 Linux/macOS 访问​:可以通过文件管理器(如连接服务器功能,地址为 smb://<你的Debian IP地址>/share​)或使用 smbclient​ 命令进行访问。

8. 问题排查

如出现无法访问问题,可通过日志排查问题。

sudo tail -f /var/log/samba/log.smbd