【学习笔记】Ubuntu与Windows系统实现共享文件夹

共享文件夹实现方法

摘要

本文基本思路是在Windows系统下设置共享文件夹,然后在Ubuntu系统中通过 CIFS/SMB 协议‌挂载网络共享文件夹,最终实现Ubuntu和Win系统共享文件夹操作和开机自动挂载功能。具体步骤如下:

1. 系统版本介绍

首先介绍使用的ubuntu系统和win系统版本:
Ubuntu: 24.04.2
Win: win11家庭中文版

如何查看自己的系统版本号呢?
Ubuntu:

在这里插入图片描述


Win:

在这里插入图片描述


命令:

  • 查看Ubuntu操作系统的详细信息
lsb_release -a 
  • 弹窗显示Windows版本及内部版本号
winver 

2. Win系统设置共享文件夹

首先创建个空的文件夹用作共享文件夹,并进入文件夹属性设置:

在这里插入图片描述


这里本文设置的共享文件夹名为“Share”,在“属性” -> "共享"中设置要共享的用户,为了方便这里添加Everyone作为新的共享用户,在后续Ubuntu挂载时可以跳过用户名和密码要求。并且设置用户的属性为读取/写入

在这里插入图片描述


共享完成后会弹窗显示共享路径如图:

在这里插入图片描述


这里需要记住路径中最后的文件夹名称,即“Share”。

接着在高级共享中确认用户Everyone的权限有读取/写入和完全控制。

在这里插入图片描述


在这里已经基本设置完共享文件夹了,接着需要进一步设置Win系统的网络和共享策略。
打开控制面板,选择网络和共享中心,选择更改高级共享设置,在所有网络中设置无密码保护的共享。其他的网络也都选择启动共享。这样就能正常使用网络共享功能了。

在这里插入图片描述

3. Ubuntu系统挂载共享文件夹

首先本文是通过 CIFS/SMB 协议‌来挂载网络共享文件夹,需要安装 cifs-utils 软件包,可以直接在终端中通过如下命令安装:

sudoapt-getinstall cifs-utils 

下一步创建一个新的目录用来挂载Windows系统的共享文件夹,可以直接创建,也可以在终端中用命令创建,为了方便我创建在当前用户目录下:

mkdir ~/my_share 

或者通过root权限创建目录:

sudomkdir ~/my_share 

这两个命令的区别在于root权限创建的目录当前用户只能访问不能修改文件。

接着在终端挂载共享文件夹,这里需要用到Win系统主机的IP地址,那么怎么知道我Win系统的主机地址呢?
可以在Win系统cmd终端中通过命令ipconfig来查看。我们需要的是其中的IPv4地址,
关键词:IPv4 地址

ipconfig 
在这里插入图片描述


比如我的IPv4地址为:192.168.1.1

也可以在挂载之前查看自己的IP地址是否能正确连接,在Ubuntu终端中:

ping192.168.1.1 

如果能正确连接则会有ping的输出。

根据电脑的IPv4地址和共享文件夹名称,在Ubuntu系统终端中输入如下命令:

sudomount -t cifs //192.168.1.1/Share ~/my_share 

请诸位更改为自己的IP地址和名称。

此时便能成功连接到共享文件夹,如果在连接过程中仍提示需要输入Win系统的用户密码,说明Win系统默认设置了安全策略的强制验证机制,对于来宾用户仍需验证密码。出于安全考虑,这里不推荐修改这个强制验证机制,乖乖输入密码进行验证即可。

成功挂载共享文件夹之后,在Ubuntu系统对应挂载目录下便能显示共享文件夹的内容了。

在这里插入图片描述
在这里插入图片描述


也可以在终端中检查是否成功挂载共享文件夹:

df -h 
在这里插入图片描述

这里初步实现了挂载共享文件夹,但是仍然存在一些小问题。在下一章中详细了解。

4. 共享文件夹中遇到的问题

本章简单列出了我在共享文件夹中遇到的问题,并给出解决办法,并在最后实现了开机自动挂载功能。

(1)为什么我挂载的文件夹只能访问文件,不能写入文件?

这是因为使用sudo挂载共享文件夹时,只有root用户才有读写权限,而挂载目录的归属用户和归属组只有访问权限:

在这里插入图片描述


解决办法是在挂载的时候显示地指定挂载目录的归属用户和归属组并且赋予其读写权限,因此挂载命令修改如下:

