Featured image of post Debian/Ubuntu 手动配置 Samba 共享指南 📁

Debian/Ubuntu 手动配置 Samba 共享指南 📁

Debian/Ubuntu 手动配置 Samba 共享完全指南 📁 目录 📚 ✨ Samba 简介

Debian/Ubuntu 手动配置 Samba 共享完全指南 📁

Debian Samba 配置


目录 📚


✨ Samba 简介与优势

Samba 是一个开源的软件套件,提供了在 Linux/Unix 系统上与 Windows 系统进行文件和打印机共享的服务。在 Debian 系统上配置 Samba 可以让您轻松实现跨平台文件共享,特别适合在混合操作系统环境中使用。

主要优势:

  • 🌐 跨平台兼容:完美支持 Linux 与 Windows 系统间的文件共享
  • 🔒 安全认证:支持用户认证和权限控制,保障数据安全
  • 👥 多用户支持:支持多个用户和组权限管理
  • 📊 高性能传输:提供高效稳定的文件传输服务
  • 🛡️ 协议兼容:完全兼容 SMB/CIFS 协议
  • 配置灵活:支持丰富的配置选项和自定义设置

🚀 一、Samba 基础配置

1. 安装 Samba 并设置开机自启

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
# 更新软件包列表并安装 Samba
sudo apt-get update && sudo apt install samba -y

# 设置 Samba 服务开机自启
sudo systemctl enable smbd

# 启动 Samba 服务
sudo systemctl restart smbd

# 检查服务状态
sudo systemctl status smbd

2. 创建 Samba 用户并设置密码

1
2
3
4
5
6
7
8
# 创建系统用户(如果尚未存在)
sudo useradd -m admin

# 设置 Samba 密码(与系统密码分开管理)
sudo smbpasswd -a admin

# 查看已创建的 Samba 用户
sudo pdbedit -L

🖥️ 二、Debian/Ubuntu 作为 Samba 服务端配置

1. 备份原始配置文件

1
2
3
4
5
# 备份原始 Samba 配置文件
sudo cp /etc/samba/smb.conf /etc/samba/smb.conf.bak

# 查看备份文件
ls -la /etc/samba/smb.conf*

2. 方法一:覆盖式配置(推荐)

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# 创建共享目录和 Samba 配置文件
sudo mkdir -pm 755 /mnt && \
sudo tee /etc/samba/smb.conf > /dev/null <<'EOF'
[global]
    workgroup = WORKGROUP
    server string = Samba on Debian
    netbios name = Debian
    security = user
    map to guest = Bad User
    unix charset = UTF-8
    socket options = IPTOS_LOWDELAY TCP_NODELAY
    server min protocol = NT1
    load printers = No
    printing = bsd
    veto files = /Thumbs.db/.DS_Store/._.DS_Store/.apdisk/
    delete veto files = yes

[Debian]
    comment = Debian Samba Share
    path = /mnt
    browseable = yes
    writable = yes
    read only = no
    create mask = 0777
    directory mask = 0777
    guest ok = no
    force user = root
    force group = root
    admin users = admin
    valid users = admin,root
EOF

# 重启 Samba 服务
sudo systemctl restart smbd

# 查看服务器 IP 地址
hostname -I

3. 方法二:追加式配置

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# 创建共享目录
sudo mkdir -pm 755 /mnt && \
sudo tee -a /etc/samba/smb.conf > /dev/null <<'EOF'
[Debian]
    comment = Debian Samba Share
    path = /mnt
    browseable = yes
    writable = yes
    read only = no
    create mask = 0777
    directory mask = 0777
    guest ok = no
    force user = root
    force group = root
    admin users = admin
    valid users = admin,root
EOF

# 设置目录所有权
sudo chown admin:admin /mnt/

# 重启 Samba 服务
sudo systemctl restart smbd

# 查看服务器 IP 地址
ip  -o  -4  addr  show  scope  global  |  awk  '{print $4}'  |  cut  -d'/'  -f1  |  head  -n1

4. 方法三:一键配置脚本

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
# 创建一键配置脚本
sudo tee /root/smb.sh > /dev/null <<'EOF'
#!/bin/bash

# 安装 Samba
apt update && apt install samba -y

# 创建共享目录
mkdir -pm 777 /mnt

# 追加共享配置
cat >> /etc/samba/smb.conf <<'MYENDMARK'
[Debian]
    comment = Samba Share
    path = /mnt
    guest ok = no
    read only = no
    writable = yes
    available = yes
    browseable = yes
    force user = root
    force group = root
    create mask = 0777
    directory mask = 0777
    fruit:encoding = native
    fruit:metadata = stream
    fruit:veto_appledouble = no
    password required = yes
    vfs objects = catia fruit streams_xattr
    force user = admin,root
    force group = admin,root
    valid users = admin,root
MYENDMARK

