Ubuntu 网络文件共享
在 Ubuntu 系统中,当我们使用windows系统访问本地或者远程Linux主机时,可以通过Samba服务来完成;Samba可以实现与其他设备(如 Windows 系统)的网络文件共享。以下是详细步骤:
方法一:通过 Samba 配置共享文件夹
1. 安装 Samba
打开终端,更新系统并安装 Samba:
sudo apt update && sudo apt update && sudo apt install samba -y
Bash
2.创建系统用户
需要先创建一个用户will(可选,但是你下面需要相同更改)。可以使用以下命令:
sudo adduser will
Bash

3. 创建共享文件夹
在家目录下创建一个共享文件夹:
你可以自己更改文件夹路径:/home/will/share
- 设置目录权限(可选,因为 force user/group 会处理权限,但设置所有权更清晰):
sudo mkdir -p /home/will/sharesudo chmod 777 /home/will/sharesudo chown -R will:will /home/will/share# 或者# sudo chmod 777 /home/$USER/share
Bash
4. 配置 Samba
编辑 Samba 配置文件:
sudo nano /etc/samba/smb.conf
Shell
这些是已经有的,不做更改:

在文件末尾添加以下内容:注意,这个配置使用的 [share] 共享更精细,提供了更好的访问控制和权限管理:
[share] path = /home/will/share comment = NAS Storage browseable = yes create mask = 0777 directory mask = 0777 valid users = will force user = will force group = will public = no available = yes writable = yes
ini

配置项详细解释:
- [share] :共享的名称,在网络上会显示为这个名称。
- path = /home/will/share :这是共享文件夹的绝对路径。请确保这个目录已经存在。
- comment = NAS Storage :共享的描述信息,可选。
- browseable = yes :允许在网络邻居中看到此共享。
- create mask = 0777 与 directory mask = 0777 :设置新创建文件和目录的权限为 0777 (即所有用户可读、写、执行)。请注意:这可能会带来安全风险。通常建议设置为 0755 (目录)和 0644 (文件)以获得更好的安全性。
- valid users = will :只有用户 will 可以访问此共享。这是访问控制的关键。
- force user = will 与 force group = will :无论客户端用什么账户连接,所有文件操作都将以用户 will 及其主要组 will 的身份进行。这可以确保文件权限的一致性。
- public = no :不允许匿名(来宾)访问。必须提供 valid users 中指定的用户名和密码。
- available = yes :共享处于启用状态。
- writable = yes :允许写入。
保存并退出(按Ctrl+S保存,Ctrl+X退出)。
5.设置防火墙
Ubuntu的防火墙(UFW)默认会阻止Samba端口。Samba需要以下端口:
- TCP 139, 445:文件共享
- UDP 137, 138:名称解析
解决方案:允许Samba端口
# 查看当前防火墙状态sudo ufw status
# 如果防火墙是激活状态,允许Samba服务sudo ufw allow samba
Bash
6. 添加 Samba 用户
为当前用户设置 Samba 密码:
sudo smbpasswd -a will
Shell

7. 重启 Samba 服务
sudo systemctl restart smbd.service nmbd.service# 或者# sudo systemctl restart smbd nmbd
Bash
8.windows连接
你得先知道Ubuntu的IP地址,然后登录windows端,打开“此电脑”,根据图示操作

在这里输入服务器的IP地址和共享名称:

输入你设定的用户名和密码:

PS:当然,你也可以创建两个共享(图中是Media共享和Asset共享),对应的,在windows端有俩个文件夹或者映射驱动器,但是同样你需要做好用户权限和文件夹的位置管理:

9.关于连接不上的问题。。。
1. 检查Samba服务状态
首先确认Samba服务正在运行:
sudo systemctl status smbd nmbd
Bash
这是运行的状态:

如果服务没有运行,请启动它们:
sudo systemctl start smbd nmbd
Bash
2. 再次检查防火墙设置(最可能的原因)
Ubuntu的防火墙(UFW)默认会阻止Samba端口。Samba需要以下端口:
- TCP 139, 445:文件共享
- UDP 137, 138:名称解析
解决方案:允许Samba端口
# 查看当前防火墙状态sudo ufw status
# 如果防火墙是激活状态,允许Samba服务sudo ufw allow samba
# 或者手动开放端口sudo ufw allow 139/tcpsudo ufw allow 445/tcpsudo ufw allow 137/udpsudo ufw allow 138/udp
# 重新加载防火墙规则sudo ufw reload
Bash
3. 检查Samba配置文件
确保你的配置正确。在终端中检查:
# 测试配置文件语法testparm
# 查看当前有效的共享配置testparm -s
Bash
确认输出中包含你的 [share] 共享配置。

4. 检查网络连接
从Windows端测试连接:
- Ping测试:在Windows命令提示符中运行:
ping 192.168.1.20
Plain Text
如果ping不通,可能是网络问题或IP地址错误。
- 使用IP地址连接:在Windows中尝试使用IP地址连接:
\\192.168.1.20\share
Plain Text
而不是使用计算机名。
5. 检查Samba绑定接口
在 /etc/samba/smb.conf 的 [global] 部分,确保没有限制接口:
[global] # 注释掉或删除以下行,或添加您的网络接口 ; interfaces = 127.0.0.0/8 eth0 ; bind interfaces only = yes
ini
如果 bind interfaces only = yes 被启用且接口配置不正确,会导致无法从其他设备访问。
6. 检查SELinux(如果启用)
虽然Ubuntu默认不启用SELinux,但如果您修改过,可以检查:
getenforce
Bash
如果返回 Enforcing ,需要调整SELinux策略。
7. 查看Samba日志
检查Samba日志以获取更多错误信息:
# 查看最近的Samba日志sudo tail -f /var/log/samba/log.smbd
Bash
尝试连接时观察日志输出。
8. Windows端排查
- 凭据问题:在Windows中删除旧的凭据:
- 打开”控制面板” → “凭据管理器” → “Windows凭据”
- 删除与 192.168.1.20 相关的凭据
- 重新连接并输入正确的用户名和密码
- 网络发现:确保Windows的网络发现和文件共享已启用。
快速诊断命令汇总
运行以下命令进行快速检查:
# 1. 检查服务sudo systemctl status smbd
# 2. 检查端口监听sudo netstat -tlnp | grep -E '(139|445)'
# 3. 检查防火墙sudo ufw status
# 4. 测试本地连接smbclient -L localhost -U will
Bash
总结:首先检查防火墙设置,然后确认Samba服务运行状态和端口监听情况。按照上述步骤排查,应该能解决连接问题。

评论(0)
暂无评论