使用POSIX ACL控制Samba文件系统的访问

本文涉及的产品
对象存储 OSS,20GB 3个月
对象存储 OSS,内容安全 1000次 1年
云备份 Cloud Backup,100GB 3个月
简介: 本文介绍如何通过Samba服务实现NFS文件系统以SMB协议进行文件共享,并通过POSIX ACL控制权限。 前提条件 已使用NFSv3协议挂载文件系统,详情请参见挂载NFS文件系统。 背景信息 目前有客户存在以下使用场景:在服务器上挂载NFS文件系统后,使用Samba服务将此文件系统以SMB协议共享给其他Windows用户使用。

本文介绍如何通过Samba服务实现NFS文件系统以SMB协议进行文件共享,并通过POSIX ACL控制权限。

前提条件

已使用NFSv3协议挂载文件系统,详情请参见挂载NFS文件系统

背景信息

目前有客户存在以下使用场景:在服务器上挂载NFS文件系统后,使用Samba服务将此文件系统以SMB协议共享给其他Windows用户使用。在Samba服务中,可以创建用户并拥有Windows端的用户名和密码,也拥有Linux端的用户名(与Windows端的用户名相同)和密码(可以与Windows端不同)。Samba端可以设置valid users字段控制哪些用户/群组可以访问或者读写该文件系统。对于文件级别的访问控制,Samba服务会将POSIX ACL转化为SMB权限,来控制某个用户/群组的访问权限,具体介绍可参见Setting up a Share Using POSIX ACLs

说明 目前,ACL功能只支持华北 3(张家口)、华北 5(呼和浩特)、亚太东南 2(悉尼)、亚太东南 3(吉隆坡)和美国西部 1(硅谷)地域,并且需要通过工单提交申请后才能使用。

操作步骤

本步骤以CentOS操作系统为例,介绍如何设置POSIX ACL,并以Samba进行输出。其他的Linux操作系统的流程类似,命令稍有不同。

1. 安装Samba服务。

使用以下命令安装Samba服务端,具体操作可参见Setup file server on centos 7

sudo yum install -y samba samba-common

2. 创建Samba用户。

本文假设创建普通用户player,属于普通用户群组players;管理员admini,属于管理员群组adminis;另外再创建一个用户anonym,属于anonym_group群组。

  • 创建用户和群组。

sudo useradd player
sudo groupadd players
sudo usermod -g players player
sudo useradd admini
sudo groupadd adminis
sudo usermod -g adminis admini
sudo useradd anonym
sudo groupadd anonym_group
sudo usermod -g anonym_group anonym
  • 为Samba用户创建SMB挂载密码。

sudo smbpasswd -a player
sudo smbpasswd -a admini
sudo smbpasswd -a anonym

3. 配置smb.conf配置文件。

安装Samba完成后,/etc/samba/smb.conf是默认的配置文件。打开/etc/samba/smb.conf,进行如下配置,重要参数说明如下所示,更多smb.conf配置选项请参见The configuration file for the Samba suite

  • path = /mnt/nfs3:/mnt/nfs3为挂载的目标地址,请根据实际情况替换。
  • valid users:用于控制可以访问文件系统的用户或群组,请根据实际情况替换。
[global]
   server string = Samba Alibaba NAS NFS Server
   server role = standalone server
   min protocol = SMB2_10
   log file = /var/log/samba/%m
   log level = 2
   valid users = @players, @adminis, @anonym_group
   writable = yes
[nfs3]
   comment = Secure File Server Share
   path =  /mnt/nfs3

4. 启动Samba服务端Smbd。

sudo systemctl enable smb.service
sudo systemctl enable nmb.service

您也可以执行以下命令启动Samba服务端Smbd。

sudo systemctl restart smb.service
sudo systemctl restart nmb.service

5. 在Windows系统中验证Samba服务。

使用net use命令挂载Samba nfsv3文件系统。

net use * \\samba-IP\nfs3 <password> /user:<user>

挂载成功后,player、admini、anonym三个用户都可以访问该文件系统,并创建和读写目录/文件。

6. 对NAS NFSv3文件系统设置POSIX ACL权限。

