坑边闲话:使用 Linux 系统做文件服务器其实很简单,需要的步骤其实相当少。本文介绍基本的共享配置流程。

1. 安装 SAMBA 服务器·

以 Debian 12 为例安装 samba 服务器:

1
2
sudo apt update
sudo apt install samba

2. 添加 Samba 用户·

smb 是典型的 Client-Server 架构,基于内建的统一身份认证。在使用 smbpasswd 添加用户时,该用户名必须已经存在于 Linux 系统中,即作为一个本地系统用户存在。这是因为 Samba 的用户管理基于系统用户,但它为每个用户单独维护了一个 Samba 用户密码数据库。

如果用户尚不存在,可使用以下命令创建一个新的系统用户:

1
sudo useradd -m -s /sbin/nologin <NEW_USERNAME>
  • -m:创建用户的主目录。
  • -s /sbin/nologin:指定一个无效的登录 shell 以防止用户直接登录到系统。如果你希望允许用户登录到系统,可以选择其他 shell 如 /bin/bash.

为该用户添加 Samba 用户账户: 使用 smbpasswd 为该用户设置 Samba 密码:

1
2
sudo smbpasswd -a ${USERNAME}
# 或者 sudo smbpasswd -a <YOUR_USERNAME>

这会将该用户添加到 Samba 用户数据库,并要求你输入该用户的 Samba 密码。可以通过以下命令查看 Samba 用户列表:

1
sudo pdbedit -L

3. 创建 Samba 共享配置·

编辑 Samba 配置文件:

1
2
# 也可以使用你喜欢的 editor, 如 vim
sudo nano /etc/samba/smb.conf

在文件末尾添加共享目录的配置,例如:

1
2
3
4
5
6
7
8
9
10
[990Pro]
path = /mnt/Samsung_990Pro_4TB/uk_storage
comment = Samsung 990 Pro ZFS storage
browseable = yes
writable = yes
read only = no
guest ok = no
create mask = 0700
directory mask = 0700
valid users = newton
  • [990Pro]: 共享的名称,可以在网络中看到,此处使用三星 990Pro 固态,故依次命名。
  • path: 共享目录的路径。
  • comment: 注释,方便客户端了解该共享的存在目的。
  • browsable = yes: 允许共享目录显示在网络浏览中。
  • writable = yesread only = no: 允许写入。
  • guest ok = no: 禁用匿名访问。
  • create mask = 0700directory mask: 用户新建文件、目录时采用的权限掩码。
  • valid users = ${USERNAME}: 指定允许访问的用户。如果有多个用户,可以用空格分隔,如 valid users = user1 user2

如果共享给多个用户,可以创建一个共享组。例如:

1
2
sudo groupadd sambashare
sudo usermod -aG sambashare <USER_NAME>

随后将共享目录的拥有者设置为该组:

1
sudo chgrp sambashare <SHARE_PATH>

4. 重启 Samba 服务·

完成配置后,重启 Samba 服务以应用更改:

1
sudo systemctl restart smbd

总结·

完成这些步骤后,你的 Samba 共享应该可以正常工作,并允许特定用户通过网络访问!