Linux服务.NO7——samba

10.Samba

10.1.samba概念

Samba服务是一种类似于ftp或nfs的一种文件共享的服务,是基于SMB协议的在网络上的计算机之间远程共享Linux文件和打印服务。
利用Samba服务器,可以在任意系统之间完成文件共享,有利的除去了nfs的缺陷,同时Samba主要是用于局域网内的文件共享,SMB协议是建立在NetBIOS协议之上的一个应用协议,使用的是利用138和139端口的tcp协议的一种服务,微软有人使用NetBIOS开发出来一个网络文件/打印服务。
Samba服务的核心进程是smbd和nmbd进程,smbd用于为客户机和服务器进行协商,nmbd用于使客户机能浏览器Linux服务器的共享资源。

10.2.NetBIOS

10.2.1.NetBIOS概念

NetBIOS(Network Basic Input/Output System),网络基本输入输出系统,主要用于数十台(20~200)计算机的小型局域网,这种协议其实是一种程序编程接口(API),给局域网上的程序使用。作用是为了给局域网提供网络以及其他特殊功能。
netbios系统可以利用多种方式将netbios名解析为相应的IP地址,实现信息通信,所以在局域网内部使用netbios系统可以方便的实现消息通信及资源共享,而且具有占用系统资源少、传输效率高的优点。
NetBIOS名用于表示网络上NetBIOS资源。

10.2.2.NetBIOS行为方式

netbios请求以网络控制块(NCB:Network Control Block)的形式提供,NCB中包含了信息存放位置和目标名称等信息。NetBIOS提供了七层模型的应用层和传输层功能。
netbios支持两种通信模式:

  1. 会话(session):指两台计算机建立一个连接进行会话,可以大量处理信息,支持差错检测和恢复功能。
  2. 数据报(datagram):面向无连接操作,发送的信息较少,支持广播发送数据。
    3.NetBIOS名称映射
    netbios名称为16字节长(实在不够就拿占位符补充),对使用的字节没有限制,对于不需要路由的局域网,将名称映射到ip地址有三种方法:
  3. IP广播,即局域网内如果一台计算机发现了另一台计算机的netbios名称,但是不知道它的名字(也就是缓存中没有记录),就会发一个广播信号,内容包含这个陌生计算机的netbios名称,然后这个陌生计算机收到信息之后就会返回自己的IP。
  4. lmhosts文件:这个文件是专门负责映射IP地址和network计算机名称的文件。
  5. NBNS:NetBIOS命名服务器负责将NetBIOS名称映射到IP地址上,该服务由nmbd进程执行。

10.3.Samba工作原理

1.协议协商:客户端向服务器发送请求数据报,然后服务器返回响应数据报。请求和接收的数据报都是netprot类型的指令包,用于通信双方身份(是否是smb客户)、权限确认等作用,决定是否可以建立连接。
2.建立连接:当协商完成后,客户端发送session setup指令,同时提交账号和密码,服务器进行身份(具体是哪个用户)验证。
3.访问资源:建立连接之后,客户端访问共享资源。客户端发送tree connect指令包。
4.断开连接
前3步虽然发送了不同的信号,但是工作方式都是客户机向服务器发送请求,然后服务器向客户机返回响应,过程类型http的响应过程,都是一种c/s模式的关系。

10.4.安装Samba

命令yum -y install samba*即可安装上Samba所有的关联包,如果使用rpm安装,那么一共需要安装14个左右的依赖包。
samba的服务进程是smb,使用systemctl相关命令进行管理

10.5.Samba的安全级别

Samba给访问自己的用户分了五种安全级别以保障服务器的安全。
share:不需要提供用户名和密码就可以访问服务器(匿名用户能访问的前提就是安全级别为share,否则任何设置都无意义)
user:需要提供用户名和密码,身份由服务器验证。
server:需要用户名和密码,还需要指定其他的windows服务器或另外的Samba服务器作为身份验证。
domain:需要提供用户名和密码,指定windows域控制器做身份验证,Samba服务器只能作为域的成员客户机。
ads:需要比domain更高的验证。