sudo umask 777
sudo mkdir dir0
sudo setfacl -m g:players:r-x dir0
sudo setfacl -m g:adminis:rwx dir0
sudo setfacl -m u::--- dir0
sudo setfacl -m g::--x dir0
sudo setfacl -m o::--- dir0
sudo setfacl -d -m g:players:r-x dir0
sudo setfacl -d -m g:adminis:rwx dir0
sudo setfacl -d -m u::--- dir0
sudo setfacl -d -m g::--x dir0
sudo setfacl -d -m o::--- dir0

7. 在Windows系统中验证ACL设置结果。

  • 使用admini身份挂载Samba nfsv3文件系统,在目录dir0下可以创建文件和子目录。
  • 使用player身份挂载Samba nfsv3文件系统,在目录dir0下无法创建文件和子目录,但可以打开及读取文件和子目录。
  • 使用anonym身份挂载Samba nfsv3文件系统,无法访问目录dir0下的文件和子目录。

Samba + NAS POSIX ACL的特性

  • NFS文件系统的POSIX ACL会被转化为SMB ACL在Windows系统的安全标签中显示。

  • 可以在SMB端设置SMB ACL并转化为POSIX ACL存入NFS文件系统。

  • 如果SMB ACL无法转化为POSIX ACL,例如在POSIX ACL中没有Deny,或者权限超过了rwx的表达能力,修改会被忽略,不起作用。

  • 建议只在NFS端设置ACL,SMB端只作为客户端使用。

  • NAS NFSv3不支持锁,如果SMB端和NFS端同时有多个客户端进行读写操作,可能有一致性问题。如果有这类需求请使用Samba + NAS NFSv4 ACL。

目录
相关文章
|
1月前
|
存储 安全 Unix
基于文件系统的ACL
【8月更文挑战第13天】
22 1
|
4月前
|
安全 Linux 数据安全/隐私保护
深入理解 Linux 文件系统的权限控制
【5月更文挑战第5天】本文旨在详细解析 Linux 操作系统中文件系统权限的核心机制。通过分析用户、组和其他人在文件及目录上拥有的读、写、执行权限,我们探讨了如何实现对系统资源的精确控制。文章还将介绍如何使用命令行工具来修改和管理这些权限,以及权限如何在安全策略和系统管理中扮演关键角色。
阿里云文件系统SMB ACL超级用户功能使用指南
阿里云文件系统对于SMB文件系统提供了SMB ACL超级用户功能,可以方便客户在无需改变目录权限的情况下查看和修改任何目录或者任何文件。方便文件系统的管理员进行管理。 以下介绍两个适用SMB ACL超级用户功能的案例,方便用户模仿使用。
377 0
|
安全 前端开发 Linux
使用NFSv4 ACL控制Samba文件系统的访问
本文介绍如何通过Samba服务实现NFS文件系统以SMB协议进行文件共享,并通过NFSv4 ACL控制权限。
5984 0
|
运维 网络协议 安全
Linux客户端以AD域用户身份挂载使用阿里云SMB协议文件系统
本文介绍了如何在Linux客户端以AD域用户身份挂载使用阿里云SMB协议文件系统。
3161 0
Linux客户端以AD域用户身份挂载使用阿里云SMB协议文件系统
|
安全 Linux 文件存储
阿里云SMB协议文件系统ACL权限控制使用指南
ACL权限控制表是一项重要的企业级特性。阿里云用户可以将自建的AD服务与NAS SMB卷连通,通过AD域身份或者匿名(EVERYONE)的方式挂载NAS SMB卷,之后用户可以对任何文件、文件夹设置权限管控表。
3912 0
阿里云SMB协议文件系统ACL权限控制使用指南
|
Linux 数据安全/隐私保护 Shell
Linux之ACL权限控制
ACL权限控制主要目的是提供传统的owner,group,other的read,wirte,execute权限之外的具体权限设置,可以针对单一用户或组来设置特定的权限 设置ACL权限:setfacl查看ACL权限:getfacl 比如:某一目录权限为 drwx------ 2 root root 4096 03-10 13:51.
1269 0
|
安全 Linux 数据安全/隐私保护
|
Linux 数据安全/隐私保护