我不久前安装了 Ubuntu 19.10。我想用它作为文件服务器。使用 Gnome GUI,我在名为 UbuntuShare 的文件夹上启用了共享,并单击提示以启用 Samba。我选中了复选框,以便任何人都可以访问共享,并为所有人设置读/写权限。
此事发生了一些奇怪的事情。
在 UbuntuShare 文件夹中,创建了一个名为 core 的文件。它上面有一个橙色的锁符号和红色的 X 符号。另一个共享文件夹也出现了这种情况。我最终删除了该文件夹以摆脱它,但这个文件夹又出现了这种情况。我在网上搜索过,找不到任何相关信息,所以我不知道这是否正常,但这似乎很奇怪。
我可以从我的 Windows 10 笔记本电脑上查看和访问 UbuntuShare 文件夹,但前提是我输入计算机名称或 IP 地址。它不会显示在网络共享屏幕上。非常奇怪的是,我还有另外两台台式机,即使我输入了计算机名称或 IP 地址,它们都看不到它。这三台机器都是 Windows 10,我检查了这三台机器上的网络共享设置,它们是一样的。唯一的区别是我的笔记本电脑在办公室的域中,而台式机在标准工作组中。
我从笔记本电脑创建了几个 Word 文档并将其保存到 Ubuntu 上的 Samba 共享中。当我在 Ubuntu 机器上时,它们上面有一个锁定符号。当我在 GUI 中查看权限时,它说我不拥有这些文件,也无法修改权限。我该如何做才能避免 Windows 机器添加文件时出现此问题?
我担心自己不知怎么搞乱了 Samba。在我意识到 Gnome GUI 有共享方式之前,我按照我找到的一些命令行说明为早期版本的 Ubuntu 安装 Samba。当我意识到 GUI 更简单时,我在 Samba 上执行了 sudo apt purge 来清除我所做的一切,希望这样可以清除它。
我的目标是使共享功能正常工作,以便我可以轻松共享文件以供 Windows 计算机访问。这两台 Windows 10 计算机由我的小学生使用,因此我不想必须进行身份验证才能访问 Samba 服务器。此外,如果核心文件正常,那就没问题。如果不正常,我想修复它。
我将非常感激任何对此提供的帮助。
埃里克
答案1
- 要检查奇数文件夹的内容并能够将其删除,请使用终端。
- 在终端窗口中使用命令转到您的文件夹
cd
:cd /home/$USER/UbuntuShare
ls -ailh
通过命令检查这个奇怪文件的所有者和权限
如果你真的想删除该文件,你可以使用sudo rm -fr /pathto/UbuntuShare/core
但最好通过 来检查一下里面有什么东西sudo cat /home/$USER/UbuntuShare/core
。
在您的例子中,您共享了一个smb.conf
未配置共享的默认文件。要配置它,请在您的末尾添加以下内容/etc/samba/smb.conf
:
[SambaShare]
# replace yourusername by your real user's name
path = /home/yourusername/UbuntuShare
writable = yes
guest ok = yes
guest only = yes
read only = no
create mode = 0777
directory mode = 0777
force user = nobody
还要确保您的文件夹具有所需的权利和所有权:
sudo chown -R nobody:nogroup /home/$USER/UbuntuShare
sudo chmod -R 0777 /home/$USER/UbuntuShare
然后重新启动samba服务:
sudo systemctl restart smbd nmbd
另外,允许防火墙使用 Samba:
sudo ufw allow samba
更新 1:
在 Windows 10 版本 1511 中,默认情况下禁用对 SMBv1 的支持,因此禁用了 NetBIOS 设备发现。根据实际版本,从版本 1709(“秋季创意者更新”)开始的更高版本的 Windows 不再允许安装 SMBv1 客户端。这导致运行 Samba 的主机不会列在 Explorer 的“网络(邻居)”视图中。虽然没有连接问题并且 Samba 仍可正常运行,但用户可能希望 Windows 自动列出他们的 Samba 主机。
使 Ubuntu 18.04、19.10 上的 samba 正常运行并在 Windows 10 版本 1909 共享网络中可见韋斯代德
使用终端执行下一步:
cd ~/
sudo apt install git
git clone https://github.com/christgau/wsdd
cd wsdd
sudo cp etc/systemd/wsdd.service /etc/systemd/system/
sudo cp src/wsdd.py /usr/bin/wsdd
sudo nano /etc/systemd/system/wsdd.service
改成
Group=nobody
Group=nogroup
添加以上内容
ExecStart
:
Restart=on-failure
RestartSec=15
然后按以下方式退出:Ctrl+ X,然后Y,然后Enter
sudo ufw allow 3702 && sudo ufw allow 5357
# 允许 wsdd 流量通过防火墙sudo systemctl enable wsdd.service
sudo systemctl start wsdd
systemctl status wsdd
看看它是否活跃
如果服务处于活动状态,则删除wsdd
文件夹:rm -fr ~/wsdd
另外,如果你不想为这个配置烦恼,并且你的 Ubuntu 机器在 Windows 10 共享网络中的可见性并不重要,那么你可以将你的 UbuntuShare 文件夹拖放到 Windows 文件资源管理器中快速访问项在此处创建其快捷方式。这样您无需输入 Ubuntu 计算机的 IP 地址即可访问它。
更新 2:如果 Windows 10 拒绝连接到您的 Ubuntu 共享,请尝试将 SMB 协议指定为版本 2 或 3:
- 打开并编辑您的
smb.conf
文件:sudo nano /etc/samba/smb.conf
- 在
[global]
部分下输入下一个:protocol = SMB3
如果你的samba --version
是 4。 - 重启samba服务:
sudo systemctl restart smbd nmbd
- 检查你的 samba 服务是否健康:
systemctl status smbd nmbd
答案2
感谢大家的指导和帮助。在发现这不太可能是 Samba 问题后,我今天花了一些时间在 Windows 中寻找可能的原因。
我偶然发现了下面的文章,按照解决方案操作后,两台台式计算机立即就能访问 samba 共享了。
Microsoft 支持文章解决方案基于:https://support.microsoft.com/en-us/help/4046019
计算机配置\管理模板\网络\Lanman Workstation“启用不安全的来宾登录”
答案3
我现在无法在 Windows 上尝试,但至少在 ubuntu 上可以。这是我从这里我认为值得尝试:
- 通过复制来备份当前
/etc/samba/smb.conf
文件:sudo cp /etc/samba/smb.conf /etc/samba/bk.smb.conf
编辑您的
/etc/samba/smb.conf
:[global] workgroup = WORKGROUP server string = %h server (Samba, Ubuntu) netbios name = UBUNTU-POWERSPEC log file = /var/log/samba/log.%m max log size = 10240 security = user map to guest = Bad Password getwd cache = yes guest account = nobody usershare allow guests = Yes server signing = auto passdb backend = tdbsam local master = yes vfs objects = acl_xattr map acl inherit = yes store dos attributes = yes winbind nss info = template winbind enum users = Yes winbind enum groups = Yes winbind use default domain = yes client use spnego = yes client ntlmv2 auth = yes encrypt passwords = yes local master = No hide dot files = No allow insecure wide links = yes store dos attributes = yes
重启samba服务:
sudo systemctl restart smbd nmbd
检查samba服务状态:
sudo systemctl status smbd nmbd
答案4
跟随这些说明。为了获得最大可用性,请确保服务器上的 SAMBA 帐户用户名(与服务器用户名分开)与您用于访问共享的 Windows 帐户用户名相匹配。