Ubuntu下多用户共享conda环境
现在你已经安装好了想要的 anaconda。如果有新用户,只需将其加入conda用户组,即可使用共享环境或创建新环境。参考。
详细记录如何配置
- root 用户安装
- 多用户共享
- root 创建只读共享环境
- 各用户自行创建自己环境
的 anaconda。
网上找到的方法往往配置完用户组和权限便结束了,没有涉及用户新建环境的位置和权限,也没有提到 umask 可能带来的问题。
软件下载
建议使用国内源,例如清华大学开源软件镜像站。下载对应架构的安装包,例如 Anaconda3-2022.05-Linux-x86_64.sh。注意下载的是 anaconda3。
下面假定你在 root 用户中执行指令,并且之前没有安装过 anaconda。
安装
- 运行下载的文件。你可能想为它增加执行权限,通过
chmod +x
。 - 回车开始安装
- 阅读并输入
yes
- 指定安装目录,例如
/opt/anaconda3
。不要放在 root 根目录(~
)下。 - 等待安装完成
配置
PATH 路径
使用你喜欢的编辑器打开 /etc/profile
,在末尾附加
export PATH=/opt/anaconda3/bin:$PATH
这样做是为了让各用户的终端都能找到conda
并运行。如果你安装在其它位置,请对应地更改目录值(下同)。
你可能需要执行 source /etc/profile
应用这项更改。
用户组与目录权限
为了使 anaconda 的文件仍归 root 所有,我们将新建一个用户组来为其余用户提供访问权限。
groupadd conda # 新建一个名为 conda 的组;可以使用其它名称
adduser <username> conda # 将需要的用户加入该组
chgrp -R conda /opt/anaconda3 # 将安装目录转给该组
chmod 770 -R /opt/anaconda3 # 设置 root 用户与 conda 组的读写权限
find /opt/anaconda3 -type d -exec chmod g+s {} + # 设置组继承,使以后新建的文件夹仍属于 conda 组
chmod g-w /opt/anaconda3/envs # 共享环境只能由 root 修改
指定新环境位置
接下来,为了确保其余用户可以正确地在自己的目录中使用-n <name>
新建环境,还要创建系统级的 anaconda 配置文件。在安装目录下新建.condarc
文件并写入
envs_dirs:
- /opt/anaconda3/envs
- ~/.conda/envs
根据 Conda configuration,envs_dirs
是搜索命名环境的目录列表。创建新的命名环境时将放置在第一个可写位置,因此 root 用户将默认创建在安装目录下,成为共享环境,而其余用户会创建在自己的主目录中。
关于更多的管理选项,参见 Administering a multi-user conda installation。
你可能会想把这个文件的权限设为 644来避免被其余用户改动。这也是默认行为,因为 root 用户的默认 umask 是 0022。我们接下来将介绍这个 umask 可能带来的问题。
关于 umask
umask 控制新建文件的权限,简单来说是对指定的权限位进行排除。详细信息参见它的 维基百科。
前述文件共享的机制是通过组读写权限完成的,意味着 anaconda 的文件需要有用户组的读与写权限。普通用户的默认 umask 是 0002
,提供了用户组写仅限,但 root 用户的0022
并没有。因此在使用 root 用户创建共享环境前需要修改 umask。
umask 0002
conda create -n env_name python # 示例
umask 0022 # 你可能会想恢复原值
否则会导致其它用户无权访问某些新下载的包的缓存等问题。在这种情况下,可以找到相应的文件并为其附加用户组写权限chmod g+w
。
最后
现在你已经安装好了想要的 anaconda。如果有新用户,只需将其加入conda
用户组,即可使用共享环境或创建新环境。
参考
更多推荐
所有评论(0)