sudomount -t cifs //192.168.1.1/Share ~/my_share \ -o uid=$(id -u),gid=$(id -g),dir_mode=0777,file_mode=0777 

如果现在的目录my_share已经挂载完成,但是没有写入权限,记得先卸载现在的挂载点,再重新挂载并指定权限:

sudoumount ~/my_share 
sudomount -t cifs //192.168.1.1/Share ~/my_share \ -o uid=$(id -u),gid=$(id -g),dir_mode=0777,file_mode=0777 

现在实现了对共享文件夹的双向读取、写入操作了。

(2)我想对挂载目录重命名,但是提示无法重命名,有进程正在使用它。

在这里插入图片描述


这是因为该目录仍处于挂载状态,需要先卸载挂载点,重命名后再挂载。

sudoumount ~/my_share 
mv ~/my_share ~/new_share 
sudomount -t cifs //192.168.1.1/Share ~/new_share \ -o uid=$(id -u),gid=$(id -g),dir_mode=0777,file_mode=0777 

(3)我不想用Everyone来共享了,我想通过已经有的用户来共享文件夹,怎么做?

在Ubuntu终端挂载文件夹的时候指定用户名和密码即可:

sudomount -t cifs //192.168.1.1/Share ~/new_share \ -o username=Windows用户名,password=Windows用户名的密码, \uid=$(id -u),gid=$(id -g),dir_mode=0777,file_mode=0777 

请诸位自行改为自己的用户名和密码。

如果不想在命令行中显示地指定用户名和密码,为了确保密码安全,可以将用户名和密码写入隐藏文件,挂载时由隐藏文件来指定用户名和密码:

  • 创建隐藏文件
sudotouch /etc/.smbcredentials 
  • 设置隐藏文件权限为仅允许所有者读写:
sudochmod600 /etc/.smbcredentials 
  • 将用户名和密码写入隐藏文件
sudo gedit /etc/.smbcredentials 


请诸位自行改为自己的用户名和密码。
挂载命令修改如下:

sudomount -t cifs //192.168.1.1/Share ~/new_share \ -o credentials=/etc/.smbcredentials, \uid=$(id -u),gid=$(id -g),dir_mode=0777,file_mode=0777 

如果不知道自己电脑有哪些用户名,可以在Windows中用管理员权限运行powershell终端:
按下win+X,选择Windows终端(管理员),输入如下命令:

Get-LocalUser

该命令会列出本地计算机上的所有用户账户。

在这里插入图片描述


(4)为什么我每次启动Ubuntu系统都要重新挂载啊,好麻烦,怎么才能开机自动挂载呢?

可以通过/etc/fstab文件来配置开机自动挂载。

  • 在终端中打开/etc/fstab文件
sudo gedit /etc/fstab 
  • 在文件的最后添加如下命令:
//192.168.1.1/Share ~/new_share cifs credentials=/etc/.smbcredentials,iocharset=utf8,vers=3.0,_netdev,auto,dir_mode=0777,file_mode=0777 00

其中:

cifs指定使用CIFS/SMB协议挂载Windows共享

credentials=/etc/.smbcredentials从指定文件读取用户名和密码

iocharset=utf8支持中文等特殊字符(考虑到用户名和密码包含中文和特殊字符等情况)

vers=3.0强制使用SMB3.0协议(兼容性最佳)

_netdev等待网络就绪后再挂载

auto系统启动时自动挂载

dir_mode=0777,file_mode=0777设置目录和文件权限为全开放

0 0禁用文件系统备份和启动检查

结论

至此,Ubuntu与Windows系统共享文件夹的功能完成了,每次启动Ubuntu系统都能自动挂载共享文件夹。需要特别注意的是,因为Win系统设置了安全策略的强制验证机制,如果用Everyone中的匿名用户来挂载共享文件夹,由于该机制需要验证用户密码,导致无法实现开机自动挂载,因此开机自动挂载需要换为自己的普通用户名和密码。

Read more

深挖 DeepSeek 隐藏玩法·智能炼金术2.0版本

深挖 DeepSeek 隐藏玩法·智能炼金术2.0版本

