如何在ubuntu22.04安装samba服务(内含Windows网络发现,开启回收站)
参考文献 1.解决 Linux samba 主机不能被windows 10 发现的问题:https://zhuanlan.zhihu.com/p/339975385
2.如何在Ubuntu上安装与配置Samba:https://blog.csdn.net/weixin_42758707/article/details/129855529
1.安装samba服务
1.1 安装samba
# 更新软件源
sudo apt update
# 安装samba
sudo apt install samba
1.2 创建要共享的目录
sudo mkdir sharedStorage
# 给这个目录读写的权限
sudo chmod 777 sharedStorage
要保证用户对这个目录有读写权限,否则后面开启了samba共享,用户登陆进来也没有读写权限。
我这里给了777的权限,因为后面samba配置里肯定是要配置登录才能访问的。所以其他人权限给rwx问题也不大,(可以按照自己需求配置)。
1.3 创建samba访问用户
1.3.1 创建一个新的用户用于samba访问(可选)
# 添加一个新的用户,-m参数指定创建用户时同时创建用户的家目录
sudo useradd -m sambauser
# 这里是设置新用户访问ubuntu系统的密码
sudo passwd sambauser
# 设置新用户进行samba访问时用的密码
sudo smbpasswd -a sambauser
1.3.2 使用自己的用户用于samba访问
# 设置自己的用户访问samba时的密码
sudo smbpasswd -a 自己的用户名
1.4 配置samba
# 备份samba默认配置文件
sudo cp /etc/samba/smb.conf /etc/samba/smb.conf.bak
想要添加一个共享目录,把下面参数拷贝到/etc/samba/smb.conf中
# 工作区名称(共享文件夹的名字)
[sharedStorage]
# 文件夹注释
comment = 共享文件夹
# 共享文件夹路径
path = /mnt/sharedStorage
# 是否可用
available = yes
# 是否可浏览
browseable = yes
# 是否可写入
writeable = yes
# 是否为(只读模式)
read only = no
# 允许访客(匿名用户),同时需注释掉valid user才有效
guest ok = yes
# 有效用户(可登入用户),优先级大于guest ok,如果和guest ok同时设置,则guest ok失效。如果要指定一个组,则使用@groupname
valid users = sambauser
# 创建文件时强制指定某个所属组
# force group = groupname
# 创建文件权限掩码
create mask = 0775
# 创建目录权限掩码
directory mask = 0775
重启samba服务
sudo systemctl restart smbd
# 开机启动samba服务
sudo systemctl enable smbd
2.在Windows 10网络中发现samba服务
2.1 原理解释
Windows 一直以来依靠 NetBIOS 来发现其他机器。SMBv1有已知安全问题,因而微软决定禁用 SMBv1,因此导致了 NetBIOS 不能工作。所以在Windows10中发现不了ubuntu服务器的samba。
显然,我们不应该为了网络发现启用SMBv1,而应该采取其他方案。Web Service Discovery 就是我们想要的方案。为此我们应当:
在 Linux 安装 WSDD 来作为 Web Service Discovery 的服务器
WSDD 是 Web Service Discovery host daemon 的简称。
2.2 安装wsdd服务
sudo apt update
# 安装wsdd服务
sudo apt install wsdd
3.在samba服务中开启回收站
在/etc/samba/smb.conf中要开启回收站的目录下添加以下配置,如果要全局开启回收站,则把配置复制到[global]中
[sharedStorage]
# 文件夹注释
comment = 共享文件夹
# 共享文件夹路径
path = /mnt/sharedStorage
# 是否可用
available = yes
# 是否可浏览
browseable = yes
# 是否可写入
writeable = yes
# 是否为(只读模式)
read only = no
# 允许访客(匿名用户),同时需注释掉valid user才有效
guest ok = yes
# 有效用户(可登入用户),优先级大于guest ok,如果和guest ok同时设置,则guest ok失效。如果要指定一个组,则使用@groupname
valid users = sambauser
# 创建文件时强制指定某个所属组
# force group = groupname
# 创建文件权限掩码
create mask = 0775
# 创建目录权限掩码
directory mask = 0775
# 添加以下配置以在此共享目录中启用回收站
# 虚拟文件系统对象
vfs objects = recycle
# 回收站的目录名字,自己可以改成隐藏文件夹.recycle
recycle:repository = RECYCLE
# 保留原始目录结构,例如删除了./example/a,回收站中会自动创建出example文件夹,里面存放了被删除的a文件
recycle:keeptree = yes
# 保留文件版本,如果删除了两个同名文件,可以使用版本控制区分出两个文件
recycle:versions = yes
# 更新回收站中的文件时间戳
recycle:touch = yes
# 回收站最大大小(0表示无限制)
recycle:maxsize = 0
# 排除的文件夹,支持通配符* 和 ?
# recycle:exclude_dir = /mnt/sharedStorage/aaaaa/*
# 排除的文件类型
# recycle:exclude = *.tmp, *.temp
# 删除文件时,把文件的最后修改时间改为删除时的时间
# recycle:touch_mtime
重启samba服务
sudo systemctl restart smbd
回收站在第一次删除文件时自动创建,如果之后改了回收站的名字,可能不会自动创建文件夹,需手动创建文件夹
最后提供一些排错:
1.不允许一个用户使用一个以上用户名与一个服务器或共享资源的多重连接
或者连接不上samba服务器都可以试试
事实上这个不是samba的限制。是Windows的限制
打开命令提示符(CMD), 使用以下命令解决
net use * /del /y
2.想要更换用户登录samba
window中打开“凭据管理器”中的Windows凭据可以删除连接时的凭据,下一次访问可以重新输入账号密码。
收集资料不易,如果有用,请给个点赞