Linux Samba部署宝典:轻松搭建,高效管理

这篇博客可以帮助你快速了解如何在你的设备上部署 Samba,实现跨平台的资源管理,部署Samba的目的是在我的windows端可以轻松管理存放在本地NAS(Network Attached Storage)中的资料。

1. 引言

Samba 是什么

Samba 是一个开源软件,它实现了在 Linux 和 UNIX 系统上的 Server Message Block (SMB) 协议,这是一种用于在局域网内共享文件和打印机的通信协议。Samba 允许这些系统与 Windows 系统进行无缝集成,实现跨平台的文件和打印服务共享。

Samba 的重要性

  1. 跨平台兼容性:Samba 提供了不同操作系统之间的互操作性,特别是 Windows 和 Linux/UNIX 系统,使得在这些系统之间共享资源变得简单。这也是你可能需要在你的系统上部署 Samba的最重要的原因。
  2. 灵活性和可配置性:Samba 提供了丰富的配置选项,允许管理员根据需要定制共享设置,包括权限控制、安全设置等。
  3. 安全性:Samba 支持多种安全特性,包括加密通信和集成 Windows 域的认证机制,确保共享数据的安全性。
  4. 易于部署和维护:Samba 的安装和配置过程相对简单,且有大量的文档和教程可供参考,便于快速部署和维护。

2. 环境准备

部署 Samba 的操作系统和版本要求通常比较宽松,因为 Samba 是一个跨平台的软件,可以在多种操作系统上运行。以下是常见的操作系统和它们的一般要求:

  • Linux:几乎所有现代的 Linux 发行版都可以安装和运行 Samba。这包括但不限于:
    • Ubuntu(所有版本)
    • Debian(所有版本)
    • CentOS(所有版本,包括 CentOS Stream)
    • Fedora(所有版本)
    • openSUSE(所有版本)
    • Arch Linux(所有版本)
    • RHEL(包括其克隆版本如 CentOS)
  • Windows:虽然 Samba 主要是为 Linux 和 Unix 系统设计的,但 Windows 系统也可以安装 Samba 客户端来访问 Samba 服务器。对于 Windows,支持的版本包括:
    • Windows 10
    • Windows 11
    • Windows Server 2016/2019/2022

本博客使用的操作系统:Utuntu、Windows 11

3. 部署的操作流程

要在本地(Windows)和服务器(Linux)之间使用 Samba 进行文件传输,你需要按照以下步骤进行:

安装 Samba

在服务器上,你需要首先安装 Samba。在 Ubuntu 系统上,你可以使用sudo apt-get install samba 命令来安装。

检查是否安装成功

  • 检查 Samba 版本
    在终端中输入 smbd --version,如果 Samba 已经成功安装,这个命令会显示出 Samba 的版本号。
  • 检查 Samba 服务状态
    在终端中输入service smbd status。如果 Samba 已经成功安装并正在运行,这个命令会显示出 Samba 服务的状态。

配置 Samba

安装完成后,你需要编辑/etc/samba/smb.conf文件来配置你的 Samba 服务器。在这个文件中,你可以指定你想要共享的文件夹,以及谁可以访问这个文件夹。

  1. 打开 Samba 配置文件:
    在你的终端中输入 sudo nano /etc/samba/smb.conf 来打开 Samba 的配置文件。

  2. 配置全局设置:
    Samba 提供了很多其他的配置选项,应该根据具体需求来修改这些设置。如果需要详细的信息,建议查看 Samba 的官方文档
    下图红色框中是我配置的全局设置:
    在这里插入图片描述
    以下是上图中每个参数的详细解释:

    workgroup = MYWORKGROUP 定义了 Samba 服务器将要加入的工作组名称。工作组是 Windows 网络中的一个逻辑组,用于组织网络上的资源。在这里,Samba 服务器将加入名为 MYWORKGROUP 的工作组。
    security = user 定义了 Samba 服务器的安全级别。user 级别要求客户端在访问共享时提供有效的用户名和密码。其他选项还包括 share(每个共享需要密码)、domain(用于加入 Windows 域)等。
    passdb backend = tdbsam 指定了 Samba 用于存储用户凭据的后端服务。tdbsam 是 Samba 自带的基于文件的用户数据库。
    printing = cups 定义了 Samba 服务器使用的打印系统。这里设置为 cups,即通用 Unix 打印系统。
    printcap name = cups 指定了打印服务使用的打印能力数据库的名称。这里与 printing 参数一致,设置为 cups
    Load printers=yes 控制 Samba 是否自动加载打印机定义。设置为 yes 表示 Samba 将自动加载打印机定义,使得打印机可以被网络用户访问。
    cups options = raw 提供了对 CUPS 打印系统配置的额外选项。raw 表示以原始模式发送打印数据,不进行任何转换。
    map to guest = bad user 定义了当用户无法验证时 Samba 应如何映射该用户。bad user 表示如果用户无法验证,他们将被映射为没有访问权限的访客。
    guest ok = yes 如果设置为 yes,它允许访客访问共享。

创建共享目录

可以在配置文件的底部添加一个新的部分来设置共享目录。下图红色框是我创建的共享目录:
在这里插入图片描述

以下是上图中每个参数的详细解释:
[NAS_2T]这是共享的名称,客户端将看到这个名称来访问共享。
path = /mnt/sdb1 定义共享目录的绝对路径。在这个例子中,是 /mnt/sdb1 目录。
available = yes 表示这个共享是可用的。如果设置为 no,共享将不可见且无法访问。
valid users = yulin 指定允许访问此共享的有效用户列表。这里只有用户 yulin 可以访问。
browseable = yes 表示这个共享将在网络上可见,可以被浏览。如果设置为 no,共享不会出现在网络浏览列表中。
public = yes 如果设置为 yes,任何用户都可以访问共享而不需要提供凭据。
writable = yes 表示共享目录是可写的,用户可以修改文件或添加新文件。
read only = no 表示共享目录不是只读的。

保存并关闭配置文件

【nano编辑器】 保存文件:Ctrl + O;退出编辑器:Ctrl + X

测试你的共享是否可以正常工作

如果想测试你的共享是否可以正常工作,你可以在你的终端中使用 smbclient 命令来连接到你的共享,如下所示:smbclient //localhost/share -U yulin

这个命令列出了我的 Samba 服务器上所有可用的共享,包括 print$shareIPC$。其中,share(NAS_2T) 是我创建的共享,print$ 和 IPC$ 是 Samba 服务器默认创建的共享。

如下图所示我的 Samba 服务器已经成功配置了一个名为 NAS_2T 的共享:
在这里插入图片描述

用户和权限管理

上面的演示是只有用户 yulin 可以访问。如果你想有多个用户可以访问共享文件夹,你可以创建一个用户组用来管理这个目录的管理权限。下面演示了如何创建Samba用户、查看Samba用户、创建一个用户组用来管理共享目录的管理权限。

创建 Samba 用户

使用 sudo smbpasswd -a username 命令创建一个新的 Samba 用户。你需要为这个用户设置一个密码。
在这里插入图片描述

查看 Samba 用户

可以使用 pdbedit 命令来查看 Samba 用户。在终端中输入 sudo pdbedit -L,这将会列出所有的 Samba 用户。
在这里插入图片描述

创建一个用户组用来管理共享目录的管理权限

创建一个新的用户组

你可以使用 groupadd 命令创建一个新的用户组。例如,如果你想创建一个名为NAS_2T的新组,在终端中输入sudo groupadd NAS_2T

向用户组添加用户

你可以使用 usermod 命令将用户添加到用户组。例如,如果你想将用户bobby、yulin、jerry添加到NAS_2T组,在终端中输入
sudo usermod -a -G newgroup bobbysudo usermod -a -G newgroup yulinsudo usermod -a -G NAS_2T jerry

使用 getent 命令可以查看NAS_2T组的所有成员,确保向用户组添加用户这一步骤成功完成。在终端中输入getent group NAS_2T,如下图所示可以看到用户已经被成功添加进用户组中:
在这里插入图片描述

