Samba服务器的原理及安装使用

本文详细介绍了Samba服务的原理,包括smbd和nmbd的作用,并且逐步指导如何配置Samba服务器,包括安装服务、创建共享目录、修改smb.conf配置文件、创建Samba账户以及在Windows和Linux客户端访问共享文件的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

(一)什么是Samba服务

Samba(SMB)是一个软件,主要功能是能让Linux与Windows之间实现文件共享和打印共享。
Samba有两个核心的守护进程,分别是smbdnmbd,从Samba服务器启动到停止期间持续运行。

smbd:提供文件共享的
smbd监听139TCP端口,smbd是Samba 的核心启动服务,主要负责建立 Linux Samba服务器与Samba客户机之间的对话, 验证用户身份并提供对文件和打印系统的访问,只有smbd服务启动,才能实现文件的共享。

nmbd:提供NETBIOS 名称解析的
nmbd负责监听137TCP端口和137UDP端口,nmbd服务是负责解析用的,类似与DNS实现的功能,nmbd可以把Linux系统共享的工作组名称与其IP对应起来,如果NMB服务没有启动,就只能通过IP来访问共享文件。

(二)配置Samba服务器

1.安装Samba服务

sudo apt-get install samba

2.创建共享目录(这一步可以不需要,后面我就没有共享这个目录)

sudo mkdir /home/xiaoming/share
sudo chmod 777 /home/xiaoming/share

ps:xiaoming为用户名,share为创建的共享目录

3.配置smb.conf文件

Samba服务的配置较为复杂,配置项也比较多。

  • smb.conf配置文件中含有多个段,每个段由段名开始,直到下个段名。每个段名放在方括号中间。

  • 每段的参数的格式是:名称=值。配置文件中一行一个段名和参数,段名和参数名不分大小写。

  • 除了[global]段外,所有的段都可以看作是一个共享资源。段名是该共享资源的名字,段里的参数是该共享资源的属性。

  • Samba安装好后,使用testparm命令可以测试smb.conf配置是否正确。使用testparm–v命令可以详细的列出smb.conf支持的配置参数。

(1)备份原有的配置文件

sudo cp /etc/samba/smb.conf /etc/samba/smb.conf.cp

(2)修改配置文件

sudo gedit /etc/samba/smb.conf 

简单配置:
在配置文件smb.conf末尾添加如下代码
[share]#share这个共享段名可以自己定义
path = /home #设置Samba服务器的共享目录路径,这里我共享了/home目录
available = yes
browseable = yes
public = yes
writable = yes
valid users = xiaoming #这个xiaoming是自己起的,后面在添加Samba账户时就是添加的这个
create mask = 0700
directory mask =0700
force user =nobody
force group = nogroup

然后在[global]段中加入下面代码:
workgroup = WORKGROUP
display charset = UTF-8
unix charset = UTF-8
dos charset = cp936
后面的三行是为了防止出现中文目录乱码的情况。

(3)创建Samba账户

  • 创建前面提到的xiaoming账户:
sudo useradd xiaoming
  • 为账户xiaoming增加samba账户密码(也就是增加网络使用者xiaoming):
sudo smbpasswd -a xiaoming

输入命令后回车,会提示你输入密码。如果没有密码,在Windows上访问时将无法登录。
删除网络使用者的命令是sudo smbpasswd -x xiaoming

  • 重启Samba服务:
sudo service smbd restart
sudo service nmbd restart

(4)Windows客户端访问Linux服务器的共享文件

  • 查看Linux的IP地址:
ifconfig

在这里插入图片描述

  • 打开Windows的文件夹进行测试:
    在快速访问那一栏输入\\192.168.6.129\share
    192.168.6.129是我Samba服务器的地址,share是我在smb.conf配置文件中配置的共享资源段的段名。
    在这里插入图片描述
    点击回车,回车过后会提示你输入用户名和密码。用户名为xiaoming,密码为刚刚你自己设置的密码。点击确定后就可以连接到共享目录了。
    在这里插入图片描述
  • 更换用户凭证:

当需要更换网络凭证来登录,也就是想换一个账户来登录时,可以在Windows中使用组合键Win+R,然后输入cmd来打开命令解释器,接着输入:net use * /del /y来清除账户登录信息,下次连接时就可以输入别的账户来登录了。当然你也可以将net use * /del /y中的*换成你想要断开的连接,如可以将*换成\\192.168.6.129\share
在这里插入图片描述

(5)Linux客户端访问Windows服务器的共享文件

  1. 配置Windows共享目录,鼠标右键——属性——共享,点击“网络文件和文件夹共享”下的“共享”,然后添加你要共享的用户(选了之后一定要记得点“添加”)以及配置权限。在“安全”中可以配置对方对于你共享文件夹的操作权限,有时候你想改文件提示你说权限不够就是没有在“安全”这一项中给写的权限(在“安全”中配置权限这一点对于Windows访问Windows的共享文件夹也适用)。
  2. 在Linux中查看Windows的共享资源
    输入命令:
sudo smbclient -L //192.168.31.78/share

192.168.31.78是我Windows的ip,share是我共享的目录。当连接Windows共享目录不成功并且出现以下错误提示时:Protocol negotiation failed: NT_STATUS_CONNECTION_RESET,多半是因为我们目前的samba客户端使用的协议是SMB1,但是Windows10已经使用SMB2这个协议了,所以我们可以使用-m SMB2这个命令行参数来强制sambaclient使用SMB2协议,即输入命令时输入:sudo smbclient -m SMB2 -L //192.168.31.78/share。但是每次都使用命令行显然不方便,那么我们可以修改配置文件,在/etc/samba/smb.conf文件里的[global]段中添加client max protocol = SMB2 ,然后重启samba服务,就可以正常访问Windows共享文件了。
3. 在Linux中访问Windows的共享资源
输入命令:

sudo smbclient //192.168.31.78/share -U user

如果你在Windows中明确设置了访问的用户是谁,而不是everyone都可以访问,那么user就是你设置的那个用户名。然后输入ls后就可以看到共享目录里的文件了,接着可以输入命令get 文件名就可以将共享目录里的文件下载到Linux中了。
配置参考链接1
配置参考链接2
关于Ubuntu16.04连接Windows10共享失败的问题解决

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值