1. 规划用户UID,GID。用户自10000向上分配,项目组自20000向上分配(通常不需要)

    # 检查ID冲突
    getent passwd <userid>
    getent group <groupid>
    
  2. 控制节点与计算节点统一用户(在所有节点同步执行):

    # 注册环境变量,将下面尖括号中的内容替换为实际id与名称。
    export USERID=<userid>
    export GROUPID=<groupid>
    export USERNAME=<username>
    export GROUPNAME=<groupname>
    
    # 创建项目组,项目组自20000向上分配(通常不需要)
    sudo groupadd -g ${GROUPID} ${GROUPNAME}
    
    # 创建用户,用户自10000向上分配,会同时创建用户主组
    sudo useradd -u ${USERID} -m ${USERNAME} --shell /bin/bash
    
    # 锁定密码
    sudo passwd -l ${USERNAME}
    
    # 将用户添加至组
    sudo usermod -aG ${GROUPNAME} ${USERNAME}
    
    # 检查注册结果,观察用户、组是否正常注册
    getent passwd ${USERNAME}
    getent group | grep ${USERNAME}
    
  3. 在控制节点为用户创建ssh密钥

    # make path
    sudo install -d -m 700 -o ${USERNAME} -g ${USERNAME} /home/${USERNAME}/.ssh
    
    # generate ssh key 密码选项留空
    sudo -u ${USERNAME} ssh-keygen -t ed25519 -f /home/${USERNAME}/.ssh/id_ed25519
    
    # print pubkey
    sudo cat /home/${USERNAME}/.ssh/id_ed25519.pub
    # 记录这个公钥,后面还要用一次。
    
    sudo vim /home/${USERNAME}/.ssh/authorized_keys
    
    # 将cat 出来的密钥写入authorized_keys,
    
    # change permissions
    sudo chmod 600 /home/${USERNAME}/.ssh/id_ed25519
    sudo chmod 644 /home/${USERNAME}/.ssh/id_ed25519.pub
    
  4. 在控制节点注册OOD 账号

    sudo htpasswd /etc/ood/.htpasswd ${USERNAME}
    sudo systemctl reload apache2
    
  5. 在控制节点数据库中注册用户关系

    # 查看当前已注册组账户
    sacctmgr show account
    
    # 如有必要,新建组,通常不需要,使用现有的组。
    sudo sacctmgr -i add account ${GROUPNAME} Description="<description>" Organization="<organization>"
    
    # 注册用户
    # 账户重组,暂不注册用户独立账户
    # sudo sacctmgr -i add account ${USERNAME} Description="<description>" Organization="<organization>"
    sudo sacctmgr -i add user ${USERNAME} DefaultAccount=${GROUPNAME} Account=${GROUPNAME} # 后面可以添加其它的附属Accounts。
    
    # 验证注册结果
    sacctmgr show assoc tree
    # 看到用户注册到了所属组
    # epic <groupname> <username>
    
  6. 在计算节点注册公钥

    sudo install -d -m 700 -o ${USERNAME} -g ${USERNAME} /home/${USERNAME}/.ssh
    sudo vim /home/${USERNAME}/.ssh/authorized_keys
    
    # 将cat 出来的密钥写入authorized_keys
    
    sudo chown ${USERNAME}:${USERNAME} /home/${USERNAME}/.ssh/authorized_keys
    sudo chmod 600 /home/${USERNAME}/.ssh/authorized_keys
    
  7. 在控制节点测试链接

# 控制节点连通性测试
sudo -u ${USERNAME} ssh -i /home/${USERNAME}/.ssh/id_ed25519 ${USERNAME}@127.0.0.1 'echo OK'
# 看到输出了OK

# 计算节点连通性测试
sudo -u ${USERNAME} ssh -i /home/${USERNAME}/.ssh/id_ed25519 ${USERNAME}@222.20.76.74 'echo OK'
# 看到输出了OK
  1. 在计算节点为用户分配磁盘限额

    # 按照模板账户设置磁盘限额
    sudo edquota -p quota_template ${USERNAME}
    
    # 检查限额情况
    sudo quota -s -u ${USERNAME}
    # 应当输出例如:
    # Disk quotas for user maintain (uid 1000):
    #      Filesystem   space   quota   limit   grace   files   quota   limit   grace
    # /dev/mapper/ubuntu--vg-home
    #                    642M    200G    300G            4699       0       0