掌握 Samba:创建强大的 Linux 文件服务器

2023-10-17

Linux 文件服务器是功能强大的服务器之一,可帮助您与基于 Windows 的 PC 和其他操作系统共享文件和打印机。在我们讨论使用 Samba 作为文件服务器之前,我们先讨论一些基础知识。

 

 

Linux/Samba/Windows 关系

要了解 Linux/Samba/Windows 的关系,您需要了解操作系统、用户和网络的关系。

Linux登录系统与Windows登录系统不同。

因此,维护不同平台之间的登录是系统管理员的工作。

有几种解决方案可以做到这一点:

  • Linux 可插拔身份验证模块 (PAMs):有两个用户列表,一个本地列表,一个域控制器(DC)上的列表,用户仅需要在Windows系统上维护密码。
  • Samba 作为 DC:您在Linux系统上维护用户名和密码,用户可以使用Samba登录Windows机器
  • 自定义脚本:您可以创建用于维护登录名和密码的脚本;这可以使用跨平台脚本语言(如 Python)来完成。

samba服务器由几个组件和守护进程组成;三个主要守护进程是smbd, nmbd, and winbindd.

  • The smbd 守护进程是共享文件和打印机的主要服务。该守护进程使用端口139 or 445监听请求。
  • The nmbd 守护进程处理 NetBIOS 名称服务请求。该守护进程使用端口137监听请求。
  • The 温宾德从 Windows 获取用户和组信息。

 

安装桑巴

要安装Linux文件服务器,您需要安装三个软件包。

对于基于 Red Hat 的发行版,您可以像这样安装它们:


$ dnf -y install samba  

此软件包安装 SMB 服务器。


$ dnf -y install samba-common-tools  

该包包含服务器和客户端所需的文件。


$ dnf -y install samba-client  

对于基于 Debian 的发行版,您可以像这样安装它们:


$ apt-get -y install samba

$ apt-get -y install samba-common-tools

$ apt-get -y install samba-client  

然后您可以启动 samba 服务并在启动时启用它:


$ systemctl start smb

$ systemctl enable smb  

 

Samba 文件共享

当然,您可以使用基于 Web 或 GUI 实用程序来管理 Linux 文件服务器。然而,了解 GUI 或 Web 工具在背后正在做什么是很有用的。

现在我们将共享一个名为 myfolder 的文件夹:


$ chmod -R 755 myfolder  

打开Samba配置文件


/etc/samba/smb.conf  

并在末尾添加以下行:


[likegeeks]
path=/home/likegeeks/Desktop/myfolder
public=yes
writable=no
guest ok=yes  

第一行是客户端看到的 Samba 服务器名称。

第二行是将共享的文件夹的路径。

第三行表示共享将可供所有用户(例如访客帐户和其他用户)使用。如果设置为 no,则仅允许经过身份验证和许可的用户。

第四行表示您无法创建或修改共享文件夹上存储的文件。

您可以使用 testparm 命令检查 SMB 配置错误:


$ testparm  

现在重新启动 SMB 服务:


$ systemctl restart smb  

 

访问 Samba 共享文件

现在我们需要访问我们共享的内容。我们可以使用中小企业客户访问 Windows 共享文件的实用程序。

我们可以这样列出共享文件:


$ smbclient -L localhost -U%  

这里的 -U% 选项可以避免询问密码。

如您所见,我们的共享文件夹在列表中。

您只需在 Windows 资源管理器中输入 IP 地址即可从 Windows 访问此共享文件夹。


\\192.168.1.3\  

您可以使用 smbclient 工具列出特定目录,如下所示:


$ smbclient -U% //192.168.1.2/My_Folder  

连接后,您可以使用 Linux 命令列出文件并在文件之间移动。

您可以使用以下方式传输文件get, put, mget, and mput 命令。

如果您正在使用iptables防火墙,不要忘记允许端口 137,139 和 445。

 

安装 Samba 共享

大多数 Linux 内核都支持 SMB 文件系统。

要挂载 Samba 共享,首先创建挂载点:


$ mkdir /mnt/smb  

然后我们挂载SMB共享文件夹:


$ mount -t cifs -o guest //192.168.1.2/My_Folder /mnt/smb  

如果共享文件夹受密码保护,则输入用户名和密码:


$ mount -t cifs username=likegeeks,password=mypassword //192.168.1.2/My_Folder  

要卸载 SMB 共享文件夹,请使用如下卸载命令:


$ umount /mnt/smb  

在基于 Debian 的发行版上,您可能需要安装 cifsutils 软件包才能使用它:


$ apt-get -y install cifs-utils  

 

创建 Samba 用户

要为现有系统用户创建 samba 条目,请使用 pdbedit 命令:


$ pdbedit -a likegeeks  

新用户将在 Samba 默认用户数据库中创建,该数据库为


