首页 > 解决方案 > 如何使用 ACL 促进多用户 conda 系统

问题描述

我试图找出一种方法来建立一个多用户 conda 系统,其中

问题在于,默认情况下,当用户更改 conda“世界”时,新添加的内容属于该用户组。

我想使用 ACL 来设置默认组。

我设置了粘性位,以便文件默认为父权限,并通过以下方式确认

(base) user2@balterbox:/home/conda/conda$ groups
user2 conda
(base) user2@balterbox:/home/conda/conda$ mkdir test
(base) user2@balterbox:/home/conda/conda$ ll test
total 8
drwxrwsr-x+  2 user2  conda 4096 Feb  6 20:43 ./
drwxrwsr-x+ 14 balter conda 4096 Feb  6 20:43 ../

我还应用了以下 ACL:

(base) user2@balterbox:/home/conda$ getfacl conda
# file: conda
# owner: balter
# group: conda
# flags: -s-
user::rwx
group::rwx
other::r-x
default:user::rwx
default:group::rwx
default:group:conda:rwx
default:mask::rwx
default:other::r-x

但是,user2仍然无法创建新环境:

(base) user2@balterbox:/home/conda$ conda create -n env2
Solving environment: done

NotWritableError: The current user does not have write permissions to a required path.
  path: /home/conda/conda/pkgs/cache/2ce54b42.json
  uid: 1002
  gid: 1002

If you feel that permissions on this path are set incorrectly, you can manually
change them by executing

  $ sudo chown 1002:1002 /home/conda/conda/pkgs/cache/2ce54b42.json

In general, it's not advisable to use 'sudo conda'.


balter@balterbox:/home/conda$ ls -al /home/conda/conda/pkgs/cache/2ce54b42.json
-rwxrwxr-x 1 balter conda 2990059 Feb  6 20:55 /home/conda/conda/pkgs/cache/2ce54b42.json

如何调整 ACL 和权限以允许这样做?

标签: linuxpermissionsaclconda

解决方案


在找到这个很好的答案之前,我面临着类似的问题。
简而言之,您需要将“conda”组的过去和将来的写入权限添加到 conda 安装文件夹。
使用访问控制列表 (ACL) 执行此操作:

sudo setfacl -Rm d:g:conda:rwX,g:conda:rwX /home/conda/conda

更详细地说,-Rm指定这些标志被递归修改为所有子文件夹/home/conda/conda
第一个参数将为d:g:conda:rwX任何未来文件和子文件X夹(指定在开头,默认),而第二个参数,将这些权限添加到当前文件和文件夹。 g:condadg:conda:rwX

您还可以添加d:g:conda:rwX,g:conda:rwX,d:o::rX,o::rX以确保其他用户(不是来自conda组)可以从该文件夹读取和执行并使用环境(尽管这应该是默认设置)。

更多信息getfaclsetfacl命令可以在这里找到。


推荐阅读