为避免服务器多用户使用时重复下载 conda、conda 环境莫名其妙被删除等现象,现对不同用户设置不同权限,限定当前用户仅能操作当前 / home/xxx 内文件,并仅能在该目录下创建和修改 ocnda 环境,以达到不同用户使用的隔离。
1 安装 Anaconda
(1) 下载安装包
由于国内网络环境,官网下载速度较慢,我们可以进入[清华大学开源软件](https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/)界面下载, 根据系统和版本选择,我们选择了较新的 Anaconda3-5.0.0
但由于服务器没有图形化界面,也可以使用命令行安装
wget --user-agent="Mozilla" https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/Anaconda3-5.0.0-Linux-x86_64.sh若不加`--user-agent="Mozilla"` 则会报错,如下图,这是由于服务器正在检查引用者,一些 HTTP 请求也会得到错误响应,它们会拒绝不以 Mozilla 开头或不包含 Wget 的用户代理
下载完成后运行 `sudo sh Anaconda3-5.0.0-Linux-x86_64.sh` 按照提示即可,在提示安装目录时,我们为了让所有用户都能使用,安装在`/opt/anaconda3`目录下
最后提示是否加入环境变量,输入`no`,我们自己配置
(2) 配置环境变量
由于我们是在服务器下安装,希望达到的效果是每个用户都不需要自己重复安装 conda,可以直接使用 conda 的相关命令,并且创建的**环境 env 和包 pkgs** 都存放在**用户自己的目录**下,这样就可以达到隔离的效果,彼此不互相干扰。
首先,添加系统环境变量,**为了对所有用户都成立**,执行`sudo vim /etc/bash.bashrc`,而`~/.bashrc`只对当前用户 (一般`~`代表`/home/xxx`路径下),注意 anaconda 所在路径,加入如下:(.bashrc 和 / etc/profile 的区别可看这个[链接](https://blog.csdn.net/yiminghd2861/article/details/98854882))
# >>> conda initialize >>>
# !! Contents within this block are managed by 'conda init' !!
__conda_setup="$('/opt/anaconda3/bin/conda' 'shell.bash' 'hook' 2> /dev/null)"
if [ $? -eq 0 ]; then
eval "$__conda_setup"
else
if [ -f "/opt/anaconda3/etc/profile.d/conda.sh" ]; then
. "/opt/anaconda3/etc/profile.d/conda.sh"
else
export PATH="/opt/anaconda3/bin:$PATH"
fi
fi
unset __conda_setup
# <<< conda initialize <<<打开 / etc/profile 也加一下环境变量,执行`sudo vim /etc/profile`,加入:
export PATH=/opt/anaconda3/bin:$PATH
再重新载入`source /etc/profile`
再执行`conda info` 输出内容,查看配置是否有问题
(3) 换源与更换存储路径
在 Anaconda 安装的公共目录下新建配置文件,即`vim /opt/anaconda3/.condarc`,输入以下内容进行**换源**和**更换存储路径**:
channels:
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/r/
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/msys2/
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
- defaults
envs_dirs:
- ~/.conda/envs
pkgs_dirs:
- ~/.conda/pkgs即可,再次`conda info`检查路径是否都设置成功。
2 配置 conda 用户组权限
ubuntu 中的每个文件或文件夹都有创建者、所属组、权限的设置,对于同组的文件可以方便统一管理权限,通过`vim /etc/group`查看当前用户组情况,如下图所示,第一个蓝色字体为组的名称,红色为编号,最后的蓝色字体为属于该组的用户
下面针对多用户的 conda 配置用户组流程如下:
1. 创建 conda 的用户组`groupadd anaconda`,其中`anaconda`为名字,可以任意
2. 添加用户到刚刚创建的用户组 usermod -a -G anaconda <username> (注意需要**重启**才能生效)
3. 改变 conda 的安装目录用户组为刚刚创建的 anaconda 组 chgrp -R anaconda /opt/anaconda3
4. 更改 conda 安装目录权限,即修改该文件夹的拥有者 (root) 和所属组 (anaconda) 组员的读写权限
chmod 770 -R /opt/anaconda3
即:对于拥有者、本组、其他组分别为 7(可读写运行)、7(可读写运行)、0(什么都不行) 的权限)
另外:读、写、执行权限分别对应数字 4、2、1
常见组合有:
1. 可读写运行 7
2. 可读写不可运行 6
3. 可读可执行不可写 5
u 表示该文件的拥有者,g 表示与该文件的拥有者属于同一个群体 (group) 者,o 表示其他以外的人,a 表示这三者皆是
5. 设置文件夹目录内的组继承和子目录组继承,使该文件夹下新建文件和文件夹都能在 anaconda 的组内
chmod g+s /opt/anaconda3
chmod g+s sudo find /opt/anaconda3/ -type d 6. 创建全局 conda 环境,作为所有人都可以访问的公共环境
conda create -n public python=3.97. (可选可不选) 设置全局 conda 环境存放文件夹(`/opt/anaconda3/envs`)内只能由 root 修改,而对于其他用户的环境,则放在每个用户自己的`home/xxx/`目录下。
chmod g-w /opt/anaconda3/envs,其中`g-w`为去除当前组其他人的写入权限
3 ubuntu 创建多用户
sudo adduser username #该步骤按提示输入密码即可
usermod -a -G sudo username #可选,是否给新用户sudo的权限
usermod -a -G 其他组名称 username #可选,为新用户划分用户组,这样可以获取到对应的权限