slurm:如何在另一个用户下提交作业并防止读取其他用户的文件?
slurm: How to submit a job under another user and prevent to read other users' files?
基于以下 ;我正在尝试发送另一个用户下的工作。
我以 main_user
身份登录,并且通过 main_user
提交了 slurm 作业,这可以做到 rm -rf /home/main_user
这非常危险。
为了防止这种情况,我想在 main_user
的目录下 运行 另一个用户许可的作业。我认为,如果我能够通过新创建的 user
提交作业,则该用户无权更改我的任何文件,期望用户正在 运行 其作业所在的文件夹。
创建新用户:
$ sudo useradd -m newuser -d /home/newuser
$ sacctmgr add account newuser --immediate
$ sacctmgr create user newuser defaultaccount=newuser adminlevel=[None] --immediate
Approach_1: 运行 as newUser under main_user's directory :
$ 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
's source code to change other users' 文件夹。
此外,我只是想防止用户无法访问任何其他用户存储的任何重要数据。 chmod go-rwx /home/*
或 chmod 700 ~/*
使其他用户的文件夹无法访问;这可能是一个有用的解决方案吗?
But after I do sbatch run.sh , I get following message: Submitted
batch job *** ; but submitted job does not show up on squeue and the
job does not launch on Slurm.
通常,这表明 newuser
在计算节点上是未知的。您还必须在所有计算节点上 运行 useradd
命令。但这应该从 Slurm 日志文件中清楚。
Also, I just want to prevent a user not to access any important data
stored by any other user. chmod go-rwx /home/* or chmod 700 ~/* makes
other users' folder unaccessible; could it be a helpful solution?
是的,chmod go-rwx /home/*
是正确的选择。
我合并了@damienfrancois
和@Dmitri Chubarov
的答案:
我创建新用户的方式:
user.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 的建议:
Can you submit a job as a newuser
directly, e.g.
sudo su - newuser ; sbatch run.sh
?
我已提交工作作为 $NEWUSER
$ sudo su - $NEWUSER -c "cd $BASEDIR/USERADDRESS_home/path_to_run &&
sbatch -c2 slurmScript.sh
基于以下
我以 main_user
身份登录,并且通过 main_user
提交了 slurm 作业,这可以做到 rm -rf /home/main_user
这非常危险。
为了防止这种情况,我想在 main_user
的目录下 运行 另一个用户许可的作业。我认为,如果我能够通过新创建的 user
提交作业,则该用户无权更改我的任何文件,期望用户正在 运行 其作业所在的文件夹。
创建新用户:
$ sudo useradd -m newuser -d /home/newuser
$ sacctmgr add account newuser --immediate
$ sacctmgr create user newuser defaultaccount=newuser adminlevel=[None] --immediate
Approach_1: 运行 as newUser under main_user's directory :
$ 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
's source code to change other users' 文件夹。
此外,我只是想防止用户无法访问任何其他用户存储的任何重要数据。 chmod go-rwx /home/*
或 chmod 700 ~/*
使其他用户的文件夹无法访问;这可能是一个有用的解决方案吗?
But after I do sbatch run.sh , I get following message: Submitted batch job *** ; but submitted job does not show up on squeue and the job does not launch on Slurm.
通常,这表明 newuser
在计算节点上是未知的。您还必须在所有计算节点上 运行 useradd
命令。但这应该从 Slurm 日志文件中清楚。
Also, I just want to prevent a user not to access any important data stored by any other user. chmod go-rwx /home/* or chmod 700 ~/* makes other users' folder unaccessible; could it be a helpful solution?
是的,chmod go-rwx /home/*
是正确的选择。
我合并了@damienfrancois
和@Dmitri Chubarov
的答案:
我创建新用户的方式:
user.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 的建议:
Can you submit a job as a
newuser
directly, e.g.sudo su - newuser ; sbatch run.sh
?
我已提交工作作为 $NEWUSER
$ sudo su - $NEWUSER -c "cd $BASEDIR/USERADDRESS_home/path_to_run &&
sbatch -c2 slurmScript.sh