更改用户组的所有权
  1. 更改所有权
    sudo chown :NAS_2T /mnt/sdb1
    这个命令使用chown(改变所有权)来更改指定路径/mnt/sdb1的组所有权。这里的:NAS_2T表示将组所有权更改为NAS_2T。注意,这个命令中没有指定用户所有权,只更改了组所有权。在Linux中,文件和目录所有权通常由两部分组成:用户所有权和组所有权。

  2. 更改权限
    sudo chmod 770 /mnt/sdb1
    这个命令使用chmod(改变模式)来设置/mnt/sdb1的访问权限。权限数字770定义了文件或目录的访问权限,具体含义如下:

    • 第一个数字7代表文件所有者的权限。数字7是由4(读权限)+2(写权限)+1(执行权限)组成,表示所有者拥有读、写和执行这三种权限。
    • 第二个数字7代表与文件所有者同一用户组的用户的权限,同样地,数字7表示组内用户拥有读、写和执行权限。
    • 第三个数字0代表其他用户的权限。数字0表示其他用户没有任何权限。
  3. 检查访问权限是否更改成功
    ls -Ld /mnt/sdb1
    在这里插入图片描述
    这张图显示了在Linux终端执行了ls -Ld /mnt/sdb1命令后的结果。下面是对这个输出结果的解释:

    • drwxrwx---:这是文件/mnt/sdb1的权限设置。权限由10个字符组成:
      • 第一个字符d表示这是一个目录。
      • 接下来的三组字符rwx分别代表所有者(owner)、所属组(group)和其他用户(others)的权限。这里的rwx表示所有者有读(r)、写(w)和执行(x)权限。
      • 最后的三个---表示其他用户没有任何权限。
    • 7:这个数字表示有多少个硬链接指向这个目录。
    • bobby:这是文件所有者的用户名。
    • NAS_2T:这是文件所属的组名。
    • 4096:这是目录的块大小,通常为4KB。
    • Apr 19 06:47:这是目录最后修改的日期和时间。
    • /mnt/sdb1:这是文件的路径。

测试 Samba 共享

接下来介绍如何从本地(Windows)访问 Samba 共享。需要使用Windows中映射网络驱动器的文件夹:

  1. 右键点击“此电脑”选项,点击“映射网络驱动器”,在弹出的“映射网络驱动器”窗口中,选择一个驱动器字母。
  2. 在“文件夹”输入框中,输入网络文件夹的路径。路径通常以\开头,后面跟着网络计算机的名称或IP地址,再加上共享文件夹的名称。以我的配置为例:\\192.168.31.25\NAS_2T
    在这里插入图片描述
  3. 需要输入之前创建的 Samba 用户的密码。
在这里插入图片描述 4. 完成上述步骤后,你就应该可以在 Windows 的我的电脑或者文件资源管理器中看到新的网络驱动器 了。你可以像使用本地驱动器一样使用这个网络驱动器来访问你的 Samba 服务器上的文件。 ![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/2360aa8588dd4447aa7cdfb755a775c2.png#pic_center)

重启 Samba 服务

使用 sudo service smbd restart 命令来重启 Samba 服务。

9. 结论

通过以上教程你就可以轻松部署Samba啦!方便在windows端可以轻松管理存放在本地NAS(Network Attached Storage)中的资料!如果对上述过程有疑问欢迎在评论区或者私信留言!

10. 可能遇到的问题

无法在 Windows 中连接到你的 Samba 共享

如果你无法在 Windows 中连接到你的 Samba 共享,你可以尝试以下步骤来检查和排查问题:

  1. 检查 Samba 服务是否在运行: 在你的 Linux 服务器上,运行 sudo service smbd status 命令来检查 Samba 服务的状态。如果服务没有运行,你可以使用 sudo service smbd start 命令来启动服务。
  2. 检查 Samba 配置文件: 使用 sudo nano /etc/samba/smb.conf 命令来查看你的 Samba 配置文件。确保 share 共享的配置是正确的,包括共享的路径、用户权限等。

连接上了windows和服务器的映射,但是window这边提示没有访问权限

可以使用ls -ld /mnt/sdb1(此处的/mnt/sdb1是上述创建共享目录步骤中的定义共享目录绝对路径,需要根据你的情况修改) 命令来查看这个目录的权限。
如果 yulin 用户(上述创建共享目录步骤中的允许访问此共享的有效用户列表,需要根据你的情况修改)没有这个目录的读写权限,你可以使用 chmodchown 命令来修改权限和所有权。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值