基于用户组的AWS EFS(NFS目录)文件夹级权限配置方案咨询
基于用户组的AWS EFS(NFS目录)文件夹级权限配置方案咨询
嗨,针对你这个AWS EFS的分组权限需求,因为EFS确实不支持ACL,咱们完全可以靠Unix传统的POSIX权限模型来实现,步骤很清晰,我给你拆解一下:
1. 先确保EFS正确挂载到Linux服务器
首先把你的EFS(efs1)挂载到目标目录/data,用NFS 4.x的挂载命令(记得替换成你的EFS ID和区域):
sudo mount -t nfs4 -o nfsvers=4.1,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2,noresvport fs-xxxxxx.efs.us-east-1.amazonaws.com:/ /data
这些挂载选项是EFS官方推荐的,能保证性能和稳定性。如果需要开机自动挂载,可以把这条命令加到/etc/fstab里。
2. 创建并配置用户组
在Linux服务器上创建你需要的group1、group2,以及一个用于共享sd2的中间组(因为单个目录只能有一个所属组,得靠它让两个组的用户都能访问sd2):
# 创建基础用户组 sudo groupadd group1 sudo groupadd group2 # 创建sd2的共享组,用于让两个组的用户都能访问该目录 sudo groupadd group_sd2
然后把用户加到对应的组里:
- 给需要访问sd1和sd2的用户,同时加入group1和group_sd2:
sudo usermod -aG group1,group_sd2 user1 - 给需要访问sd2和sd3的用户,同时加入group2和group_sd2:
sudo usermod -aG group2,group_sd2 user2
注意:如果有多台服务器挂载这个EFS,一定要保证所有服务器上的用户组GID完全一致,否则权限会出问题。可以用LDAP或者统一的用户管理工具来同步UID/GID。
3. 创建子目录并设置权限
先创建需要的sd1、sd2、sd3目录:
sudo mkdir /data/sd1 /data/sd2 /data/sd3
然后给每个目录设置所属组和权限,同时开启setgid位(这样目录里新创建的文件会自动继承目录的所属组,不用每次手动修改):
- 配置sd1:仅允许group1用户访问
sudo chown :group1 /data/sd1 sudo chmod 770 /data/sd1 sudo chmod g+s /data/sd1 - 配置sd2:允许group1和group2用户访问(通过group_sd2实现)
sudo chown :group_sd2 /data/sd2 sudo chmod 770 /data/sd2 sudo chmod g+s /data/sd2 - 配置sd3:仅允许group2用户访问
sudo chown :group2 /data/sd3 sudo chmod 770 /data/sd3 sudo chmod g+s /data/sd3
4. 验证权限配置
你可以切换到对应用户,测试权限是否符合预期:
比如用user1测试:
su - user1 cd /data/sd1 # 应该能正常进入,可创建/修改文件 cd /data/sd2 # 也能正常操作 cd /data/sd3 # 会提示权限拒绝,符合需求
用user2测试同理,能正常访问sd2和sd3,但无法进入sd1。
备注:内容来源于stack exchange,提问作者Yash
相关产品推荐
相关产品推荐

