阿里云SMB协议文件系统ACL权限控制使用指南

本文涉及的产品
对象存储 OSS,OSS 加速器 50 GB 1个月
简介: ACL权限控制表是一项重要的企业级特性。阿里云用户可以将自建的AD服务与NAS SMB卷连通,通过AD域身份或者匿名(EVERYONE)的方式挂载NAS SMB卷,之后用户可以对任何文件、文件夹设置权限管控表。

ACL权限控制表是一项重要的企业级特性。在不连通AD服务时,NAS SMB卷的ACL是只读的,用户登录身份为匿名(EVERYONE)。现在阿里云用户可以将自建的AD服务与NAS SMB卷连通,通过AD域身份或者EVERYONE的方式挂载NAS SMB卷,之后用户可以对文件、文件夹设置ACL。具体配置AD的方法请参考将SMB协议NAS挂载点接入AD域,挂载SMB卷的方法请参考从Windows以AD域用户身份挂载使用阿里云SMB协议文件系统

接下来我们介绍如何使用NAS SMB ACL及其相关特性。

说明 目前AD/ACL功能需要通过工单提交申请后才能使用,默认关闭。

1. 如何查看和修改ACL

用户可以使用Windows文件资源管理器的安全栏查看/修改权限,也可以通过Get-Acl/Set-Acl Powershell命令或者icacls命令行命令查看/修改ACL。

说明 请参考从Windows以AD域用户身份挂载使用阿里云SMB协议文件系统,使用mklink工具以C盘下的符号链接的形式挂载好NAS SMB文件系统。

mklink /D c:\myshare \\nas-mount-point.nas.aliyuncs.com\myshare

1.1. Windows文件管理器

在符号链接生成后,用户可以通过Windows文件资源管理器(File Explorer)查看和编辑文件/目录的ACL。以下为示例(其中文件系统名、密码、密钥内容等敏感信息已涂黑)。

Windows文件管理器ACL示例

说明 需要注意的是,阿里云NAS文件系统并没有实际加入用户的AD域。如果不是通过c:\myshare访问,而是通过网络路径\\nas-mount-point.nas.aliyuncs.com\myshare访问文件系统,在设置ACL时,会遇到因RPC服务器不可用而无法确定NAS挂载点是否已加入域的情况。
是否已加入域
RPC服务器不可用

请参考从Windows以AD域用户身份挂载使用阿里云SMB协议文件系统,使用mklink工具以C盘下的符号链接的形式挂载好NAS SMB文件系统。

mklink /D c:\myshare \\nas-mount-point.nas.aliyuncs.com\myshare

更多Windows文件管理器设置ACL的相关内容请参考Set-file-folder-permission-windows

注意:一定要保证文件管理器路径栏显示的是本地盘路径,否则设置ACL时会向NAS SMB卷发送RPC请求造成修改ACL失败。使用时注意如果需要回退,请点击回退或者上退按钮,但是不要点击路径中的某一段来回退。
请点击回退或者上退按钮,但是不要点击路径中的某一段来回退

1.2. Get-Acl/Set-Acl Powershell命令

Windows Powershell支持Get-Acl/Set-Acl来查看、修改ACL。
Get-Acl示例如下,更多资料请参考Get-Acl文档

$value = Get-Acl dir
$value.Access

Get-Acl

Set-Acl示例如下,更多资料请参考Set-Acl文档

Set-Acl .\dirKid2 $value
Get-Acl .\dirKid1 | Set-Acl .\dirKid2

1.3. Icacls Cmd命令

icacls是Windows命令行下的ACL操作标准命令。示例如下,更多资料请参考icacls文档

icacls .\dir0
icacls .\dir0 /grant *S-1-1-0:(d,wdac)
icacls .\dir0

icacls

2. 阿里云NAS SMB ACL基本特性

介绍完NAS SMB ACL的基本使用方法,接下来我们介绍NAS SMB ACL的基本特性。

2.1. 阿里云NAS SMB ACL的默认值

阿里云NAS SMB ACL的卷根目录权限默认值如下:
卷根目录权限默认值

2.1.1. 默认值设计的原因

  • SYSTEM, Administrators这两个ACE权限项是为了与Windows NTFS的权限对齐,保证管理员权限的程序能够正常运行。同时也为未来连通阿里云RAM账号系统之后,为超级用户提供管理员权限提供可能性。
  • CREATOR OWNER是为了实现继承机制,也与Windows NTFS权限对齐。
  • 设置Owner为Everyone,让Everyone有根目录的所有权限,这样没有使用AD的用户也能够以Everyone的身份登录卷并且在卷上进行创建新文件、文件夹的操作而不受影响。
  • NAS SMB AD/ACL设计了卷选项可以在卷上禁止以Everyone身份进行访问,只有域身份用户才能访问。有需要的用户请申请工单