# 创建用户并设置密码
useradd admin 2>/dev/null || true
(echo "your_password"; echo "your_password") | smbpasswd -a -s admin

# 重启 Samba 服务
systemctl restart smbd

echo "Samba 配置完成!"
echo "共享名: Debian"
echo "用户名: admin"
echo "密码: your_password"
EOF

# 设置脚本权限并执行
sudo chmod +x /root/smb.sh
sudo bash /root/smb.sh

💻 三、Debian/Ubuntu 作为 Samba 客户端配置

1. 配置 Samba 客户端挂载

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
# 安装 Samba 客户端工具
sudo apt update && sudo apt install samba-client cifs-utils -y

# 创建本地挂载点
sudo mkdir -p /mnt/ARS2-SMB

# 配置自动挂载
echo "//10.10.10.251/ARS2 /mnt/ARS2-SMB cifs username=root,password=your_password,uid=0,gid=0,file_mode=0777,dir_mode=0777 0 0" | sudo tee -a /etc/fstab

# 测试挂载
sudo mount -a

# 验证挂载结果
df -hT | grep cifs

2. 手动挂载 Samba 共享

1
2
3
4
5
# 手动挂载 Samba 共享
sudo mount -t cifs -o username=root,password=yifan0719 //10.10.10.251/ARS2 /mnt/ARS2-SMB

# 查看挂载内容
ls -la /mnt/ARS2-SMB/

🔍 四、Samba 服务验证和测试

1. 安装 Samba 客户端工具

1
2
# 安装 smbclient
sudo apt update && sudo apt install smbclient -y

2. 测试 Samba 连接

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
# 测试 Samba 共享连接
smbclient //10.10.10.245/Debian -U admin

# 匿名查看 Samba 共享信息
smbclient -L //10.10.10.246 -N

# 在 smbclient 中执行命令示例
# ls - 列出共享文件
# get filename - 下载文件
# put filename - 上传文件
# exit - 退出

3. 查看和管理 Samba 用户

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
# 列出所有 Samba 用户
sudo pdbedit -L

# 添加 root 用户到 Samba
sudo smbpasswd -a root

# 删除 Samba 用户
sudo smbpasswd -x username

# 启用/禁用用户
sudo smbpasswd -e username  # 启用
sudo smbpasswd -d username  # 禁用

🔧 五、Samba 服务管理

1. 服务管理命令

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
# 启动 Samba 服务
sudo systemctl start smbd

# 停止 Samba 服务
sudo systemctl stop smbd

# 重启 Samba 服务
sudo systemctl restart smbd

# 查看服务状态
sudo systemctl status smbd

# 设置开机自启
sudo systemctl enable smbd

2. 配置重新加载

1
2
3
4
5
6
7
8
# 测试配置文件语法
testparm

# 重新加载配置而不重启服务
sudo systemctl reload smbd

# 检查配置语法
sudo testparm -s

🐛 六、故障排除和调试

1. 日志查看

1
2
3
4
5
6
7
8
# 查看 Samba 日志
sudo tail -f /var/log/samba/log.smbd

# 查看最近连接
sudo smbstatus

# 查看详细连接信息
sudo smbstatus -v

2. 网络诊断

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
# 检查端口开放情况
sudo netstat -tulnp | grep smb

# 测试网络连通性
ping 10.10.10.251

# 检查防火墙设置
sudo ufw status

# 检查端口访问
telnet 10.10.10.251 445

3. 权限检查

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
# 检查目录权限
ls -la /mnt/

# 检查 SELinux 状态(如果启用)
getenforce

# 检查 AppArmor 状态
sudo aa-status

# 检查文件系统权限
sudo namei -l /mnt/

⚙️ 七、高级配置选项

1. 多共享配置

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
# 配置多个共享目录
sudo tee -a /etc/samba/smb.conf > /dev/null <<'EOF'
[Documents]
    comment = Important Documents
    path = /mnt/documents
    browseable = yes
    writable = yes
    valid users = @staff

[Media]
    comment = Media Files
    path = /mnt/media
    browseable = yes
    writable = yes
    guest ok = yes
EOF

# 创建对应的目录
sudo mkdir -p /mnt/documents /mnt/media
sudo chmod 755 /mnt/documents /mnt/media

2. 用户组权限管理

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
# 创建用户组
sudo addgroup staff

# 添加用户到组
sudo usermod -aG staff admin

# 配置组权限
sudo tee -a /etc/samba/smb.conf > /dev/null <<'EOF'
[Staff]
    comment = Staff Only
    path = /mnt/staff
    browseable = yes
    writable = yes
    valid users = @staff
    force group = staff
EOF

# 创建目录并设置权限
sudo mkdir -p /mnt/staff
sudo chgrp staff /mnt/staff
sudo chmod 775 /mnt/staff

3. 访问控制列表

1
2
3
4
5
6
7
8
9
# 安装 ACL 工具
sudo apt install acl -y

