服务端
安装服务
apt install -y samba samba-common
创建共享目录
mkdir -p /opt/smbshare
sudo chmod 777 /opt/smbshare
增加用户
这个用户应当首先存在于系统中,否则会失败。可先用groupadd 和 useradd 添加系统用户,不给shell权限,增加安全性。
sudo smbpasswd -a mm
编辑配置文件
vim /etc/samba/smb.conf
增加如下片段
[share]
comment = share Directories
browseable = yes
path = /opt/smbshare
read only = no
create mask = 0776
directory mask = 0776
valid users = mm, hnidc
guest ok = yes
deadtime = 0 # 单位是分钟,0代表Samba Server不自动切断任何连接
max connections = 0 # 0 不限制
time server = yes # 说明:time server用来设置让nmdb成为windows客户端的时间服务器。此项本人暂未实际启用
重启服务
sudo service smbd restart
windows 客户端
输入用户名和密码
打开 powershell , 输 $creds = Get-Credential ,在弹出框的用户名中输入“域名\用户名", 此处务必输入域名(ip), 否则后面可能失败。此处192.168.3.150 为服务器ip。
映射
在 powershell中输入:
New-SmbGlobalMapping -RemotePath \\192.168.3.150\share -Credential $creds -LocalPath s:
如图:
可以看到映射成功。
如果要删除映射,可以执行:Remove-SmbGlobalMapping -LocalPath s:
网络文件验证
打开文件夹,看到映射成功,可以直接访问。
docker 验证
New-SmbGlobalMapping 映射的共享,可以挂载到容器中,在 powershell中输入:
docker run -it --name test -v s:/a:c:/data mcr.microsoft.com/windows/nanoserver:1909 cmd.exe
进入到 test 容器,可以到 c:/data 目录看到共享文件。
附
powershell 挂载 smb
$username = '192.168.56.102\mm'
$password = '?'
$secPassword = ConvertTo-SecureString $password -AsPlainText -Force
$creds = New-Object System.Management.Automation.PSCredential ($username, $secPassword)
New-SmbGlobalMapping -RemotePath \\192.168.56.102\share -Credential $creds -LocalPath s: