如何在 Ubuntu 18.04 上安装和配置 Samba

2023-10-16

Samba 是一个免费且开源的重新实现SMB/CIFS网络文件共享协议那 允许最终用户访问文件、打印机和其他共享资源。

本教程介绍如何在 Ubuntu 18.04 上安装 Samba 并将其配置为独立服务器,以通过网络在不同操作系统之间提供文件共享。

我们将创建以下 Samba 共享和用户。

Users:

  • sadmin- 对所有共享具有读写访问权限的管理用户。
  • josh- 拥有自己的私人文件共享的普通用户。

Shares:

  • users- 所有用户都可以通过读/写权限访问此共享。
  • josh- 只有用户 josh 和 sadmin 才能通过读/写权限访问此共享。

文件共享可以从网络上的所有设备访问。在本教程的后面部分,我们还将提供有关如何从 Linux、Windows 和 macOS 客户端连接到 Samba 服务器的详细说明。

先决条件#

在继续之前,请确保您已以以下身份登录到 Ubuntu 18.04 系统:具有 sudo 权限的用户 .

在 Ubuntu 上安装 Samba#

Samba 可从官方 Ubuntu 存储库获取。要在 Ubuntu 系统上安装它,请按照以下步骤操作:

  1. 首先更新 apt 软件包索引:

    sudo apt update
  2. 使用以下命令安装 Samba 软件包:

    sudo apt install samba
  3. 安装完成后,Samba服务将自动启动。要检查 Samba 服务器是否正在运行,请键入:

    sudo systemctl status smbd

    输出应如下所示,表明 Samba 服务处于活动状态并正在运行:

    ● smbd.service - Samba SMB Daemon
       Loaded: loaded (/lib/systemd/system/smbd.service; enabled; vendor preset: enabled)
       Active: active (running) since Wed 2019-11-27 09:25:38 UTC; 2min 12s ago
         Docs: man:smbd(8)
               man:samba(7)
               man:smb.conf(5)
     Main PID: 15142 (smbd)
       Status: "smbd: ready to serve connections..."
        Tasks: 4 (limit: 1152)
       CGroup: /system.slice/smbd.service
    ...

至此,Samba 已经安装完毕并可以进行配置了。

配置防火墙#

如果您的 Ubuntu 系统上运行了防火墙,则需要允许端口上的传入 UDP 连接137 and 138和端口上的 TCP 连接139 and 445.

假设您正在使用UFW要管理防火墙,您可以通过启用“Samba”配置文件来打开端口:

sudo ufw allow 'Samba'

配置全局 Samba 选项#

在更改 Samba 配置文件之前,创建备份供将来参考:

sudo cp /etc/samba/smb.conf{,.backup}

Samba 软件包附带的默认配置文件是为独立 Samba 服务器配置的。打开文件并确保server role被设定为standalone server

sudo nano /etc/samba/smb.conf
/etc/samba/smb.conf
...
# Most people will want "standalone sever" or "member server".
# Running as "active directory domain controller" will require first
# running "samba-tool domain provision" to wipe databases and create a
# new domain.
   server role = standalone server
...

默认情况下,Samba 侦听所有接口。如果您想限制仅从内部网络访问 Samba 服务器,请取消注释以下两行并指定要绑定到的接口:

/etc/samba/smb.conf
...
# The specific set of interfaces / networks to bind to
# This can be either the interface name or an IP address/netmask;
# interface names are normally preferred
interfaces = 127.0.0.0/8 eth0

# Only bind to the named interfaces and/or networks; you must use the
# 'interfaces' option above to use this.
# It is recommended that you enable this feature if your Samba machine is
# not protected by a firewall or is a firewall itself.  However, this
# option cannot handle dynamic or non-broadcast interfaces correctly.
bind interfaces only = yes
...

完成后运行testparm检查 Samba 配置文件是否有错误的实用程序。如果没有语法错误,您将看到Loaded services file OK.

最后,使用以下命令重新启动 Samba 服务:

sudo systemctl restart smbdsudo systemctl restart nmbd

创建 Samba 用户和目录结构#

为了更容易维护和灵活性,而不是使用标准主目录(/home/user)所有 Samba 目录和数据都将位于/samba目录。

要创建/samba目录类型:

sudo mkdir /samba

Set the 集团所有权 to sambashare。该组是在 Samba 安装期间创建的,稍后我们会将所有 Samba 用户添加到该组中。

sudo chgrp sambashare /samba

Samba 使用 Linux 用户和组权限系统,但具有独立于标准 Linux 身份验证的自己的身份验证机制。我们将使用标准 Linux 创建用户useradd工具,然后使用以下命令设置用户密码smbpasswd公用事业。

