Administrator
Administrator
发布于 2025-01-27 / 6 阅读

ubuntu 22.04 服务器配置多用户与 Anaconda 隔离与共享

为避免服务器多用户使用时重复下载 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.9

7. (可选可不选) 设置全局 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 #可选,为新用户划分用户组,这样可以获取到对应的权限