10.6.配置文件

Samba服务器的主配置文件是/etc/samba/smb.conf,该文件向smbd和nmbd进程说明共享的内容、共享输出对象以及如何进行输出。
配置文件由全局设置(Global Definitions)和共享定义(Share Definitions)两部分构成,全局设置用于设置服务器整体的运行环境,共享定义用于设置文件共享和打印共享资源。定于语法为[标签],然后换行写参数:
[global](必须要有的,设置全局参数)
*workgroup=MYGROUP 设置服务器所在的工作组
*server string=Samba Server Version %v 设置服务器的描述信息
(这两个参数必须,但一般不修改,为默认)
*netbios name=MYSERVER 设置服务器的NetBIOS名字
*interface=lo eth0 172.18.252.27/24 设置服务器所用的网卡
*hosts allow=127. 192.168.12. 设置允许访问你服务器的网络地址、主机地址、域等。
允许指定主机:如hosts allow=192.168.0.5
允许某网段:如hosts allow=192.168.0.
允许某域:如hosts allow=.sh.com
允许所有主机:hosts allow=ALL
hosts deny=192.168.12. 设置访问黑名单,格式和allow一样
guest account=pcguest 设置默认账户名字,如果设置为pcguest,则默认是nobody用户。
*log file=/var/log/samba/log.%m 设置日志文件路径,%表示客户机主机名字
*max log size=500 日志文件的最大值,单位是k,值为0表示无限制
*security=user 设置用户访问服务器的安全级别
(命令password -a +[username] 给username设置samba密码)
encrypt password=yes 表示对Samba的密码进行加密
smb passwd file=/etc/samba/smbpasswd设置Samba密码文件路径
password server=192.168.0.100用于设置身份验证服务器名称(只有在设置security的级别高于user才会生效)
load printers=yes 允许Samba服务器使用打印机功能
printcap name=/etc/printcap 设置打印机配置文件路径
deadtime=15客户端没有操作15分钟后服务器将中断
共享定义的标签就是共享名称,可以自定义,共享目录的内容格式是固定的:
[selfname]
*comment=it 设置共享目录的备注说明
*path=/root/it 共享目录的绝对路径
*printable=yes 允许打印
public=yes 允许匿名用户访问(只有安全级别为share才有效)
guest ok=yes 允许匿名用户访问共享资源
guest only=yes 仅仅允许匿名用户访问
guest account=/home/it 指定匿名用户访问共享目录的用户账户
read only=yes 允许以只读方式读取目录
writable=yes 允许以可写的方式更改目录
vaild users=user1,@gourp2 仅有这些用户可以访问共享资源
invalid users=user1 这些用户不能访问共享资源,且此参数优先级高于vaild users的优先级
create mode 设置默认创建文件时的权限
diretory mode 设置默认创建目录时的权限
force group设置默认创建的文件属组
force user 设置默认创建的文件主人
hosts allow 仅有该网段的人可以访问
hosts allow 该网段的人不能访问共享资源

10.7.Linux客户端

Linux中的客户端需要安装samba-common和samba-common的安装包,使用yum一键安装的包里是包括这两个的,在Linux上使用Samba服务主要使用smbclient命令及其子命令。
smbclient -L+ip 直接以匿名用户的身份登录服务器,所以不用输入密码,直接回车就能看到共享目录列表。
smbclient -L +ip -U +username 登录服务器并指明用户,需要输入用户名。
smbclient -n+NetBIOS名称 指定服务器netbios名称
子命令:
allinof 显示文件或目录信息
dir列出当前目录的内容
du计算当前目录大小
exit/quit 退出连接
get 从服务器上下载一个文件
mget从服务器上下载多个文件
mput向服务器上传多个文件
客户端可以将共享目录挂载在本地,命令是:
mount -o username=[samba用户名] //ip/共享目录名 本地挂载点

10.8. windows客户端

win10系统中,打开运行工具(windows键+E),输入命令\ip(ip指服务器ip地址),即可进入

你可能感兴趣的:(Linux服务,samba,Linux服务)