阿里云SMB协议文件系统ACL权限控制使用指南-阿里云开发者社区

开发者社区> 阿里云存储服务> 正文

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

简介: 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两个场景下的相关配置及实现。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:

阿里云存储基于飞天盘古2.0分布式存储系统,产品多种多样,充分满足用户数据存储和迁移上云需求。

官方博客
链接