/var/lib/samba/private/passdb.tdb  

file.

创建 Samba 用户后,我们可以将共享仅提供给经过身份验证的用户(例如 likegeeks 用户)。

该用户可以使用 smbclient 访问 Samba 服务器上的资源,如下所示:


$ smbclient -U likegeeks -L //192.168.1.3  

您可以使用 smbpasswd 命令更改 SMB 密码,如下所示:


$ smbpasswd likegeeks  

 

使用 Windows 服务器验证用户身份

您可以使用 winbindd 守护程序从本机 Windows 服务器解析用户帐户信息。

首先,安装 winbind 软件包。


$ dnf -y install samba-winbind  

然后像这样启动服务:


$ systemctl start winbind  

之后,在此文件中添加以下选项:


/etc/samba/smb.conf  

workgroup = windows-domain
password server = 192.1638.1.5
realm = windows-domain.com
kerberos method = secrets and keytab
winbind use default domain = yes
winbind enum users = yes
winbind enum groups = yes
winbind refresh tickets = yes
winbind normalize names = yes
winbind nss info = rfc2307
domain master = no
local master = no  

然后编辑 /etc/nsswitch.conf 文件并修改以下行:


passwd: files winbind
shadow: files winbind
group: files winbind  

然后编辑 /etc/resolv.conf 文件并更改主 DNS 服务器:


Search windows-domain.com
nameserver 192.168.1.5  

现在使用 net 命令从 Windows 域加入 Linux Samba 服务器:


$ net join -w WINDOWS-DOMAIN -s ' win-server' -U Administrator%password  

您可以使用 wbinfo 命令列出 Windows 域中的用户


$ wbinfo -u  

对于任何问题诊断,您可以检查下面的 samba 日志文件


/var/log/samba/  

目录,修改 samba 配置文件后还可以使用 testparm 实用程序检查您的配置。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

掌握 Samba:创建强大的 Linux 文件服务器 的相关文章

  • MySQL 数据库备份 RPM

    几个月前我创建了这个 rpm 现在它可供所有用户使用 这个 rpm 有一个简单的 shell 脚本用于 mysql 数据库备份 特征 在本地进行数据库备份 将备份上传到 ftp 服务器 备份完成后发送电子邮件警报 安装 直接使用命令行或使用
  • JavaScript 中删除字符串最后一个字符的 2 种方法

    问题 如何从 JavaScript 或 Node js 脚本中的字符串中删除最后一个字符 本教程介绍了使用 JavaScript 编程语言从字符串中删除最后一个字符的 2 种方法 您可以根据需要使用以下任意一种方法 方法 1 使用 subs

