目录
CIFS的概念
1996年,Microsoft公司提出将服务信息快(SMB)改称为通用互联网文件系统(CIFS)。CIFS使用的公共的或者开放的SMB协议版本。SMB是在会话层和表示层以及小部分应用层上的协议,使用了NetBIOS的应用程序接口API。该协议在局域网上用于服务器文件访问和打印的协议。它使用客户/服务器模式,客户程序请求在服务器上的服务器程序为它提供服务,服务器获得请求并返回响应。
CIFS(Common Internet File System)是一种用于在计算机网络上共享文件和打印机的协议(实现文件共享服务的一种文件系统)。它最初由微软开发,后来被用作通信协议的标准。
CIFS协议允许不同的计算机和操作系统之间共享文件和打印机,并提供文件的读取、写入、删除和重命名等基本操作。它基于客户端-服务器架构,其中客户端计算机可以通过网络访问远程服务器上的资源。CIFS协议通过TCP/IP协议栈进行通信。
CIFS协议提供了许多功能,例如:
- 访问控制:可以通过权限控制来限制用户对文件和文件夹的访问。
- 文件锁定:允许多个用户同时访问文件,但只允许一个用户修改文件。
- 文件和文件夹的元数据:提供文件和文件夹的属性信息,如创建日期、修改日期等。
- 文件和目录的映射:可以将远程共享的文件和文件夹映射到本地计算机上的驱动器或文件夹。
CIFS通常用于局域网(LAN)中的文件共享,但也可以通过Internet进行远程访问。它是许多操作系统和应用程序的标准网络文件系统协议,包括Windows、Linux和macOS。
可以使用许多工具和应用程序来访问CIFS共享,例如Windows资源管理器、Samba(用于Linux系统)等。这些工具允许用户在网络上浏览、访问和管理共享的文件和打印机。主要用于实现Windows系统中的文件共享,在Linux系统中用得比较少。一般,Linux系统中利用CIFS实现文件共享时,需要安装Samba服务。Samba是使Linux支持SMB/CIFS协议的组软件包。Samba服务在Linux和Windows两个平台之间架起一座桥梁,这样就可以在Linux系统和Windows系统之间互相通信。Samba目前已经成为各种Linux发行版本中的一个基本的软件包。Samba可以在几乎所有的类UNIX平台上运行,当然也包括Linux。
Samba的功能
Samba是一个用于在Linux和UNIX系统上实现文件和打印机共享的开源软件。它实现了CIFS(Common Internet File System)协议,并允许Linux/UNIX系统作为CIFS服务器或客户端与Windows系统进行文件共享。
Samba服务所需软件包包括Samba、Samba-cilent、Samba-commom。Samba软件包的组成包括smbd和nmbd两个守护进程。Samba提供了用于SMB/CIFS的4项服务:文件和打印服务、授权与被授权、名字解析、浏览服务,其中前两项服务由smbd守护进程提供,后两项服务则由nmbd守护进程提供,两个进程的启动脚本是独立的。
- smbd进程监听TCP:139(NetBIOS over TCP/IP)和TCP:445(SMBoverTCP/CIFS)端口。
- nmbd进程监听UDP:137(NetBIOS-ns)和UDP:138(N额TBIOS-dgm)端口。
以下是Samba的一些主要功能:
- 文件共享:Samba允许Linux/UNIX系统上的文件夹和文件通过CIFS协议共享给Windows系统。它可以将Linux/UNIX文件系统中的目录映射为Windows网络驱动器上的共享文件夹,使用户能够在Windows操作系统中访问和操作这些文件。
- 打印机共享:Samba可以允许Linux/UNIX系统上的打印机通过CIFS协议共享给Windows系统。这样,Windows用户可以像访问本地打印机一样访问和使用Samba共享的打印机。
- 认证和授权:Samba提供强大的身份验证和访问控制功能,可以与Windows活动目录(Active Directory)集成,使用户可以使用他们的Windows域账户来访问Samba共享。
- 文件和打印机管理:Samba提供了用于管理共享文件夹和打印机的工具和命令。管理员可以设置权限、限制访问、创建用户账户,并监控和管理共享资源的使用情况。
- 安全性:Samba支持加密和身份验证机制,确保数据的安全传输,同时防止未经授权的访问。它还提供了防火墙规则和访问控制列表(ACL)等机制,以进一步加强系统的安全性。
- 高性能和可扩展性:Samba通过使用多线程和异步I/O等技术,提供高性能的文件共享服务。它还支持集群化部署和负载均衡,以实现可扩展的文件共享解决方案。
- 名称解析:Samba通过nmbd进程可以搭建NBNS(NetBIOS Name Service)服务器,提供名称解析,将计算机的NetBIOS名解析为IP地址。
- 浏览服务:局域网中Samba服务器可以成为本地主浏览服务器(LMB),保存可用资源列表,当使用客户端访问Windows网上邻居时,会提供浏览列表,显示共享目录、打印机等资源。
总的来说,Samba为Linux和UNIX系统提供了与Windows系统无缝集成的功能,使它们可以成为强大的文件和打印机共享服务器。它在企业和家庭网络中广泛应用,为用户提供方便和灵活的文件共享体验。
Samba的工作原理
Samba服务强大,这与其通信基于SMB协议有关。SMB不仅提供目录和打印机共享,还支持认证、权限设置。SMB经过开发可以直接运用于TCP/IP上,且没有额外的NBT协议,使用TCP的445端口。可以将运行Samba的Linux主机运行在Windows工作组网络,并提供文件和打印共享服务,也可以将运行Samba的Linux主机加入Windows活动目录并成为其成员,还可以将运行Samba的Linux主机作为活动目录域控制器(ADS),这需要配合Kerberos服务和LDAP服务。
Samba的工作原理:
- 服务启动和初始化:在Linux/UNIX系统上启动Samba服务时,它会读取配置文件(通常是smb.conf),其中包含了共享资源的设置和其他参数。根据配置文件中的信息,Samba会初始化并准备好监听网络连接的服务。
- 接收和处理客户端请求:一旦Samba服务启动并准备好,它会监听指定的网络端口,等待来自客户端的连接请求。当客户端发起连接请求时,Samba服务器会接受连接并建立网络会话。
- 认证和授权:在连接建立后,Samba服务器会执行身份验证和授权过程,以确定客户端的身份和权限。这可以使用多种身份验证机制来实现,包括基于用户名和密码的认证、使用Kerberos票据、或与Windows域进行集成的认证。
- 文件和打印机访问:一旦身份验证成功,客户端可以通过Samba访问共享的文件夹和打印机。Samba服务器会根据客户端请求的文件路径或打印作业的信息,将其映射到相应的本地文件系统或打印机设备上。
- 数据传输和协议转换:当客户端请求读取或写入文件时,Samba服务器会处理数据的传输和协议转换。由于Samba实现了CIFS协议,它可以将客户端的CIFS操作转换为适应本地文件系统的操作,以确保数据的正确读写。
- 安全性和访问控制:Samba服务器会根据配置文件中的设置,对访问进行安全性和访问控制的检查。这包括验证用户的权限、检查文件或文件夹的权限设置,以及应用其他访问控制策略,以确保只有授权用户可以访问共享资源。
- 日志和管理:Samba服务器会记录各种操作和事件的日志,以便管理员进行监控和故障排除。管理员可以使用Samba提供的管理工具和命令,对共享资源进行配置、添加或删除用户帐户,以及监控和管理Samba服务器的运行状态。
总的来说,Samba通过监听网络端口、处理客户端请求、进行身份验证和授权,并与本地文件系统和打印机设备进行交互,实现了在Linux/UNIX系统上与Windows系统进行文件和打印机共享的功能。它提供了安全性、可扩展性和灵活性,使用户可以方便地在不同操作系统之间共享资源。
CIFS(Samba)服务的使用、安装
Linux操作系统的单节点规划准备
部署实施
1、安装Samba服务
用连接工具连接虚拟机,首先修改主机名
[root@localhost ~]# hostnamectl set-hostname samba
[root@localhost ~]# hostnamectl
Static hostname: samba
修改完,重新连接一下终端
安装Samba服务
[root@samba ~]# yum install -y samba
2、配置Samba服务
配置Samba的配置文件/etc/samba/smb.conf
[root@samba ~]# vi /etc/samba/smb.conf
在配置文件最后添加以下内容
[share]
path = /opt/share
browseable = yes
public = yes
writable =yes
配置参数解释:
path = /opt/share:这个路径是将要共享的目录
browseable:操作权限
public:访问权限
writable:对文件的操作权限
创建共享目录并赋予权限
[root@samba ~]# mkdir /opt/share
[root@samba ~]# chmod 777 /opt/share/
启动Samba服务
[root@samba ~]# systemctl restart smb
[root@samba ~]# systemctl enable smb
Created symlink from /etc/systemd/system/multi-user.target.wants/smb.service to /usr/lib/systemd/system/smb.service.
查看端口启动情况
先安装net-tools软件包
[root@samba ~]# yum install -y net-tools
[root@samba ~]# netstat -ntpl
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1056/sshd
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1217/master
tcp 0 0 0.0.0.0:445 0.0.0.0:* LISTEN 9921/smbd
tcp 0 0 0.0.0.0:139 0.0.0.0:* LISTEN 9921/smbd
tcp6 0 0 :::22 :::* LISTEN 1056/sshd
tcp6 0 0 ::1:25 :::* LISTEN 1217/master
tcp6 0 0 :::445 :::* LISTEN 9921/smbd
tcp6 0 0 :::139 :::* LISTEN 9921/smbd
创建Samba用户
创建的这个用户必须是系统存在的用户
[root@samba ~]# smbpasswd -a root
New SMB password: #设置密码
Retype new SMB password: #确认密码
Added user root.
重启Samba服务
[root@samba ~]# service smb restart
Redirecting to /bin/systemctl restart smb.service
或使用
[root@samba ~]# systemctl restart smb
使用Samba服务
在物理机上,使用“win+R”键,并输入Samba服务的IP地址(在使用PC访问Samba服务前,确保我们的Samba服务器的SElinux服务与防火墙都是关闭状态)
先关闭一下服务器的防火墙和SElinux
[root@samba ~]# systemctl stop firewalld
[root@samba ~]# systemctl disable firewalld
Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
[root@samba ~]# setenforce 0
点击确定后,在弹出的界面输入用户名和密码,然后单击右下角“确定”按钮,输入自己刚刚在服务器上创建的用户名和密码
登录后界面
我们可以看到一个root目录一个share目录,Samba会默认共享用户目录,share则是通过配置文件共享目录。
使用Samba服务,可以简单地理解为共享文件服务器,将需要被共享的文件,放入share目录即可,我们可以将Linux中的repo文件,复制到share目录。
试一下效果
[root@samba ~]# cp -rf /etc/yum.repos.d/* /opt/share/
[root@samba ~]# ls /opt/share/
CentOS-Base.repo CentOS-Debuginfo.repo CentOS-Media.repo CentOS-Vault.repo
CentOS-CR.repo CentOS-fasttrack.repo CentOS-Sources.repo CentOS-x86_64-kernel.repo
通过物理机也可以看到,share目录下的文件
后续大家可以尝试一下测试物理机对该目录的权限,是否生效了我们之前的配置。
至此,CIFS(Samba)服务配置完成!