Slurm问题-不给root权限以及sudo-su区别

问题场景

在Slurm中,作业是可以在计算节点与控制节点同时提交的。对于非root用户提交的作业,可以使用一些命令,比如说scancel是可以成功的,但是scontrol update之类的命令会出现问题,即使把普通用户加到/etc/sudoers,加上sudo命令也会出现问题(离谱的是,第一遍不会出错,第二遍就出错)。
136e18b4f208b59e8634300b6c8c705.png
现在的问题场景就是,不允许使用root用户,但是Slurm支持的好多操作比如sacctmgr都得在root下,允许将普通用户加到/etc/sudoers文件中(虽然很怪,但只能这么办),使用普通用户来完成所有slurm操作。

解决过程

根据已有的经验,普通Linux用户要想使用root权限,可以将用户名放到/etc/sudoers文件中,但是会出现上面的问题,看到/etc/sudoers里有关于下图描述的:
问题.png
就尝试在配置文件添加Defaults env_keep += "HOME"%jinlu ALL=(ALL) ALL,然后再次尝试普通用户操作敏感命令 - 失败
slurm问题.jpg
后来使用sudo -s + 需要执行的敏感命令,竟然成功了,我使用root用户提交了一个作业,然后使用一个普通用户(当然这个用户放到了/etc/sudoers里面了),执行修改作业运行时间、取消作业的命令,结果都成功了!!!
1678445696752.png

有必要重温sudo与su了

经过前面的问题,发现对于sudo以及su理解不是很深刻,印象中就知道sudo是使用管理员权限,su是切换用户使用的,没了。今天才发现不一样,值得探讨探讨。
sudo (superuser do),以超级用户名义执行命令。当前用户必须在sudo对应用户组中,redhat和centos中是wheel用户组,Ubuntu和Debian是sudo用户组。sudo su命令通过输入当前用户的密码,切换至root用户。su命令也可以切换至root用户,但需要root用户密码,这样会带来root用户密码暴露的问题。所以sudo su的使用场景之一就是避免root用户密码暴露,另外一个场景是审计,sudo执行的操作都会被记录下来。su如果后面什么用户都不跟,默认省缺是root。一个用户能否使用 sudo 命令,取决于 /etc/sudoers 文件的设置。
sudo -s简单来说就是指定目标shell。可以显示指定,也可以是SHELL环境变量指定的shell。
sudo bash以root用户打开一个bash命令行。sudo无法执行内置命令,通过这种方式可以解决这个问题。不但如此,任意命令都可以执行,所以管理员应该谨慎将shell给sudo成员。

su意思是switch user表示切换用户

su  <user_name>su - <user_name>
  • 如果加入了 - 参数,那么是一种 login-shell 的方式,意思是说切换到另一个用户 <user_name> 之后,当前的 shell 会加载 <user_name> 对应的环境变量和各种设置;
  • 如果没有加入 - 参数,那么是一种 non-login-shell 的方式,意思是说我现在切换到了 <user_name>,但是当前的 shell 还是加载切换之前的那个用户的环境变量以及各种设置。

前面的方法中,是先切换到另一个用户(root 或者别的用户),在哪个用户的状态下执行命令,最后输入 exit 返回当前用户。
还有一种方式是:不需要先切换用户再执行命令,可以直接在当前用户下,以另一个用户的方式执行命令,执行结束后就返回当前用户。这就得用到 -c 参数。

su - -c "你要执行的命令"
su - -c "scancel 2153"      # 获取root权限执行取消作业之后,返回到当前用户

sudo 与su 区别

  • 使用 su - ,提供 root 账户的密码,可以切换到 root 用户;
  • 使用 sudo su - ,提供当前用户的密码,也可以切换到 root 用户
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值