如何使用ACL促进多用户conda系统

时间:2019-02-06 20:47:07

标签: linux permissions acl conda

我正在尝试找到一种在其中建立多用户conda系统的方法

  • 存在一个conda
  • 可以将用户添加到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和权限以允许此操作?

1 个答案:

答案 0 :(得分:0)

在遇到great answer之前,我面临着类似的问题。
简而言之,您需要将“ conda”组的过去和将来的写入权限添加到conda安装文件夹中。
要使用访问控制列表(ACL):

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

更详细地,-Rm指定对于/home/conda/conda的所有子文件夹,这些标志被递归地 m 修饰为 R
第一个参数d:g:conda:rwX将为该文件的成员添加读取,写入和执行权限(大写X标志仅将其应用于已经e x 可执行文件的文件/文件夹)。对于任何未来文件和子文件夹(由g:conda开头的 g rocon(由d指定),对于 d efault),而第二个参数g:conda:rwX会将这些权限添加到当前文件和文件夹中。

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

可以在here上找到有关getfaclsetfacl命令的更多信息。