2.1.2. 如何与已有用户的使用习惯进行兼容

  • 为了兼容不使用AD的用户,AD功能打开之前创建的文件/文件夹会有Everyone的所有权限,保证不使用AD的用户不受影响。不使用AD的用户可以通过NTLM协议以Everyone的身份挂载文件卷并能访问Everyone所拥有的内容。
  • 文件卷根目录权限是锁定的,这可以保障所有用户能够访问根目录。如需隔离,请自行建立子目录并设置隔离权限,让Everyone不能访问。或者申请工单禁止以Everyone身份进行访问。
  • 新的AD用户创建的文件/文件夹不会继承Everyone权限,所以新的AD用户的文件/文件夹不使用AD的用户并不能访问,只有创建者用户和管理员用户可以访问。
  • AD用户可以访问不使用AD的用户(即EVERYONE)创建的文件、文件夹。

2.2. 不支持多重身份挂载同一个NAS SMB卷

只能以一个身份挂载一个NAS SMB卷。尝试用另一身份挂载会出现以下错误:
另一身份挂载会出现以下错误

2.3. 逃逸机制

如果出现恶意用户强行删除了管理者权限以及其他人的权限,导致文件/文件夹不可用,需要用管理员身份挂载并重写该文件/文件夹的权限。阿里云NAS SMB文件卷实现了与Windows Server文件卷类似的逃逸机制。
比如,当恶意用户把文件夹的拥有者改成自己,然后设置Deny Everyone之后,管理者(Domain Admins, Built-in Administrators)可以在点击确认之后将文件夹的拥有者修改为管理者本人或者Everyone,然后把Deny Everyone的权限项删除并添加合适的Allow权限项即可。
逃逸机制示例

2.4. Cygwin

Cygwin可以在Windows环境中虚拟POSIX环境,运行POSIX程序。但是在启用AD/ACL之后,用户SID和Windows SD权限在Cygwin中会转化成POSIX uid/gid和POSIX ACL。这个转化的具体细节请参考Cygwin ntsec.html

2.4.1. /etc/fstab中加入noacl选项

在Cygwin中使用NAS SMB卷时,建议在Cygwin的/etc/fstab中加入noacl的挂载选项,这样Cygwin不会启用复杂的ACL转化,而是对新生成的文件和文件夹使用默认mode值,USER/GROUP则为当前Windows登录用户的用户名和群组。基本规则如下:

  • 文件夹默认mode和uid/gid(755)
    drwxr-xr-x 1 cat Domain Users 0 Jul 25 06:18 dir

  • 文件的默认mode和uid/gid(644)
    -rw-r--r-- 1 cat Domain Users 0 Jul 25 06:42 file

  • 文件的mode值可以为644或者444。如果是444,则文件设置了DOS Read-only权限。noacl只会转换文件的DOS Read-only权限

  • chmod命令不能修改文件夹的权限,可以修改文件的mode值到644或者444

  • chown/chgrp命令无效

  • getfacl/setfacl命令不支持

  • 因为客户端文件夹权限只会显示成755,文件权限只会显示成644或444,可能会出现客户端显示有权限但是服务端拒绝请求的情况

2.4.2. /etc/fstab如果使用默认acl选项

因为NAS SMB的默认挂载使用Everyone权限,而Everyone在Cygwin对应为other。Cygwin在生成文件/文件夹时,会有类似Linux的行为,在创建文件之后自动执行chmod操作使文件/文件夹mode达到默认值。因为文件夹的other默认值是r-x,文件的默认值是r--,所以Everyone只有r-x或者r--的权限,导致新生成的文件夹里Everyone无法创建新文件,新生成的文件对于Everyone也是只读的。

因此,强烈建议用户在Cygwin下使用noacl选项,不要使用acl选项。

2.5. Linux下使用AD/ACL

在Linux下使用mount -t cifs挂载时,用户可以指定挂载的域用户身份,以及挂载后的文件gid/uid/file mode/dir mode等。在使用文件卷时,客户端会根据挂载的uid/gid和登录的真实用户身份进行基本的posix权限检查,而在文件服务器端,无论Linux用户以何种uid/gid身份登录,都将映射到该域用户身份进行操作。Linux Root身份也没有管理员权限,而是该域用户的权限。chmod, chown, chgrp, getfacl/setfacl等Linux权限操作都将不起作用。

更多内容请参考从LinuxAD以域用户身份挂载使用阿里云SMB协议文件系统

阿里云文件存储AD/ACL相关文章

1. 阿里云SMB协议文件存储服务支持基于AD域的用户身份认证及权限访问控制介绍,总体介绍阿里云SMB协议文件存储服务支持基于AD域的用户身份认证及权限访问控制的设计实现。

2. Kerberos网络身份认证协议介绍及SMB文件系统对其的支持,介绍Kerberos网络身份认证协议以及与SMB协议问系统的交互。

3. 安装并启用Active Directory域服务与DNS服务,介绍如何在VPC中安装并启用AD域服务和DNS服务。

4. 将Windows系统机器加入AD域,介绍如何将windows机器加入AD域。

5. 将阿里云SMB协议文件系统挂载点接入AD域,介绍如何在AD域服务器以及阿里云SMB协议文件系统中进行必要的配置来支持基于AD域的用户身份认证及权限访问控制。

6. 从Windows以AD域用户身份挂载使用阿里云SMB协议文件系统,介绍如何从windows客户端以域用户身份挂载使用阿里云SMB协议文件系统。

7. 从LinuxAD以域用户身份挂载使用阿里云SMB协议文件系统,介绍如何从Linux客户端以域用户身份挂载使用阿里云SMB协议文件系统。

8. 阿里云SMB协议文件系统ACL权限控制使用指南,介绍如何正确地配置阿里云SMB协议文件系统的ACL以及相应的规则描述。

9. 阿里云SMB协议文件系统AD身份认证和ACL权限控制使用场景 - Home Directory / User Profile,介绍使用权限控制的域用户Home Directory以及User Profile两个场景下的相关配置及实现。

目录
相关文章
|
安全 Shell 网络安全
|
存储 缓存 Linux
SMB小传 —— SMB网络文件系统协议介绍
SMB网络文件系统协议, 全名服务器消息块(Server Message Block),曾用名CIFS(通用互联网文件系统 Common Internet File System), 公元1983年诞生于IBM[1],幼年得到英特尔和微软的照料,最终在微软的培养下成长为当今世上网络文件系统协议两极之一的存在。
22243 0
|
4月前
|
监控 安全 API
企业微信协议接口开发实践与最佳路径
在企业数字化转型中,企业微信官方API存在功能限制。本文探讨通过iPad协议实现个人微信互通、消息实时监控等核心需求,解析Protobuf与MMTLS通信、长连接维护及防封策略,揭示构建高效、安全SCRM系统的最佳实践路径。
500 6
|
12月前
|
人工智能 Kubernetes Java
回归开源,两位 Java 和 Go 程序员分享的开源贡献指引
Higress是一个基于Istio和Envoy的云原生API网关,支持AI功能扩展。它通过Go/Rust/JS编写的Wasm插件提供可扩展架构,并包含Node和Java的console模块。Higress起源于阿里巴巴,解决了Tengine配置重载及gRPC/Dubbo负载均衡问题,现已成为阿里云API网关的基础。本文介绍Higress的基本架构、功能(如AI网关、API管理、Ingress流量网关等)、部署方式以及如何参与开源贡献。此外,还提供了有效的开源贡献指南和社区交流信息。
1879 33
|
KVM 虚拟化
KVM的热添加技术之网卡管理
文章详细介绍了如何在KVM虚拟机中进行网卡的热添加和热移除操作,包括查看环境、添加和移除网卡的命令,以及如何指定不同的虚拟网卡模型,同时提供了一些操作时的注意事项和永久配置的方法。
460 3
KVM的热添加技术之网卡管理
|
JavaScript 前端开发 安全
如何学好JavaScript:从初学者到专家的学习指南
JavaScript是一门强大的编程语言,用于在网页上创建交互性和动态性。无论你是初学者还是有经验的开发者,学好JavaScript都是一个有价值的追求。这篇文章将指导你如何系统地学习JavaScript,并逐步提升你的技能水平,从初学者到专家。
|
弹性计算 网络协议 文件存储
将Windows系统机器加入AD域
一台Windows服务器需要加入到Active Directory域后才能通过AD域服务来管理。本文介绍了如何将一台Windows服务器加入已有的AD域。
5484 0
将Windows系统机器加入AD域
|
API 开发者
在钉钉中,许多接口都可以使用API请求并发量
在钉钉中,许多接口都可以使用API请求并发量
507 1