代码之家  ›  专栏  ›  技术社区  ›  abalter

如何利用ACLs实现多用户conda系统

  •  0
  • abalter  · 技术社区  · 6 年前

    我在想办法建立一个多用户conda系统

    • 存在一个 conda
    • 用户可以添加到
    • 用户可以在中央conda位置创建共享环境和安装包

    我设置了粘滞位,使文件默认为父权限,并用

    (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和权限以允许此操作?

    0 回复  |  直到 6 年前
        1
  •  1
  •   IsoBar    5 年前

    在我发现这个之前,我也面临着类似的问题 great answer .

    要使用访问控制列表(ACL)执行此操作,请执行以下操作:

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

    -Rm 亵渎 R 的所有子文件夹 /home/conda/conda .
    第一个论点 d:g:conda:rwX 将增加读、写和执行权限(大写 X “conda”的成员 g g:conda )对于任何人 未来 d 一开始,因为 d 默认),而第二个参数 g:conda:rwX ,将向当前文件和文件夹添加这些权限。

    d:g:conda:rwX,g:conda:rwX,d:o::rX,o::rX 为了确保 o conda 组)可以从该文件夹读取和执行,并使用环境(虽然这应该是默认设置)。

    getfacl setfacl 可以找到命令 here .