前引:屏幕前的你还在AI智能搜索框这样搜索吗?“这道题怎么写”“苹果为什么红”“怎么不被发现翘课” ,。看到此篇文章的小伙伴们!请准备好你的思维魔杖,开启【霍格沃茨模式】,看我如何更新秘密的【知识炼金术】,我们一起来解锁更加刺激的剧情!友情提醒:《《《前方高能》》》 目录 在哪使用DeepSeek 如何对提需求  隐藏玩法总结 几个高阶提示词 职场打工人 自媒体创作 电商实战 程序员开挂 非适用场地 “服务器繁忙”如何解决 (1)硅基流动平台 (2)Chatbox + API集成方案 (3)各大云平台 搭建个人知识库 前置准备 下载安装AnythingLLM 选择DeepSeek作为AI提供商 创作工作区 导入文档 编辑  编辑 小编寄语 ——————————————————————————————————————————— 在哪使用DeepSeek 我们解锁剧情前,肯定要知道在哪用DeepSeek!咯,为了照顾一些萌新朋友,它的下载方式我放在下面了,拿走不谢!  (1)

By Ne0inhk
【AI大模型】DeepSeek + 通义万相高效制作AI视频实战详解

【AI大模型】DeepSeek + 通义万相高效制作AI视频实战详解

目录 一、前言 二、AI视频概述 2.1 什么是AI视频 2.2 AI视频核心特点 2.3 AI视频应用场景 三、通义万相介绍 3.1 通义万相概述 3.1.1 什么是通义万相 3.2 通义万相核心特点 3.3 通义万相技术特点 3.4 通义万相应用场景 四、DeepSeek + 通义万相制作AI视频流程 4.1 DeepSeek + 通义万相制作视频优势 4.1.1 DeepSeek 优势 4.1.2 通义万相视频生成优势 4.2

By Ne0inhk
【DeepSeek微调实践】DeepSeek-R1大模型基于MS-Swift框架部署/推理/微调实践大全

【DeepSeek微调实践】DeepSeek-R1大模型基于MS-Swift框架部署/推理/微调实践大全

系列篇章💥 No.文章01【DeepSeek应用实践】DeepSeek接入Word、WPS方法详解:无需代码,轻松实现智能办公助手功能02【DeepSeek应用实践】通义灵码 + DeepSeek:AI 编程助手的实战指南03【DeepSeek应用实践】Cline集成DeepSeek:开源AI编程助手,终端与Web开发的超强助力04【DeepSeek开发入门】DeepSeek API 开发初体验05【DeepSeek开发入门】DeepSeek API高级开发指南(推理与多轮对话机器人实践)06【DeepSeek开发入门】Function Calling 函数功能应用实战指南07【DeepSeek部署实战】DeepSeek-R1-Distill-Qwen-7B:本地部署与API服务快速上手08【DeepSeek部署实战】DeepSeek-R1-Distill-Qwen-7B:Web聊天机器人部署指南09【DeepSeek部署实战】DeepSeek-R1-Distill-Qwen-7B:基于vLLM 搭建高性能推理服务器10【DeepSeek部署实战】基于Ollama快速部署Dee

By Ne0inhk

用DeepSeek和Cursor从零打造智能代码审查工具:我的AI编程实践

💂 个人网站:【 摸鱼游戏】【神级代码资源网站】【星海网址导航】摸鱼、技术交流群👉 点此查看详情 引言:AI编程革命下的机遇与挑战 GitHub统计显示,使用AI编程工具的开发者平均效率提升55%,但仅有23%的开发者能充分发挥这些工具的潜力。作为一名全栈工程师,我曾对AI编程持怀疑态度,直到一次紧急项目让我彻底改变了看法。客户要求在72小时内交付一个能自动检测代码漏洞、优化性能的智能审查系统,传统开发方式根本不可能完成。正是这次挑战,让我探索出DeepSeek和Cursor这对"黄金组合"的惊人潜力。 一、工具选型:深入比较主流AI编程工具 1.1 为什么最终选择DeepSeek+Cursor? 经过两周的对比测试,我们发现不同工具在代码审查场景的表现差异显著: 工具代码理解深度响应速度定制灵活性多语言支持GitHub Copilot★★★☆★★★★★★☆★★★★Amazon CodeWhisperer★★☆★★★☆★★★★★★☆DeepSeek★★★★☆★★★★★★★☆★★★★☆Cursor★★★☆★★★★☆★★★★★★★★ 关键发现: * Dee

By Ne0inhk