Linux/Slurm集群用户登录管理指南(管理员版)
Linux/Slurm集群用户登录管理指南(管理员版)
作为 Linux 服务器和 Slurm 高性能计算集群的管理员,有效地管理用户访问、权限和资源是确保系统安全、稳定和资源公平分配的核心任务。本文将介绍一套完整的用户管理方法,从禁止登录到作业控制,再到服务器维护,为你提供一站式解决方案。
一、 用户登录与访问控制
核心任务:禁止用户登录系统
当需要临时或永久禁止某个用户登录时,有多种方法可以实现。
方法一:修改用户默认 Shell (最常用)
这是最推荐的方法,它会阻止所有类型的 Shell 登录(SSH、本地终端等),并且在用户尝试登录时给予明确提示。
操作步骤:
使用 usermod 命令,而不是手动编辑 /etc/passwd,这样更安全。
# -s, --shell <SHELL> 指定用户的默认登录Shell为 /sbin/nologin
sudo usermod -s /sbin/nologin <username>
恢复方法:
将用户的 Shell 修改回 /bin/bash 即可。
sudo usermod -s /bin/bash <username>
方法二:锁定用户密码 (passwd -l)
此方法会锁定密码,使其无法通过密码验证。但请注意:如果用户配置了 SSH 免密登录,此方法无法阻止他们通过密钥登录。
操作步骤:
sudo passwd -l <username>
恢复方法:
sudo passwd -u <username>
方法三:设置账户过期时间 (chage)
通过将账户过期日期设置为一个过去的时间,可以立即禁用该账户。非常适合管理临时账户。
操作步骤:
# -E, --expiredate 将账户过期日期设为1970年1月1日
sudo chage -E 1970-01-01 <username>
恢复方法:
将过期日期设为 -1,表示永不过期。
sudo chage -E -1 <username>
二、 用户密码与认证管理
修改用户密码
作为管理员,你可以强制为任何用户重置密码。
sudo passwd <username>
执行后,系统会提示你输入两次新密码。新密码会立即生效。
对于集群用户,还需要额外的操作,即,将修改后的密码同步到集群的所有的机器上。
比如我所用的集群,是用NIS数据库来管理用户的,那么我就需要:
cd /var/yp
sudo make
配置 SSH 登录方式
管理员可以通过修改 SSH 服务的配置文件 /etc/ssh/sshd_config 来全局控制认证策略。
重要提示:修改后,必须重启 SSH 服务才能生效:sudo systemctl restart sshd。
策略1:强制使用密钥登录(禁止密码登录)
这是最安全的推荐实践。
# /etc/ssh/sshd_config
PubkeyAuthentication yes
PasswordAuthentication no
策略2:强制使用密码登录(禁止密钥登录)
在特定安全策略下可能需要。
# /etc/ssh/sshd_config
PubkeyAuthentication no
PasswordAuthentication yes
策略3:要求密钥 + 密码双重认证 (2FA)
提供最高级别的安全性。用户登录时,必须先验证密钥,然后再输入自己的账户密码。
# /etc/ssh/sshd_config
PubkeyAuthentication yes
PasswordAuthentication yes
# 指定需要同时满足两种认证方法
AuthenticationMethods publickey,password
三、 Slurm 作业管理
禁止用户提交新作业
阻止用户提交任何新作业,但不影响已在运行的作业。
# 需要 Slurm 管理员权限
sudo sacctmgr modify user where name=<username> set MaxSubmitJobs=0
恢复方法:将 MaxSubmitJobs 设为 -1(无限制)或一个具体数字。
sudo sacctmgr modify user where name=<username> set MaxSubmitJobs=-1
挂起与恢复作业
挂起 (Suspend)
挂起操作会暂停正在运行的作业,释放 CPU 资源,但作业依然保留在内存中。这对于临时腾出计算资源非常有用。
挂起单个作业:
scontrol suspend <job_id>
挂起某个用户的所有作业:
# 使用 squeue 查找用户的所有作业ID,然后传递给 scontrol
squeue -u <username> -h -o "%i" | xargs -I {} scontrol suspend {}
挂起所有用户的全部作业:
squeue -h -o "%i" | xargs -I {} scontrol suspend {}
恢复 (Resume)
恢复被挂起的作业,使其从暂停处继续运行。
恢复单个作业:
scontrol resume <job_id>
恢复某个用户的所有作业:
squeue -u <username> -h -o "%i" | xargs -I {} scontrol resume {}
恢复所有作业:
squeue -h -o "%i" | xargs -I {} scontrol resume {}
四、 服务器维护与批量用户控制
完整流程:彻底禁用一个集群用户
- [Slurm] 取消用户所有作业:
scancel -u <username> - [Slurm] 禁止用户提交新作业:
sudo sacctmgr modify user where name=<username> set MaxSubmitJobs=0 - [Linux] 踢出当前会话:如果用户正登录着,强制踢出。这会终止用户所有进程。
# 使用 who 或 w 查看用户登录情况(可选) who # 强制终止该用户的所有进程,从而实现踢出效果 sudo pkill -u <username> - [Linux] 阻止未来登录:
sudo usermod -s /sbin/nologin <username>
维护模式:临时禁止所有非root用户登录
当你需要进行系统维护,不希望普通用户登录干扰时,可以使用 nologin 文件快速实现,无需关机或重启服务。
开启维护模式(禁止登录):
创建一个 /etc/nologin 文件。当此文件存在时,只有 root 用户可以登录。普通用户登录时,会看到该文件的内容。
# 创建文件并写入提示信息,告知用户服务器正在维护
echo "服务器正在进行紧急维护,预计1小时后恢复。请稍后重试。" | sudo tee /etc/nologin
关闭维护模式(恢复登录):
只需删除该文件即可。
sudo rm /etc/nologin
所有非 root 用户即可恢复正常登录。
鲲鹏昇腾开发者社区是面向全社会开放的“联接全球计算开发者,聚合华为+生态”的社区,内容涵盖鲲鹏、昇腾资源,帮助开发者快速获取所需的知识、经验、软件、工具、算力,支撑开发者易学、好用、成功,成为核心开发者。
更多推荐



所有评论(0)