1.什么是samba?
Samba是一种开源软件,它允许不同操作系统的计算机之间共享文件、打印机等资源。它实现了SMB/CIFS协议,从而使Linux、Unix和Windows等操作系统相互连接并共享文件和其他资源。Samba提供了非常方便可靠的文件和打印机共享功能。Samba还支持各种安全访问控制机制,例如域控制器认证等。
Samba实现文件共享功能的原理如下:
1)Samba服务器监听网络上的文件共享请求,并解析这些请求。
2)当接收到文件共享请求时,Samba服务器使用SMB/CIFS协议与客户端计算机协商连接参数,例如用户身份验证。
3)一旦Samba服务器与客户端计算机建立连接,客户端就可以访问Samba服务器上的共享文件和打印机。
4)Samba服务器维护一个共享文件和目录数据库,用于管理共享文件和目录的访问控制和文件名映射。这些映射使得Unix/Linux和Windows客户端之间的文件共享可透明化。
5)当客户端访问共享文件时,Samba服务器会自动将Unix/Linux文件权限转换为Windows文件权限,从而使得Windows客户端能够正确地访问这些文件。
6)在服务器上创建共享文件夹时,可以设置不同的访问权限以及不同的用户组或用户,控制访问共享的文件和文件夹时需要密码认证。
因此,Samba借助SMB/CIFS协议,实现了不同操作系统计算机之间的文件共享功能。
2.什么是SMB?
SMB (Server Message Block) 协议是一种计算机网络通信协议,最初由IBM开发并被广泛应用于Windows系统之间的文件共享和网络通信。它也被称为 CIFS(Common Internet File System),是一个开放的、客户端/服务器协议,用于访问在网络上共享的文件、打印机、串口等资源。
SMB协议提供了在计算机之间共享文件、打印机和其他资源的机制,支持文件访问、文件读写、文件列表等操作。SMB还提供了安全认证机制,通过用户名和密码验证客户端的身份,并控制访问共享资源的权限。
除了Windows系统,SMB协议也被其他操作系统,如Linux、Unix等实现。在Linux环境下,SMB协议的实现通常使用Samba软件。
3.Samba与SMB是什么关系?
SMB(Server Message Block)是一种计算机网络协议,用于在计算机之间共享文件、打印机和其他资源。SMB最初由IBM开发,后来被微软广泛应用于Windows操作系统之间的文件共享和网络通信。
Samba是一个开源软件,旨在实现SMB协议,并将其应用于Linux和Unix等类Unix操作系统与Windows计算机之间的文件共享和网络通信。Samba不仅使得Linux和Unix系统能够与Windows系统之间实现文件共享,也可以作为Windows领域的各种网络资源的集中管理器。
因此,Samba实现了SMB协议,并将其应用于Linux、Unix操作系统与Windows操作系统之间的文件共享和互联,是一种实际应用上的解决方案。
4.为什么要用Samba服务?
Samba服务器是运行Samba软件的计算机,充当其它计算机(包括Windows、Linux等平台的计算机)Samba客户端的文件和打印机共享服务提供者。以下是使用Samba服务器的一些理由:
4.1协同工作
Samba服务器可以为不同的操作系统提供协同工作的功能,包括在Windows和Linux之间共享文件和打印机。这有助于简化不同平台之间的通信和协作,提高生产力和效率。
4.2网络共享
Samba服务器使多个计算机可以同时共享同一个文件或文件夹,这在企业环境中非常有用。在共享文件时,管理员可以控制访问权限网赚项目,以保护公司的机密信息。
4.3集中管理
Samba服务器可以集中管理、监控和维护文件和打印机共享。管理员可以控制访问权限并且能够追踪谁在什么时候访问了共享内容,并对共享信息进行备份和恢复。
4.4节约成本
Samba服务器是免费的开源软件,可以节约企业的成本。如果您在企业中使用多个操作系统,使用Samba服务器可以避免不必要的开销和重复工作。
5.如何安装samba服务?
下面在centos7.8系统下安装samba服务为例进行实战性安装:
5.1安装samba软件
在终端中输入以下命令,检查系统中是否已经安装了Samba软件:
[root@newdocker2 ~]# yum update
[root@newdocker2 ~]# yum install samba samba-client
已加载插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
* base: mirrors.huaweicloud.com
* epel: mirrors.bfsu.edu.cn
* extras: mirrors.ustc.edu.cn
* updates: mirrors.ustc.edu.cn
正在解决依赖关系
There are unfinished transactions remaining. You might consider running yum-complete-transaction, or "yum-complete-transaction --cleanup-only" and "yum history redo last", first to finish them. If those don't work you'll have to try removing/installing packages by hand (maybe package-cleanup can help).
--> 正在检查事务
---> 软件包 samba.x86_64.0.4.10.16-24.el7_9 将被 安装
--> 正在处理依赖关系 samba-libs = 4.10.16-24.el7_9,它被软件包 samba-4.10.16-24.el7_9.x86_64 需要
--> 正在处理依赖关系 samba-common-tools = 4.10.16-24.el7_9,它被软件包 samba-4.10.16-24.el7_9.x86_64 需要
--> 正在处理依赖关系 libxattr-tdb-samba4.so(SAMBA_4.10.16)(64bit),它被软件包 samba-4.10.16-24.el7_9.x86_64 需要
---> 软件包 samba-client.x86_64.0.4.10.16-24.el7_9 将被 安装
--> 正在检查事务
---> 软件包 samba-common-tools.x86_64.0.4.10.16-24.el7_9 将被 安装
---> 软件包 samba-libs.x86_64.0.4.10.4-10.el7 将被 升级
---> 软件包 samba-libs.x86_64.0.4.10.16-24.el7_9 将被 更新
--> 解决依赖关系完成
依赖关系解决
===========================================================================================================
Package 架构 版本 源 大小
===========================================================================================================
正在安装:
samba x86_64 4.10.16-24.el7_9 updates 720 k
samba-client x86_64 4.10.16-24.el7_9 updates 647 k
为依赖而安装:
samba-common-tools x86_64 4.10.16-24.el7_9 updates 468 k
为依赖而更新:
samba-libs x86_64 4.10.16-24.el7_9 updates 272 k
事务概要
===========================================
安装 2 软件包 (+1 依赖软件包)
升级 ( 1 依赖软件包)
总计:2.1 M
总下载量:1.8 M
Is this ok [y/d/N]: y
Downloading packages:
(1/3): samba-4.10.16-24.el7_9.x86_64.rpm | 720 kB 00:00:06
(2/3): samba-client-4.10.16-24.el7_9.x86_64.rpm | 647 kB 00:00:06
(3/3): samba-common-tools-4.10.16-24.el7_9.x86_64.rpm | 468 kB 00:00:00
-------------------------------------------------------------------------
总计 288 kB/s | 1.8 MB 00:00:06
Running transaction check
Running transaction test
…… 5/5
已安装:
samba.x86_64 0:4.10.16-24.el7_9 samba-client.x86_64 0:4.10.16-24.el7_9
作为依赖被安装:
samba-common-tools.x86_64 0:4.10.16-24.el7_9
作为依赖被升级:
samba-libs.x86_64 0:4.10.16-24.el7_9
完毕!
[root@newdocker2 ~]#
5.2创建共享目录
首先,需要创建一个共享目录,用于分享文件。可以在任何地方创建一个目录,例如在当前用户目录下创建samba_share目录:
[root@newdocker2 ~]# mkdir /home/samba_share
[root@newdocker2 ~]#
然后设置共享目录权限,使所有用户均可访问:
[root@newdocker2 ~]# chmod 777 /home/samba_share
[root@newdocker2 ~]#
5.3编辑samba配置文件
打开Samba配置文件 /etc/samba/smb.conf:
在文件最后加上下面内容:
[samba_share]
comment = My Samba Share
path = /home/samba_share
read only = no
browsable = yes
其中连接共享打印机需要用户名和密码怎么设置,[samba_share]是共享文件夹的名称,comment是文件夹的注释,path是文件夹的路径,read only设置文件夹只读与否,browsable设置是否能在“网络”中查看该共享目录。
5.4创建Samba用户
在Samba中,需要创建用户以限制对共享资源的访问。在终端中输入以下命令,创建一个Samba用户,例如:
[root@newdocker2 ~]# useradd mysmb01
[root@newdocker2 ~]# passwd mysmb01
更改用户 mysmb01 的密码 。
新的 密码:111111
无效的密码: 密码是一个回文
重新输入新的 密码:111111
passwd:所有的身份验证令牌已经成功更新。
[root@newdocker2 ~]#
上面先创建了一个系统用户,接着创建samba用户:
[root@newdocker2 ~]# smbpasswd -a mysmb01
New SMB password:111111
Retype new SMB password:111111
Added user mysmb01.
[root@newdocker2 ~]#
注,这里称要创建系统用户,如果不创建,会提示以下错误:
Failed to add entry for user mysmb01.
5.5配置防火墙
Samba默认使用的端口是UDP/137、138和TCP/139。如果有防火墙,需要打开这些端口才能进行文件共享。
[root@newdocker2 ~]# sudo firewall-cmd --zone=public --add-service=samba --permanent
success
[root@newdocker2 ~]# sudo firewall-cmd --reloa
success
[root@newdocker2 ~]#
5.6重启samba服务
这里重启并查看smb服务:
[root@newdocker2 ~]# systemctl restart smb
[root@newdocker2 ~]# systemctl status smb
● smb.service - Samba SMB Daemon
Loaded: loaded (/usr/lib/systemd/system/smb.service; disabled; vendor preset: disabled)
Active: active (running) since 二 2023-04-25 16:24:30 CST; 8s ago
Docs: man:smbd(8)
man:samba(7)
man:smb.conf(5)
Main PID: 15643 (smbd)
Status: "smbd: ready to serve connections..."
Tasks: 4
CGroup: /system.slice/smb.service
├─15643 /usr/sbin/smbd --foreground --no-process-group
├─15646 /usr/sbin/smbd --foreground --no-process-group
├─15647 /usr/sbin/smbd --foreground --no-process-group
└─15648 /usr/sbin/smbd --foreground --no-process-group
4月 25 16:24:30 newdocker2 systemd[1]: Starting Samba SMB Daemon...
4月 25 16:24:30 newdocker2 smbd[15643]: [2023/04/25 16:24:30.907386, 0] ../../lib/util/become_daemon.c:136(daemon_ready)
4月 25 16:24:30 newdocker2 systemd[1]: Started Samba SMB Daemon.
4月 25 16:24:30 newdocker2 smbd[15643]: daemon_ready: daemon 'smbd' finished starting up and ready to serve connections
[root@newdocker2 ~]#
5.7使用Samba访问共享文件夹
现在可以在Windows或其他Linux机器上,使用Samba客户端访问Samba服务器上的共享文件夹。在Windows中,可以打开“文件资源管理器”,在地址栏输入\samba-server-ipsamba share连接共享打印机需要用户名和密码怎么设置,输入刚刚创建的Samba用户的用户名和密码,就可以访问共享文件夹了。
6.windows下访问centos的samba服务
下面以windows10下如何访问CENTOS7.8的samba服务为例:
1)确保Windows 10和CentOS 7.8在同一个局域网内
确保Windows 10和CentOS 7.8都连接到同一个本地网络,通常是Wi-Fi或局域网。在Windows 10中可以通过“设置”-“网络和Internet”-“以太网”或“Wi-Fi”中找到所连接的网络。
2)在Windows 10中打开文件资源管理器
在Windows 10中,打开“文件资源管理器”。
3)输入访问地址
在地址栏中输入Samba服务器的IP地址或主机名。例如,如果CentOS 7.8的IP地址是192.168.0250.239,则输入以下地址:
\192.168.250.239
输入用户名mysmb01和密码验证成功后,进入共享文件夹:
7101
或者,如果CentOS 7.8的主机名是newdocker2,则输入以下地址:
\newdocker2
4)访问共享文件夹
一旦您输入了Samba用户名和密码,就可以访问Samba服务器上的共享文件夹了。应该能够在Windows 10资源管理器中看到共享文件夹,并像在本地计算机上一样访问其中的文件和文件夹。