正如我们在简介中提到的,我们将创建一个普通用户该帐户将有权访问其私有文件共享以及一个对 Samba 服务器上的所有共享具有读写权限的管理帐户。

创建 Samba 用户#

创建一个名为的新用户josh使用以下命令:

sudo useradd -M -d /samba/josh -s /usr/sbin/nologin -G sambashare josh

The useradd选项含义如下:

  • -M-不创建用户的主目录。我们将手动创建此目录。
  • -d /samba/josh- 将用户的主目录设置为/samba/josh.
  • -s /usr/sbin/nologin- 禁用该用户的 shell 访问。
  • -G sambashare- 将用户添加到sambashare group.

创建用户的主目录并将目录所有权设置为用户josh和组sambashare:

sudo mkdir /samba/joshsudo chown josh:sambashare /samba/josh

以下命令将 setgid 位添加到/samba/josh目录,因此该目录中新创建的文件将继承父目录的组。这样,无论哪个用户创建新文件,该文件的组所有者都是sambashare。例如,如果您没有将目录的权限设置为2770sadmin用户创建一个新文件josh将无法读取/写入该文件。

sudo chmod 2770 /samba/josh

Add the josh通过设置用户密码来访问 Samba 数据库的用户帐户:

sudo smbpasswd -a josh

系统将提示您输入并确认用户密码。

New SMB password:
Retype new SMB password:
Added user josh.

设置密码以启用 Samba 帐户后,运行:

sudo smbpasswd -e josh
Enabled user josh.

要创建另一个用户,请重复与创建用户时相同的过程josh.

接下来,我们创建用户和组sadmin。该组的所有成员都将拥有管理权限。稍后,如果您想简单地向其他用户授予管理权限将该用户添加到 sadmin 组 .

通过键入以下内容创建管理用户:

sudo useradd -M -d /samba/users -s /usr/sbin/nologin -G sambashare sadmin

上面的命令还将创建一个组sadmin并将用户添加到两者sadmin and sambashare groups.

设置密码并启用用户:

sudo smbpasswd -a sadminsudo smbpasswd -e sadmin

接下来,创建Users共享目录:

sudo mkdir /samba/users

设置目录所有权给用户sadmin和组sambashare:

sudo chown sadmin:sambashare /samba/users

所有经过身份验证的用户都可以访问此目录。下列chmod命令授予对成员的写/读访问权限sambashare组在/samba/users目录:

sudo chmod 2770 /samba/users

配置 Samba 共享#

打开 Samba 配置文件并附加以下部分:

sudo nano /etc/samba/smb.conf
/etc/samba/smb.conf
[users]
    path = /samba/users
    browseable = yes
    read only = no
    force create mode = 0660
    force directory mode = 2770
    valid users = @sambashare @sadmin

[josh]
    path = /samba/josh
    browseable = no
    read only = no
    force create mode = 0660
    force directory mode = 2770
    valid users = josh @sadmin

选项含义如下:

  • [users] and [josh]- 您登录时将使用的共享名称。
  • path- 共享的路径。
  • browseable- 股票是否应列在可用股票列表中。通过设置为no其他用户将无法看到该共享。
  • read only- 是否指定的用户valid users列表能够写入此共享。
  • force create mode- 设置此共享中新创建的文件的权限。
  • force directory mode- 设置此共享中新创建的目录的权限。
  • valid users- 允许访问共享的用户和组的列表。组的前缀为@ symbol.

有关可用选项的更多信息,请参阅桑巴配置文件文档页面。

完成后,使用以下命令重新启动 Samba 服务:

sudo systemctl restart smbdsudo systemctl restart nmbd

在以下部分中,我们将向您展示如何从 Linux、macOS 和 Windows 客户端连接到 Samba 共享。

从 Linux 连接到 Samba 共享#

Linux 用户可以使用文件管理器从命令行访问 samba 共享或挂载 Samba 共享。

使用 smbclient 客户端#

smbclient是一个允许您从命令行访问 Samba 的工具。这smbclient大多数 Linux 发行版上都没有预安装该软件包,因此您需要使用发行版软件包管理器来安装它。

安装smbclient在 Ubuntu 和 Debian 上运行:

sudo apt install smbclient

安装smbclient在 CentOS 和 Fedora 上运行:

sudo yum install samba-client

访问Samba共享的语法如下:

mbclient //samba_hostname_or_server_ip/share_name -U username

例如连接到名为josh在具有 IP 地址的 Samba 服务器上192.168.121.118作为用户josh你会运行:

smbclient //192.168.121.118/josh -U josh

系统将提示您输入用户密码。

Enter WORKGROUP\josh's password: 

输入密码后,您将登录到 Samba 命令行界面。

Try "help" to get a list of possible commands.
smb: \>

挂载 Samba 共享#