# 设置目录 ACL
sudo setfacl -R -m g:staff:rwx /mnt/staff
sudo setfacl -R -d -m g:staff:rwx /mnt/staff

# 验证 ACL 设置
getfacl /mnt/staff

🔒 八、安全加固建议

1. 网络安全配置

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
# 限制访问IP范围
sudo tee -a /etc/samba/smb.conf > /dev/null <<'EOF'
hosts allow = 127.0.0.1 10.10.10.0/24
hosts deny = 0.0.0.0/0
EOF

# 禁用不需要的协议
sudo tee -a /etc/samba/smb.conf > /dev/null <<'EOF'
server min protocol = SMB2
server max protocol = SMB3
EOF

2. 认证安全

1
2
3
4
5
6
7
8
9
# 启用加密密码
sudo tee -a /etc/samba/smb.conf > /dev/null <<'EOF'
encrypt passwords = yes
smb passwd file = /etc/samba/private/smbpasswd
EOF

# 创建安全的密码文件目录
sudo mkdir -p /etc/samba/private
sudo chmod 700 /etc/samba/private

3. 定期审计

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
# 创建审计脚本
sudo tee /usr/local/bin/samba_audit.sh > /dev/null <<'EOF'
#!/bin/bash
echo "=== Samba 安全审计 ==="
echo "日期: $(date)"
echo "当前连接:"
smbstatus -b
echo "用户列表:"
pdbedit -L -v
echo "共享状态:"
testparm -s --parameter-name="security"
EOF

sudo chmod +x /usr/local/bin/samba_audit.sh

🚀 九、性能优化建议

1. 缓存和缓冲区优化

1
2
3
4
5
6
7
8
# 性能优化设置
sudo tee -a /etc/samba/smb.conf > /dev/null <<'EOF'
socket options = TCP_NODELAY IPTOS_LOWDELAY
read raw = yes
write raw = yes
max xmit = 65535
getwd cache = yes
EOF

2. 日志优化

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
# 限制日志大小
sudo tee -a /etc/samba/smb.conf > /dev/null <<'EOF'
log level = 1
log file = /var/log/samba/log.%m
max log size = 50
EOF

# 设置日志轮转
sudo tee /etc/logrotate.d/samba > /dev/null <<'EOF'
/var/log/samba/*.log {
    missingok
    notifempty
    copytruncate
    size 10M
    rotate 5
}
EOF

3. 资源限制

1
2
3
4
5
6
# 设置最大连接数
sudo tee -a /etc/samba/smb.conf > /dev/null <<'EOF'
max connections = 100
max disk size = 1000
max open files = 16384
EOF

💾 十、备份和恢复

1. 配置备份

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
# 创建备份目录
sudo mkdir -p /backup/samba

# 备份 Samba 配置文件
sudo tar -czf /backup/samba/samba_config_$(date +%Y%m%d).tar.gz \
    /etc/samba/smb.conf \
    /etc/samba/smb.conf.bak

# 备份用户数据库
sudo tar -czf /backup/samba/samba_users_$(date +%Y%m%d).tar.gz \
    /var/lib/samba/private/passdb.tdb

# 创建定期备份任务
echo "0 2 * * * root tar -czf /backup/samba/samba_config_$(date +\%Y\%m\%d).tar.gz /etc/samba/smb.conf /etc/samba/smb.conf.bak" | sudo tee -a /etc/crontab

2. 快速恢复脚本

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
# 创建恢复脚本
sudo tee /usr/local/bin/samba_recovery.sh > /dev/null <<'EOF'
#!/bin/bash
# 恢复配置文件
tar -xzf /backup/samba/samba_config_$(date +%Y%m%d).tar.gz -C /

# 重启 Samba 服务
systemctl restart smbd

# 验证服务状态
systemctl status smbd
EOF

sudo chmod +x /usr/local/bin/samba_recovery.sh

📊 总结

通过本指南,您已经学会了在 Debian 系统上配置和管理 Samba 共享的完整流程:

  1. Samba 安装:安装必要的软件包和创建共享目录
  2. 用户管理:创建和管理 Samba 用户账户
  3. 服务器配置:配置 Samba 服务器共享选项
  4. 客户端配置:挂载远程 Samba 共享
  5. 验证测试:测试 Samba 服务连接和功能
  6. 服务管理:启动、停止和监控 Samba 服务
  7. 故障排除:解决常见的连接和权限问题
  8. 高级配置:多共享、用户组和 ACL 配置
  9. 安全加固:增强 Samba 服务的安全性
  10. 性能优化:优化 Samba 服务性能
  11. 备份恢复:配置备份和恢复策略

现在您可以轻松地在 Debian 系统中搭建和管理 Samba 文件共享服务,实现跨平台文件共享!📁

💡 提示:在生产环境中,建议使用更复杂的密码策略,定期更新密码,并限制只有必要的用户和IP地址可以访问共享资源。同时定期检查系统日志,监控异常访问行为。