设置SMB共享文件
win10/11
启用网络发现和文件共享
- 打开控制面板:
- 按
Win + R,输入control,打开 控制面板。 - 进入 网络和共享中心 > 更改高级共享设置。
- 按
- 配置网络发现和共享:
- 在 当前配置文件(如“专用网络”)下,启用以下选项:
- 启用网络发现
- 启用文件和打印机共享
- 在 所有网络 下:
- 启用密码保护共享(推荐,防止匿名访问)。
- 在 当前配置文件(如“专用网络”)下,启用以下选项:
创建专用共享账户(安全关键)
- 新建本地用户:
- 按
Win + R,输入lusrmgr.msc,打开 本地用户和组。 - 右键 用户 > 新用户,创建专用共享账户(如
ShareUser),设置强密码(字母+数字+符号)。
- 按
- 限制账户权限:
- 将账户设置为 标准用户(非管理员),仅用于文件共享。
共享文件夹并配置权限
- 共享目标文件夹:
- 右键要共享的文件夹(如
D:\Shared)> 属性 > 共享 > 高级共享。 - 勾选 共享此文件夹,设置共享名称(如
SecureShare)。
- 右键要共享的文件夹(如
- 设置共享权限:
- 点击 权限 > 添加,输入共享账户名(如
ShareUser)。 - 勾选允许的权限(如 读取 或 更改),点击 确定。
- 点击 权限 > 添加,输入共享账户名(如
- 配置NTFS权限(双重保护):
- 回到文件夹属性 > 安全 > 编辑 > 添加,输入
ShareUser。 - 设置具体权限(如 读取和执行、列出文件夹内容、读取),点击 确定。
- 回到文件夹属性 > 安全 > 编辑 > 添加,输入
建议
禁用不安全的SMB版本(如SMBv1):
- 按
Win + R,输入optionalfeatures,取消勾选 SMB 1.0/CIFS 文件共享支持。
- 按
避免使用默认的Everyone权限:
- 仅授权必要用户。
Linux
服务端
安装 Samba 服务端
1 | sudo apt update |
创建一个专门用于共享的系统用户
为了安全,我们不直接使用您的个人账户,而是创建一个没有登录权限的专用账户。
1 | # 创建一个名为 music_share_user 的用户 |
为这个新用户设置 Samba 密码
这是关键一步。这个密码是专门给Samba服务使用的,与系统登录无关。
1 | sudo smbpasswd -a music_share_user |
系统会提示您输入并确认密码。请设置一个强密码并妥善保管。
设置共享目录的所有权
将您的音乐目录(例如 /opt/navidrome/music)的所有权交给刚刚创建的新用户。
1 | sudo mkdir -p /opt/navidrome/music |
修改 Samba 配置文件
编辑 /etc/samba/smb.conf 文件:
1 | sudo nano /etc/samba/smb.conf |
在文件的最底部,添加以下安全配置块:
1 | [music_share] |
- 移除了
guest ok = yes。 - 新增了
valid users = music_share_user,将访问权限严格限制给music_share_user。
按 Ctrl+X,然后按 Y 和回车保存。
重启 Samba 服务
1 | sudo systemctl restart smbd |
✅ 您的存储服务器现在配置得既安全又高效。
客户端
安装 Samba 客户端工具
1 | sudo apt update |
创建一个安全的凭证文件
直接将密码写在 fstab 文件中是不安全的。我们将其存放在一个只有root用户能读取的文件里。
1 | # 创建一个目录来存放凭证文件 |
在打开的文件中,输入以下两行内容,将密码替换为您在第一步中设置的Samba密码:
1 | username=music_share_user |
保存并退出。然后,设置严格的文件权限,确保只有root能读取:
1 | sudo chmod 600 /etc/samba/credentials |
创建挂载点
1 | sudo mkdir -p /mnt/music_share |
设置开机自动挂载
编辑 /etc/fstab 文件:
1 | sudo nano /etc/fstab |
在文件的最底部,添加新的一行。请将 192.168.1.200 替换为您存储服务器的IP地址。
1 | //192.168.1.200/music_share /mnt/music_share cifs credentials=/etc/samba/credentials,iocharset=utf8,nofail,uid=1000,gid=1000 0 0 |
credentials=/etc/samba/credentials: 告诉系统从我们创建的安全文件中读取用户名和密码。uid=1000,gid=1000: 确保您的普通用户(通常是第一个创建的用户)对挂载的目录有读写权限。
保存并退出。
测试挂载
运行以下命令来立即挂载所有 fstab 中的条目:
1 | sudo mount -a |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Meng's blog!