To mountLinux 上的 Samba 共享首先需要安装cifs-utils包裹。

在 Ubuntu 和 Debian 上运行:

sudo apt install cifs-utils

在 CentOS 和 Fedora 上运行:

sudo yum install cifs-utils

接下来,创建一个挂载点:

sudo mkdir /mnt/smbmount

使用以下命令挂载共享:

sudo mount -t cifs -o username=username //samba_hostname_or_server_ip/sharename /mnt/smbmount

例如挂载名为josh在具有 IP 地址的 Samba 服务器上192.168.121.118作为用户josh to the /mnt/smbmount您将运行的挂载点:

sudo mount -t cifs -o username=josh //192.168.121.118/josh /mnt/smbmount

系统将提示您输入用户密码。

Password for josh@//192.168.121.118/josh:  ********

使用图形用户界面#

文件,Gnome 中的默认文件管理器具有访问 Samba 共享的内置选项。

  1. 打开文件并单击侧栏中的“其他位置”。
  2. 在“连接到服务器”中,按以下格式输入Samba共享的地址smb://samba_hostname_or_server_ip/sharename.
  3. Click “Connect” and the following screen will appear:
  4. 选择“注册用户”,输入Samba用户名和密码,然后单击“连接”。
  5. The files on the Samba server will be shown.

从 macOS 连接到 Samba 共享#

在 macOS 中,您可以从命令行或使用默认的 macOS 文件管理器 Finder 访问 Samba 共享。以下步骤显示如何使用 Finder 访问共享。

  1. 打开“Finder”,选择“前往”并单击“连接到”。
  2. In “Connect To”, enter the address of the Samba share in the following format smb://samba_hostname_or_server_ip/sharename.
  3. Click “Connect” and the following screen will appear:
  4. 选择“注册用户”,输入Samba用户名和密码,然后单击“连接”。
  5. The files on the Samba server will be shown.

从 Windows 连接到 Samba 共享#

Windows 用户还可以选择从命令行和 GUI 连接到 Samba 共享。以下步骤显示如何使用 Windows 文件资源管理器访问共享。

  1. 打开文件资源管理器,然后在左侧窗格中右键单击“此电脑”。
  2. 选择“选择自定义网络位置”,然后单击“下一步”。
  3. In “Internet or network address”, enter the address of the Samba share in the following format \\samba_hostname_or_server_ip\sharename.
  4. Click “Next” and you will be prompted to enter the login credentials as shown below:
  5. In the next window you can type a custom name for the network location. The default one will be picked up by the Samba server.
  6. 单击“下一步”移至连接设置向导的最后一个屏幕。
  7. Click “Finish” and the files on the Samba server will be shown.

结论#

在本教程中,您学习了如何在 Ubuntu 18.04 上安装 Samba 服务器并创建不同类型的共享和用户。我们还向您展示了如何从 Linux、macOS 和 Windows 设备连接到 Samba 服务器。

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

如何在 Ubuntu 18.04 上安装和配置 Samba 的相关文章

随机推荐

  • 如何通过 PPA 在 Debian 9/8 上安装 Java 9

    如何在 Debian 9 8 上安装 Java 9 Oracle Java 9 是可供安装的最新稳定版本 第一个 Oracle Java 9 稳定版本于 2017 年 9 月 21 日发布 本教程将帮助您在 Debian Linux 上安装
  • 如何在 Debian 10 上安装和配置 Ansible

    Ansible 是一款免费且易于使用的自动化工具 用于从单台计算机管理多个远程主机 它为您提供了针对大量远程主机的轻松配置 例如 您在多台机器上执行相同的任务 Ansible 为您提供了自动执行这些任务的选项 Ansible 是 Chef
  • Git 提示:签出远程分支

    Git 是一种流行的分布式版本控制系统 广泛用于软件开发和其他协作项目 Git 的主要功能之一是它能够使用远程存储库 允许您共享代码并与其他人就您的项目进行协作 在本文中 我们将讨论如何在 Git 中列出和签出远程分支 1 列出远程分支 要
  • 如何删除 CloudFront 缓存

    CloudFront 是 Amazon Web Services 提供的一项流行的缓存和内容交付网络服务 它通过其全球数据中心向用户提供数据 CloudFront 还在其服务器上创建本地内容缓存 进一步用于快速满足用户请求 失效允许我们在对
  • 通过 SQL 或 phpMyAdmin 重置 SugarCRM 管理员密码

    问题 如何通过 SQL 查询重置 SugarCRM 管理员密码 如何使用 phpMyAdmin 重置 SugarCRM 管理员密码 如何使用 SQL 查询重置 SugarCRM 忘记的密码 如何找到 SugarCRM 默认管理员密码 如果您
  • 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 并将其配置为独立服务器 以通过网络在不同操作系统之间提供文