跳转至

数据共享

每个账号新建时,home目录的默认权限为700,即只有本账号才有对本账号home下的数据具有读写权限;

不同用户或用户组之间有课题组合作需要共享数据时,严禁直接将home目录的权限设置为777,此权限设置意味着任何其他用户都可以删除该目录下的任何文件;同时出于节约存储空间的考虑,也禁止将数据拷贝一份到自己的目录下。可以使用以下方式安全可控地实现数据共享,同时用户可自行设置,不需要管理员参与。

组内数据共享

本课题组账号之间需要共享数据时,可以开放组权限;

开放本账号home目录的读权限给本组用户。注意除非有特殊情况,不建议将写权限开放给其它用户,容易引发数据安全问题以及ssh秘钥访问配置不成功。

$ chmod 750 ~
开放权限后,本组其它用户可以访问、拷贝本账号内的数据。

组间数据共享

由于经常有跨课题组的合作,相互之间有数据共享的需求,即跨用户组之间有数据读写的需求。此时部分同学会开放整个home目录的权限为777,鉴于目前集群用户超过500人,此方式共享数据极度不安全;或者直接使用scp将对方账号的数据拷过来,造成数据冗余,产生不必要的存储费用开支。

鉴于此,可以使用Linux的ACL权限来满足此需求。

向用户组开放目录权限

用户user1(用户组为GROUP1)与GROUP2有课题组合作,需要将user1账号下的数据共享给GROUP2整个组所有用户,使GROUP2所有用户均对user1账号home目录下的数据都有读的权限,操作如下

#添加权限
[user1@login01 ~]$ setfacl -m g:GROUP2:rx /public/home/user1

#查看权限
[user1@login01 ~]$ getfacl/public/home/user1
getfacl: Removing leading '/' from absolute path names
# file: public/home/user1
# owner: user1
# group: GROUP1
user::rwx
group::---
group:GROUP2:r-x
mask::r-x
other::---

#课题合作结束后,基于安全考虑,建议删除权限
[user1@login01 ~]$ setfacl -x g:GROUP2 /public/home/user1

#查看权限
[user1@login01 ~]$ getfacl /public/home/user1
getfacl: Removing leading '/' from absolute path names
# file: public/home/user1
# owner: user1
# group: GROUP1
user::rwx
group::---
mask::---
other::---

向用户开放目录权限

用户user1(用户组为GROUP1)与GROUP2的user2有课题组合作,需要将user1账号下的数据共享给user2,使user2对user1账号home目录下的数据都有读的权限,操作如下

#添加权限
[user1@login01 ~]$ setfacl -m u:user2:rx /public/home/user1

#查看权限
[user1@login01 ~]$ getfacl /public/home/user1
getfacl: Removing leading '/' from absolute path names
# file: public/home/user1
# owner: user1
# group: GROUP1
user::rwx
user:user2:r-x
group::---
mask::r-x
other::---

#课题合作结束后,基于安全考虑,建议删除权限
[user1@login01 ~]$ setfacl -x u:user2 /public/home/user1

#查看权限
[user1@login01 ~]$ getfacl /public/home/user1
getfacl: Removing leading '/' from absolute path names
# file: public/home/user1
# owner: user1
# group: GROUP1
user::rwx
group::---
mask::---
other::---

注意事项

开放目录权限时,该目录路径上的所有目录的权限也同样需要开放,否则其他用户仍然无法访问。如向用户user2开放 /public/home/user1/data 目录的权限,setfacl -m u:user2:rx /public/home/user1/data 操作后,因为目录 /public/home/user1/ 的相关权限没有开放给user2,所以user2仍然无法访问 /public/home/user1/data 目录。

因此正确做法为先操作 setfacl -m u:user2:rx /public/home/user1,然后测试user2能否访问/public/home/user1/data目录,如果权限仍然不够,再执行setfacl -m u:user2:rx /public/home/user1/data

基于数据安全考虑,建议不再需要共享数据时,及时删除共享权限。

参考: 一文带你彻底搞懂Linux 文件权限管理

本文阅读量  次
本站总访问量  次