Linux 文件安全设置适用于 SMB 吗?

Linux 文件安全设置适用于 SMB 吗?

我尝试过各种谷歌搜索,但找不到我的问题的直接答案。

所有者、组、权限位等 Unix 概念是否适用于 SMB?

我的第一个想法是 SMB 可能被设计为与 Windows 安全模型(即 ACL)一起使用,因此它可能不理解 Unix 安全概念。但话又说回来,也许有人扩展了协议以添加对此的支持?

基本上,我在一个 Linux 机器上运行 Samba,并且可以在另一个 Linux 机器上安装文件共享,但我无法执行任何与权限相关的操作。在客户端上运行chownchgrp返回成功,但报告的实际权限并未更改。同样,chmod正在做一些奇怪的事情。即使我这样做,chmod 000该文件仍然是世界可读和可执行的。事实上,关闭执行权限似乎根本不可能。

这是因为我配置错误,还是只是SMB不支持Unix 文件权限?

答案1

smb.conf如果您创建 samba 共享,您可以为服务器上的共享设置以下选项,但有时如果您不使用正确的选项,您将无法让 samba 对创建的目录设置适当的权限(这只是您可以设置的示例,但您不能将它们全部设置在一起,并且不要使用示例设置):

[anonymous]
path                    = /usr/share/anonymous
valid users             = anonymous
hosts allow             = 23.32.23.32
writeable               = yes
guest ok                = no
public                  = no
browsable               = no
printable               = no
usershare allow guests  = no
usershare owner only    = no
usershare max shares    = 0
read only               = no
create mask             = 0644
directory mask          = 0644
valid users             = %S
create mask             = 664
force create mode       = 664
security mask           = 664
force security mode     = 664
directory mask          = 2775
force directory mode    = 2775
directory security mask = 2775
force directory security mode = 2775

检查所有源,您必须设置哪些参数并尝试它们:

答案2

我的第一个想法是 SMB 可能被设计为与 Windows 安全模型一起使用......

中小企业 =服务器消息块。它不是桑巴舞

https://en.wikipedia.org/wiki/Server_Message_Block

服务器消息块 (SMB) 是一种通信协议[1],最初由 IBM 的 Barry A. Feigenbaum 于 1983 年开发[2],旨在提供对运行 IBM OS/2 的系统网络上的节点之间的文件和打印机的共享访问。它还提供了经过身份验证的进程间通信(IPC)机制。 1987 年,Microsoft 和 3Com 在 OS/2 的 LAN Manager 中实现了 SMB,此时 SMB 使用 NetBIOS 帧协议之上的 NetBIOS 服务作为其底层传输。后来,Microsoft 在 Windows NT 3.1 中实现了 SMB,并一直在对其进行更新,使其能够与较新的底层传输配合使用。

因此,SMB 并不是designed work with[Microsoft] Windows 安全模型;而是一种安全模型。服务器消息块早在 1992 年的 Windows 3.1 和 1995 年的 windows95 之前就出现了。这是包括 Microsoft 在内的每个人都开始使用的协议,并且已更新到 SMB 2.0 和 3.0。就像计算机早期的一切一样,安全概念基本上不存在;说Windows 安全模型非常含糊或不具体。

基本上,我在一个 Linux 机器上运行 Samba,并且可以在另一个 Linux 机器上挂载文件共享...

桑巴舞是一个Linux 软件套件提供与 Microsoft Windows 系统的互操作性提供文件和打印服务并将 Linux 服务器无缝集成到 Active Directory 环境中。 您可以使用 SAMBA 导出文件共享吗中小企业(或者过时的 CIFS?)并让另一台 Linux 服务器安装它,当然。但基于 SAMBA 的简单定义和目的,我不会这样做。在 linux 和 linux 之间,我的建议是使用 NFS vers=4.2。如果您想专门使用 SMB3.0 来使用 SAMBA,那么我会在 samba.org 网站上搜索所有配置选项,以/etc/samba/smb.conf正确导出和挂载此类共享,以便 linux 应用其文件系统内容(权限等)今天将/应该通过 SMB3.0 协议。

似乎根本不可能关闭执行权限。

这让我想到在Linux中使用NTFS文件系统...... https://unix.stackexchange.com/questions/604674/chmod-is-not-working-on-ntfs-3g-partition#:~:text=For%20either%20chmod%20or%20chown,commands%20can%27t %20可能%20work.&text=此%20将%20挂载%20并指定%20,755%20和%20files%20mode%20644%20

如果您在 Linux 中使用ntfs-3g挂载 NTFS 文件系统,而不是 Linux 支持的文件系统(例如 XFS 或 EXT3/4),那么您将始终看到对所有内容的执行权限,除非您明确挂载它而不是这样。

Linux 文件安全设置适用于 SMB 吗?

我说是的,但是根据您的描述,您遗漏了很多重要的上下文 - 正在使用的 Linux 版本,正在使用的 SAMBA 版本,您的smb.conf协议和 SMB 协议实际上有效,所以我猜您配置错误...你提到也许有人扩展了协议以添加对此的支持...答案在于 SMB 如何更新到最新版本 3.0。我通过 3.0 使用 linux samba 导出和 microsoft win10 访问它,使用 sambasecurity=userpassdb backend = tdbsam.

答案3

SMB(服务器消息块),也称为 CIFS(通用 Internet 文件系统),是一种主要由 Windows 系统使用的网络文件共享协议。它不直接支持类 Unix 系统(Linux、macOS 等)中的 Unix 风格权限(所有者、组、权限位)。

当您从 Linux 客户端上的 Samba 服务器挂载 SMB/CIFS 共享时,客户端会尝试将 SMB 权限映射到 Unix 样式权限,以提供一定的兼容性和一致性。这通常是使用**cifsVFS** 模块完成的,它允许您安装CIFS以作为本地文件系统层次结构的一部分出现的方式共享。

但是,将 SMB 权限映射到 Unix 样式权限时存在一些限制。您描述的行为(例如无法使用chmod或更改权限chown以及执行权限出现奇怪行为)可能是由于 SMB 权限映射到 Unix 样式权限的方式所致。

以下是需要考虑的几点:

  1. 用户映射:确保在 Linux 客户端和 Samba 服务器之间配置了正确的用户映射。如果映射不正确,客户端可能没有修改共享上的文件所需的权限。

  2. ACL(访问控制列表):SMB/CIFS 支持访问控制列表 (ACL),与传统的 Unix 样式权限相比,它可以对文件权限进行更精细的控制。如果共享设置了 ACL,它们可能优先于 Unix 样式权限。

  3. CIFS Unix 扩展:Samba 提供了一个称为 Unix 扩展的参数cifs,可以在 Samba 服务器配置中启用或禁用该参数。启用后,客户端可以通过权限拥有更多类似 Unix 的行为。确保在您的 Samba 服务器配置中启用此选项。

  4. 安装选项:在客户端挂载 SMB 共享时,您可以指定挂载选项来控制权限的处理方式。例如,您可以使用uidgidfile_modedir_mode选项设置已装载共享上的文件和目录的默认所有权和权限。

值得注意的是,虽然 SMB/CIFS 本身并不支持 Unix 风格的权限,但 Samba 尝试提供一些兼容性和映射,以便更轻松地与类 Unix 客户端一起使用。然而,由于权限系统之间固有的差异,可能存在一些限制和不一致。

如果您需要在 Linux 客户端上获得完整的 Unix 风格的权限和功能,您可以考虑使用 NFS(网络文件系统),它是专门为类 Unix 系统设计的,并提供本机 Unix 风格的权限和所有权管理。

相关内容