前言

一、检查系统需要的软件包

二、检查smbd和nmbd服务是否启用

三、检查用户是否加入用户组

四、检查是否设置了共享密码

五、使用net usershare设置共享文件夹

六、使用smbclient访问共享文件夹

七、访问Windows共享文件夹

八、注意事项


前言

在Linux上设置共享文件夹通常有两种方式:

1. NFS(Network File System)是一个分布式文件系统协议,用于在计算机网络上访问和共享文件。NFS允许客户端机器通过网络访问远程服务器上的文件,就像访问本地文件一样。该协议允许多个客户机同时访问和修改共享文件,提供了对分布式文件系统的透明访问。

2. Samba是一个开源软件包,用于在Linux和UNIX操作系统上实现SMB/CIFS(Server Message Block/Common Internet File System)协议。SMB/CIFS是一种用于在计算机网络上共享文件、打印机和其他资源的协议。

本文主要详细讲解第二种方法的使用,另外使用的Linux是Ubuntu22.04(跟用啥Linux其实关系不大哈哈)

一、检查系统需要的软件包

使用samba来设置共享文件夹的话,那么肯定需要安装samba软件包呀,使用以下命令查看是否安装了samba软件包

好啦,这里看到Ubuntu默认没有安装对应的samba软件包,直接使用以下命令来安装

sudo apt install samba

 如果只是使用命令挂载共享文件夹的话,那么这里已经具备可以设置共享文件夹的环境了,如果想要在文件管理器(Nautilus)图形界面上访问的话,还需要检查下是否安装了gvfs,不过一般Linux都是已经默认安装了gvfs,下面是gvfs的大概介绍,这里只是简单的描述下作用,想要更加了解gvfs的作用话可以直接去GNOME的官网查看

GNOME的官网:https://www.gnome.org/

gvfs是一个虚拟文件系统,它的主要功能是提供对各种文件系统的统一访问。它实际上是一个桥梁,将不同的底层文件系统(如本地文件系统、FTP、SFTP、WebDAV等)映射到一个虚拟文件系统中,使得用户可以通过统一的接口来访问这些文件系统。

二、检查smbd和nmbd服务是否启用

smbd和nmbd是samba的两个核心的守护进程,想要完整的使用samba的功能的话两个服务都需要是启动的状态,因为有些Linux上会默认将该两个进程stop的,所以需要提前检查下服务的状态

smbd.service是Samba服务器的主要服务,它负责提供文件和打印共享服务。通过该服务,其他计算机可以访问Samba服务器上的共享文件夹和打印机,从而实现文件共享和打印功能。

nmbd.service是Samba服务器的NetBIOS名称服务(NetBIOS Name Service)服务。NetBIOS是一种网络协议,用于在局域网中识别和寻找网络上的计算机。nmbd.service负责维护网络上计算机的NetBIOS名称列表,并提供名称解析功能。通过该服务,计算机可以通过NetBIOS名称找到Samba服务器,从而实现网络共享服务。

使用以下命令来检查smbd.service和nmbd.service两个服务状态

如果服务是stop的状态,那么使用以下命令来启动和开机自启动

systemctl start smbd.service

systemctl enable smbd.service

systemctl start nmbd.service

systemctl enable nmbd.service

三、检查用户是否加入用户组

加入sambashare用户组作用:可以让用户具有共享文件夹的权限,可以读取、写入和修改共享文件夹中的文件

使用以下命令查看当前用户是否加入sambashare用户组

好啦,目前默认加入了sambashare用户组,如果没有加入的话,请使用下面命令加入用户组,并且重启后再进行后面的操作

没有加入用命令加入:

usermod -a -G sambashare 用户名

四、检查是否设置了共享密码

想要使用账号密码登录的话当然要设置下共享密码啦,不然你怎么知道是什么密码呢,使用以下命令设置samba密码

成功设置了samba密码,假如过了很久之后你忘记samba密码了呢,那怎么办呀,不要急呀总会有办法滴

再次使用sudo smbpasswd -a 用户名再次设置就好啦!!!

五、使用net usershare设置共享文件夹

前面都是铺垫,最后一步设置共享文件夹

使用net usershare命令设置共享文件夹

net usershare add "共享名" /home/kylin/文件名 "备注名" Everyone:R guest_ok=y

这里的参数如下:

Everyone:R设置Everyone用户为只读权限
Everyone:F设置Everyone用户为可写权限
Everyone:D设置Everyone用户为拒绝权限
guest_ok=y允许匿名访问
guest_ok=n不允许匿名访问

还有很多该命令的其他参数和详细,那就需要看man手册啦,或者去找其他资料,这里就不一一列举啦

六、使用smbclient访问共享文件夹

假如我们只需要使用命令访问的话,那么我们可以用smbclient命令来访问,系统默认可能没有集成这个包,那么我们需要手动安装下

安装后可以使用以下命令登录访问共享文件夹啦

七、访问Windows共享文件夹

这里想要访问其他IP的共享文件夹的话跟访问本地共享文件夹还是有一定的区别的,首先我们先检查下网络是否都可以ping通

芜湖,直接可以ping通,这里我是使用的虚拟机,虚拟机使用的桥接模式,假如你不知道怎么设置的话,再网上继续找下相关设置以及虚拟机网络配置和讲解吧,这里我就不讲解了哦

另外检查下Windows的防火墙是否关闭,检查下Linux上的防火墙是否也关闭,当然多数Linux上并没有默认设置防火墙,保证上面两点正常后,那么我们继续可以使smbclient命令来访问共享文件夹

八、注意事项

1. 设置了当前共享文件夹有可写权限的话,那么需要增加当前文件夹的other的写权限

2. 设置了匿名访问的话需要设置当前目录以及这个目录的父目录的other的可执行权限

不然的话,不管使用命令访问还是使用图形界面访问都是会导致报错没有权限的问题

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