boxmoe_header_banner_img

Hello! 欢迎来到辰汐小站!

加载中

文章导读

 Linux(Ubuntu) 网络文件共享 


avatar
chenxi 2026年1月15日 180

 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

  1. 设置目录权限(可选,因为  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

配置项详细解释:

  1.  [share] :共享的名称,在网络上会显示为这个名称。
  1.  path = /home/will/share :这是共享文件夹的绝对路径。请确保这个目录已经存在
  1.  comment = NAS Storage :共享的描述信息,可选。
  1.  browseable = yes :允许在网络邻居中看到此共享。
  1.  create mask = 0777  directory mask = 0777 :设置新创建文件和目录的权限为  0777 (即所有用户可读、写、执行)。请注意:这可能会带来安全风险。通常建议设置为  0755 (目录)和  0644 (文件)以获得更好的安全性。
  1.  valid users = will :只有用户  will  可以访问此共享。这是访问控制的关键。
  1.  force user = will  force group = will :无论客户端用什么账户连接,所有文件操作都将以用户  will  及其主要组  will  的身份进行。这可以确保文件权限的一致性。
  1.  public = no :不允许匿名(来宾)访问。必须提供  valid users  中指定的用户名和密码。
  1.  available = yes :共享处于启用状态。
  1.  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端测试连接:

  1. Ping测试:在Windows命令提示符中运行:
ping 192.168.1.20

Plain Text

如果ping不通,可能是网络问题或IP地址错误。

  1. 使用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端排查

  1. 凭据问题:在Windows中删除旧的凭据:
  • 打开”控制面板” → “凭据管理器” → “Windows凭据”
  • 删除与  192.168.1.20  相关的凭据
  • 重新连接并输入正确的用户名和密码
  1. 网络发现:确保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)

查看评论列表

暂无评论


发表评论

表情 颜文字

插入代码
辰汐小站

汐汐

Avatar
AI

简介:辰汐の小站的智能AI助手

来自:辰汐の小站

生日:2025年2月1日

欢迎光临本站喵~

有任何问题可以问我哦~

感谢@雨落听风祈的编写!

——唯有青春与梦想不可辜负!

.

.

.

.

前往主站