AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / unix / 问题 / 752293
Accepted
MathematicalOrchid
MathematicalOrchid
Asked: 2023-07-24 23:32:26 +0800 CST2023-07-24 23:32:26 +0800 CST 2023-07-24 23:32:26 +0800 CST

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

  • 772

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

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

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

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

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

smb
  • 3 3 个回答
  • 116 Views

3 个回答

  • Voted
  1. Best Answer
    ap_SECURITY ANALYTICS_INC
    2023-07-24T23:51:46+08:002023-07-24T23:51:46+08:00

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

    当您从 Linux 客户端上的 Samba 服务器挂载 SMB/CIFS 共享时,客户端会尝试将 SMB 权限映射到 Unix 样式权限,以提供一定的兼容性和一致性。这通常是使用 VFS** 模块完成的,该模块允许您以作为本地文件系统层次结构的一部分显示的方式**cifs挂载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 共享时,您可以指定挂载选项来控制权限的处理方式。例如,您可以使用uid、gid、file_mode和dir_mode选项设置已装载共享上的文件和目录的默认所有权和权限。

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

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

    • 0
  2. Z0OM
    2023-07-25T01:19:17+08:002023-07-25T01:19:17+08:00

    如果您创建 samba 共享,您可以为服务器上的共享设置以下选项smb.conf,但有时如果您不使用正确的目录,则无法让 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
    

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

    • smb.conf - Samba 套件的配置文件

    • 我无法让 samba 对创建的目录设置适当的权限

    • Samba默认文件创建掩码计算

    • Samba 创建掩码无法正常工作

    • Ubuntu 上的 Samba 文件共享不会屏蔽或强制新文件的权限

    • smb.conf 中“目录掩码”背后的原理是什么?

    • 0
  3. ron
    2023-07-25T02:52:36+08:002023-07-25T02:52:36+08:00

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

    SMB =服务器消息块。这不是桑巴舞。

    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 机器上挂载文件共享...

    SAMBA 是一个Linux 软件套件,它为提供文件和打印服务的 Microsoft Windows 系统提供互操作性,并将 Linux 服务器无缝集成到 Active Directory 环境中。当然,您可以使用SMB (或过时的 CIFS?) 使用 SAMBA 导出文件共享,并让另一台 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=对于%20%20chmod%20或%20chown,命令%20can%27t%20可能%20work.&text=This%20will%20mount%20with%20specified,755%20and%20files%20mode%20644%20。

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

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

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

    • 0

相关问题

  • 在 debian 10 上保护 Samba

  • 无法从 Ubuntu 18.04 连接到 SMB 共享存储

  • 由于密码错误,无法通过 smbclient 连接到 Windows 10

  • 单个 SMB 共享中的多个路径

  • smbclient登录问题

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    模块 i915 可能缺少固件 /lib/firmware/i915/*

    • 3 个回答
  • Marko Smith

    无法获取 jessie backports 存储库

    • 4 个回答
  • Marko Smith

    如何将 GPG 私钥和公钥导出到文件

    • 4 个回答
  • Marko Smith

    我们如何运行存储在变量中的命令?

    • 5 个回答
  • Marko Smith

    如何配置 systemd-resolved 和 systemd-networkd 以使用本地 DNS 服务器来解析本地域和远程 DNS 服务器来解析远程域?

    • 3 个回答
  • Marko Smith

    dist-upgrade 后 Kali Linux 中的 apt-get update 错误 [重复]

    • 2 个回答
  • Marko Smith

    如何从 systemctl 服务日志中查看最新的 x 行

    • 5 个回答
  • Marko Smith

    Nano - 跳转到文件末尾

    • 8 个回答
  • Marko Smith

    grub 错误:你需要先加载内核

    • 4 个回答
  • Marko Smith

    如何下载软件包而不是使用 apt-get 命令安装它?

    • 7 个回答
  • Martin Hope
    user12345 无法获取 jessie backports 存储库 2019-03-27 04:39:28 +0800 CST
  • Martin Hope
    Carl 为什么大多数 systemd 示例都包含 WantedBy=multi-user.target? 2019-03-15 11:49:25 +0800 CST
  • Martin Hope
    rocky 如何将 GPG 私钥和公钥导出到文件 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Evan Carroll systemctl 状态显示:“状态:降级” 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim 我们如何运行存储在变量中的命令? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S 为什么 /dev/null 是一个文件?为什么它的功能不作为一个简单的程序来实现? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 如何从 systemctl 服务日志中查看最新的 x 行 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - 跳转到文件末尾 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla 为什么真假这么大? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis 在一个巨大的(70GB)、一行、文本文件中替换字符串 2017-12-30 06:58:33 +0800 CST

热门标签

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve