linux - 如何使用 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 和权限以允许这样做?
解决方案
在找到这个很好的答案之前,我面临着类似的问题。
简而言之,您需要将“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:conda
d
g:conda:rwX
您还可以添加d:g:conda:rwX,g:conda:rwX,d:o::rX,o::rX
以确保其他用户(不是来自conda
组)可以从该文件夹读取和执行并使用环境(尽管这应该是默认设置)。
更多信息getfacl
和setfacl
命令可以在这里找到。
推荐阅读
- python - 让机器人指向正确的方向
- docker - Heroku 和 Google Cloud Run 上的 HTTP 请求不一样
- azure - 无法使用我在资源诞生时创建的管理员帐户通过 Azure Synapse Analytics (Azure DW) 创建数据库主密钥
- javascript - 从字符串javascript中提取多个特定字符
- python-3.x - 如何从 Python Cloud Function 触发/调用 Cloud Build
- react-native - React Native:警告:componentWillReceiveProps 已重命名,不推荐使用。SwipeOut 组件问题
- php - 在提交时保留输入值并在提交成功时清除它们(php)
- google-drive-api - googleapi: 403: 已超出此文件的下载配额。信誉好,文件新
- sas - Proc 制表,在我的专栏中,我有超过 50 个变量,我怎样才能将其减少到只有 5 个?
- memory - Lua / Coroutines 如何测量标准函数占用多少内存