马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
Linux 和 Windows 之间传文件,最实用的不是挂载 NFS,而是 Samba。这篇用 Ubuntu 22.04 做示例,把从装包、起服务、加用户、设共享目录、到客户端访问的整条链路走一遍,末尾列几个必踩的坑。
一、先分清 NFS 和 Samba
Linux 上做文件共享通常两条路:
- NFS(Network File System):分布式文件系统协议,客户端访问远程服务器上的文件像访问本地一样,允许多机同时读写,对文件系统是透明访问。适合 Linux ↔ Linux。
- Samba:开源软件包,在 Linux / UNIX 上实现 SMB/CIFS 协议。SMB/CIFS 是局域网里共享文件、打印机、资源的协议。这是 Windows ↔ Linux 的唯一通用解。
本文讲第二种。Ubuntu 22.04 为例,换别的发行版差别不大。
二、安装软件包
先查有没有装 samba:
dpkg -l | grep samba
默认没装,直接装:
sudo apt install samba
如果只想用命令挂载,到这步环境就够了。想在文件管理器(Nautilus)图形界面里访问,还得有 gvfs——一般 Linux 默认带了。gvfs 是虚拟文件系统,作用是把本地文件系统、FTP、SFTP、WebDAV 等底层存储统一映射成一个虚拟文件系统,用户用一套接口访问。
三、检查 smbd 和 nmbd 服务
smbd / nmbd 是 samba 的两个核心守护进程,缺一个功能就不全,有些 Linux 默认把它们停了,先查状态:
systemctl status smbd.service
systemctl status nmbd.service
- smbd 是主服务,负责文件和打印机共享,其他机器靠它访问共享目录。
- nmbd 是 NetBIOS 名称服务,负责在局域网里识别和解析计算机名,Windows 网邻里能看到这台机器全靠它。
停了就启动并设开机自启:
sudo systemctl start smbd.service
sudo systemctl enable smbd.service
sudo systemctl start nmbd.service
sudo systemctl enable nmbd.service
四、检查用户组
加入 sambashare 组才有共享权限——能读、能写、能改共享目录里的文件。
groups $USER # 看当前用户
不在组里就加进去,然后注销重登录再继续:
sudo usermod -a -G sambashare 用户名
五、设置 samba 密码
要用账号密码登录,光有系统密码不够,得单独设一个 samba 口令:
sudo smbpasswd -a 用户名
输两遍密码就设好了。忘了也别慌,再跑一次这条命令重设就行。
六、用 net usershare 设置共享
前面的铺垫都是为这步。加一条共享:
net usershare add 共享名 /home/kylin/文件名 备注名 Everyone:R guest_ok=y
常用参数:
Everyone:R → 所有人只读;
Everyone:F → 所有人可写;
Everyone → 拒绝访问;
guest_ok=y → 允许匿名访问;
guest_ok=n → 不允许匿名访问。
其他参数看 man net usershare。
七、用 smbclient 访问共享
只想在命令行访问,装 smbclient:
sudo apt install smbclient
smbclient -L //服务器IP -U 用户名
进去之后是类 ftp 的交互,get / put / ls / quit 都能用。
八、反过来访问 Windows 共享
访问别的 IP 的共享,流程和本地共享有区别:
- 先互相
ping 通——虚拟机场景记得用桥接模式,NAT 模式下局域网其他机器未必通得到;
- 检查 Windows 防火墙(SMB 走 445 端口)和 Linux 侧防火墙(多数 Linux 默认没开防火墙,但装了 ufw 的要查)。
两点都通了,再用 smbclient 或文件管理器访问:smb://服务器IP。
九、必踩的三个坑
- 设了可写权限,但目录 other 没有 w 权限 → 无论命令行还是图形界面都会报"没有权限"。共享目录本身和它父目录的 other 可执行位(
x)也得开。
- 匿名访问失败 → 除了
guest_ok=y,还得保证父目录权限允许进入。
- Windows 能看见但进不去 → 八成是防火墙或端口没放,445 通不通先测。
总结
Linux 共享文件夹完整流程:装 samba / gvfs → 起 smbd + nmbd → 用户进 sambashare 组 → smbpasswd 设口令 → net usershare add 加共享 → smbclient 或 smb:// 访问。记住"目录 other 权限"和"双向防火墙"这两个高频坑,基本一次配通。
qidao123.com企服评测-应用市场 编辑提示 |