随机推荐

  • 如何在 Ubuntu 22.04 上安装 Docker

    Docker 通过启用轻量级容器化技术彻底改变了开发人员创建 部署和管理应用程序的方式 该技术允许轻松管理和隔离应用程序及其依赖项 在本教程中 我们将指导您完成在 Ubuntu 22 04 上安装 Docker 的过程 Ubuntu 22
  • 在 cPanel 帐户中启用 Apache Gzip 压缩 (mod_deflate)

    Apache mod deflate模块用于在向客户端提供服务之前压缩内容 仅当您的托管提供商在 Apache 中启用了 mod deflate 模块时 您才可以配置压缩 WHM 管理员可以全局启用 Gzip对于所有使用 WHM 控制面板的
  • 适用于不同用例的十大 Linux 发行版

    Linux 是一种开源操作系统 可以根据用户的需求和偏好为用户提供多种选择 Linux 的优点在于它是高度可定制的 这意味着用户可以调整操作系统以满足他们的特定要求 然而 由于有如此多的 Linux 发行版可供选择 因此决定选择哪一个可能会
  • Apache 中的平滑重启是什么

    Apache HTTP Server 通常称为 Apache 是一种非常流行的开源 Web 服务器软件 在 Web 内容的交付中发挥着重要作用 Apache 非常灵活 允许使用多种关键功能和配置来帮助优化其性能 其中一项重要功能是 平滑重启
  • 如何在 Linux 中使用“find”命令删除 X 天之前修改的文件

    The find Linux 中的命令是一个功能强大的工具 可用于根据各种条件 例如名称 类型 大小和时间戳 搜索文件 查找 命令的一个常见用例是删除超过一定天数的文件 这对于清理旧备份 日志文件或不再需要的其他类型的文件非常有用 在本文中
  • 如何在 CentOS 8 上安装 Anaconda

    Anaconda 是最流行的 Python R 数据科学和机器学习平台 它用于大规模数据处理 预测分析和科学计算 Anaconda 发行版附带 1 500 多个开源数据包 它还包括conda命令行工具和称为 Anaconda Navigat
  • 如何在 Ubuntu 18.04 上安装 Magento 2

    Magento是基于开源技术构建的领先企业级电子商务平台 将强大的功能与灵活性和用户友好的界面相结合 凭借引人入胜的购物体验 灵活的模块化架构以及企业级可扩展性和性能等功能 Magento 是大多数在线商家的首选平台 在本教程中 我们将向您
  • 如何在 Ubuntu 20.04 上安装 Skype

    Skype是世界上最流行的通信应用程序之一 它是跨平台的 可在 Windows Linux 和 macOS 上使用 通过 Skype 您可以免费进行在线音频和视频通话 以及拨打世界各地的手机和固定电话的国际电话 Skype 不是开源应用程序
  • 如何使用 .htaccess 强制使用 HTTPS

    如果您为域安装了 SSL 证书 则下一步应该是将应用程序配置为通过 HTTPS 提供所有 Web 流量 与以明文形式发送和返回请求和响应的 HTTP 不同 HTTPS 使用 TLS SSL 来加密客户端和服务器之间的通信 相对于 HTTP
  • 如何在 CentOS 8 上安装和配置 NFS 服务器

    网络文件系统 NFS 是一种分布式文件系统协议 允许您通过网络共享远程目录 使用 NFS 您可以在系统上挂载远程目录并像使用本地文件一样使用远程计算机上的文件 NFS 协议默认不加密 并且与 Samba 不同 它不提供用户身份验证 对服务器
  • 如何检查 Bash 中文件或目录是否存在

    很多时候 在编写 Shell 脚本时 您可能会发现自己处于需要根据文件是否存在来执行操作的情况 在Bash中 可以使用test命令来检查文件是否存在并判断文件的类型 测试命令采用以下语法形式之一 test EXPRESSION EXPRES
  • 如何在 Python 中分割字符串

    使用字符串时 日常操作之一是使用给定的分隔符将字符串拆分为子字符串数组 在这篇文章中 我们将讨论如何在Python中分割字符串 split 方法 在Python中 字符串被表示为不可变的str对象 这str类附带了许多字符串方法 允许您操作
  • 如何在 Ubuntu 18.04 上安装和配置 Samba

    Samba 是一个免费且开源的重新实现SMB CIFS网络文件共享协议那 允许最终用户访问文件 打印机和其他共享资源 本教程介绍如何在 Ubuntu 18 04 上安装 Samba 并将其配置为独立服务器 以通过网络在不同操作系统之间提供文
  • 如何在 CentOS 7 上安装和使用 Docker Compose

    Docker 组合是一个允许您定义和运行多容器 Docker 应用程序的工具 使用 Compose 您可以在单个 YAML 文件中定义应用程序的服务 网络和卷 然后使用单个命令启动您的应用程序 Compose 可用于不同的目的 例如单主机应
  • 在 Debian 9 上使用 Let's Encrypt 保护 Nginx

    Let s Encrypt 是由互联网安全研究小组 ISRG 开发的免费开放的证书颁发机构 如今 Let s Encrypt 颁发的证书几乎受到所有浏览器的信任 在本教程中 我们将解释如何使用 Certbot 工具为 Debian 9 上的
  • 如何在 Ubuntu 18.04 上安装和配置 GitLab

    GitLab 是一个基于网络的开源Git存储库管理器编写为Ruby包括 wiki 问题管理 代码审查 监控以及持续集成和部署 它使开发人员能够创建 审查和部署他们的项目 GitLab 提供三种不同版本 社区版 CE 企业版 EE 和 Git
  • 如何在 Ubuntu 18.04 上安装 Steam

    Steam是由 Valve 公司开发的用于购买和玩视频游戏的跨平台娱乐平台 它使您可以访问数千种游戏并结识新朋友 在本教程中 我们将向您展示如何在 Ubuntu 18 04 上安装 Steam 相同的说明适用于 Ubuntu 16 04 和
  • Python 中的列表与元组:综合指南

    Python 提供了多种内置数据类型 其中两个是列表和元组 了解这些数据结构的细微差别对于编写高效且有效的 Python 代码至关重要 在本教程结束时 您将能够就何时使用列表以及何时选择元组做出明智的决定 从而提高您在 Python 中处理
  • 使用 to_pickle() 函数将 Pandas DataFrame 导出到 Pickle 文件

    The to pickle函数于Pandas允许您将 DataFrame 或 Series 对象序列化 pickle 为 pickle 文件格式 当您想要保存 DataFrame 或 Series 的当前状态并稍后检索它而不丢失任何数据或元
  • 掌握 Samba:创建强大的 Linux 文件服务器

    Linux 文件服务器是功能强大的服务器之一 可帮助您与基于 Windows 的 PC 和其他操作系统共享文件和打印机 在我们讨论使用 Samba 作为文件服务器之前 我们先讨论一些基础知识 目录 hide 1 Linux Samba Wi