samba配置备份

1. 版本

samba版本: Version 4.17.12-Debian

alt text

2. 配置文件

配置文件路径: /etc/samba/smb.conf

以下省略了1-235行的默认配置,只保留了自定义配置:

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
[home]
comment = 用户目录
path = /home/
read only = no
guest ok = no
browseable = yes
create mask = 0755
directory mask = 0755
writable = yes
valid users = mkbk @mkbk
forceuser = root
forcegroup = root

[www]
comment = Web目录
path = /var/www/
read only = no
guest ok = no
browseable = yes
create mask = 0755
directory mask = 0755
writable = yes
valid users = mkbk @mkbk
forceuser = root
forcegroup = root

[usb]
comment = 挂载点
path = /mnt/
read only = no
guest ok = no
browseable = yes
create mask = 0755
directory mask = 0755
writable = yes
valid users = mkbk @mkbk
forceuser = root
forcegroup = root

[tmp]
comment = 临时目录,允许匿名登录
path = /tmp/
read only = no
guest ok = yes
browseable = yes
create mask = 0755
directory mask = 0755
writable = yes
forceuser = root
forcegroup = root

3. 注意

  1. 配置中的valid users用于指定允许访问samba的用户或组(@表示组),多个用户或组之间用空格分隔。被指定的用户必须是系统中真实存在的用户,并且需要用sudo smbpasswd -a <用户名>命令为其设置samba独立密码,否则将无法访问。相关命令如下:
1
2
3
4
5
6
7
id mkbk  # 确保mkbk用户存在
sudo smbpasswd -a mkbk # 为mkbk用户设置samba独立密码
sudo pdbedit -L # 查看samba已知的用户
sudo systemctl restart smbd.service # 重启samba服务,使配置生效
smbclient //127.0.0.1/home -U mkbk # 使用smbclient测试访问
smbclient //127.0.0.1/tmp # 使用smbclient测试匿名访问(提示输入密码时直接回车)
sudo pdbedit -x -u mkbk # 删除samba已知的用户

alt text

  1. 配置中的forceuserforcegroup用于指定访问samba时,默认使用的用户和组。如果未指定,则默认使用访问samba的用户,如果是匿名登录,则使用nobody用户。

  2. Windows 11 24H2默认开启smb安全签名,会导致samba无法访问,需要关闭smb安全签名。相关powershell命令如下:

1
2
3
4
Set-SmbClientConfiguration -EnableSecuritySignature $false
Set-SmbClientConfiguration -RequireSecuritySignature $false
Get-SmbClientConfiguration | findstr EnableSecuritySignature
Get-SmbClientConfiguration | findstr RequireSecuritySignature

windows 命令行连接SMB的方式如下

1
2
3
net use z: \\IP地址\home
dir z:
net use * /delete
  1. Windows如果报错:不允许一个用户使用一个以上用户名与服务器或共享资源的多重连接。中断与此服务器或共享资源的所有连接,然后再试一次。可以在管理员终端下运行以下命令后再尝试连接:
1
net stop LanmanWorkstation && net start LanmanWorkstation