3

基于以下线程;我正在尝试在另一个用户下发送工作。

我以main_user, 和 slurm 作业的身份登录,main_user这样做rm -rf /home/main_user是非常危险的。

为了防止这种情况,我想在main_user's 目录下的另一个用户的权限下运行作业。我认为,如果我能够设法通过 new created 提交作业user,则该用户无权更改我的任何文件,期望用户正在运行他的作业的文件夹。

创建新用户:

$ sudo useradd -m newuser -d /home/newuser
$ sacctmgr add account newuser --immediate
$ sacctmgr create user newuser  defaultaccount=newuser adminlevel=[None] --immediate

Approach_1:在 main_user 的目录下以 newUser 身份运行:

$ cd pathToRunMyJob
$ sudo chown -R newuser:newuser .
$ id -u newuser
1004
$ sbatch  --uid=1004 run.sh

Approach_2:在目录下新创建的用户文件夹中运行作业home

$ cd /home/newuser
$ id -u newuser
1004
$ sbatch --uid=1004 run.sh

但现在我收到以下待处理消息:

    JOBID PARTITION   NAME     USER ST       TIME  NODES NODELIST(REASON)
      602     debug   run.sh   deneme PD     0:00      1 (launch failed requeued held)

更新:

我试图通过使用@Dmitri Chubarov 的评论在另一个用户下提交工作:sudo su - newuser ; sbatch run.sh

这似乎是解决方案。在我这样做sudo su - newuser之后sbatch run.sh ,它会阻止newuser源代码更改其他用户的文件夹。


另外,我只是想防止用户不访问任何其他用户存储的任何重要数据。chmod go-rwx /home/*chmod 700 ~/*使其他用户的文件夹无法访问;这可能是一个有用的解决方案吗?

4

2 回答 2

3

但是在我执行 sbatch run.sh 之后,我收到以下消息:提交的批处理作业 ***;但提交的作业不会显示在 squeue 上,并且作业不会在 Slurm 上启动。

通常,这表明newuser在计算节点上是未知的。useradd您还必须在所有计算节点上运行该命令。但这从 Slurm 日志填充中应该很清楚。

另外,我只是想防止用户不访问任何其他用户存储的任何重要数据。chmod go-rwx /home/* 或 chmod 700 ~/* 使其他用户的文件夹无法访问;这可能是一个有用的解决方案吗?

是的,chmod go-rwx /home/*这将是要走的路。

于 2018-06-06T08:44:32.780 回答
0

我结合了@damienfrancoisand@Dmitri Chubarov的答案:

我创建新用户的方式:

用户.sh

#!/bin/bash

NEWUSER ="user"
BASEDIR="/var/users/"

sudo useradd -d $BASEDIR/$NEWUSER -m $NEWUSER
sudo mkdir -p $BASEDIR/$NEWUSER/cache
echo $USERADDRESS / $NEWUSER 'is added as user.'

sudo chmod 700 $BASEDIR/$NEWUSER # Block others and people in the same group to do read/write/execute
sudo setfacl -R -m user:$NEWUSER:rwx   $BASEDIR/$NEWUSER #Give Read/Write/Execute access to USER on the give folder.
sudo setfacl -R -m user:$SLURMUSER:rwx $BASEDIR/$NEWUSER #Give Read/Write/Execute access to root_slurmuser on the give folder.

# Add user to Slurm
sacctmgr add account $NEWUSER --immediate
sacctmgr create user $NEWUSER defaultaccount=$NEWUSER adminlevel=[None] --immediate

后来我应用了@Dmitri Chubarov 的建议:

您可以直接提交工作吗newuser,例如 sudo su - newuser ; sbatch run.sh

我已提交工作作为$NEWUSER

$ sudo su - $NEWUSER -c "cd $BASEDIR/USERADDRESS_home/path_to_run && 
sbatch -c2 slurmScript.sh
于 2019-11-14T15:20:42.260 回答