跳转至

文件共享

通过文件共享,实现组内成员访问自己HOME目录下的指定文件,用于组内软件环境或者数据的共享,避免重复数据的产生。

setfacl和chgrp

文件的拥有者和权限

image-20240108084414733

如上图所示:

第一项:文件的权限位,d表示文件为文件夹,2-4为用户所有者对该文件的读写权限,5-7为用户组对该文件的权限,8-10为其他用户对该文件权限

第二项:文件所有者,谁创建的文件文件,谁就是所有者,只有文件所有者才能进行文件权限和文件所有组修改的权限

第三项:文件所有组,正常情况下,每个用户还存在一个以hpc开头,已项目负责人账户命名的用户组,可在登录后执行id查询

第四项:文件/文件夹名

对于文件的访问权限,可通过setfacl设置其他用户或者用户组对文件的访问权限,也可以通过chgrp修改文件所有组,并在权限中赋予组用户对文件的读写权限实现。

添加文件访问权限,使文件可以组内共享

第一步:添加权限,让组内成员可以访问打开自己的HOME目录;

这里使用setfacl,是因为通过chmod修改HOME目录属性,可能会导致计算节点ssh免密登录、远程桌面使用异常

# 查看自己所在的用户组,登录集群后通过id指令查看所在组,找到hpc开头的组名
id 
# 设置HOME目录,使所在组成员可以打开自己的HOME目录
# 假如上一步查询的的组名为hpc1000000000,那么命令如下
setfacl -m group:hpc1000000000:x ~
# 后期如果需要取消执行以下指令即可
setfacl -x group:hpc1000000000:x ~

这里只添加了组内成员可以打开自己的HOME目录的权限,请严格执行,避免不必要的问题的产生

第二步:在自己的HOME目录下创建共享文件夹

# 创建一个文件夹
mkdir ~/group
# 修改文件的拥有组
chgrp -R hpc1000000000 ~/group

第三步:管理后续文件权限

通过之前的两步,课题组hpc1000000000的所有成员都可以访问自己HOME目录下的group文件夹;

但还需要注意两点:

  • 在该目录下新创建的文件或者文件夹,并不会继承上一层目录的权限属性,文件所有者还需要执行以下命令确保新建文件的拥有组为课题组
# 如果仅是文件的话可以不加-R参数
chgrp -R hpc1000000000 <文件或者文件夹>
# 如果是文件夹,需要确保文件夹下所有的子文件和子目录的拥有者,都为命令执行人本人,否则会执行失败
  • 为防止文件被组内成员误操作,可删除组成员的写属性,尤其是共享的软件和数据
# -R 表示修改文件夹下所有的子文件和子文件夹
# g-w表示文件或者文件夹的所有组去除读权限
chmod -R g-w <文件或者文件夹>