基于以下thread https://stackoverflow.com/q/44540590/2402577,我正在尝试向另一个用户发送作业。
我登录的身份是main_user
,并且 slurm 作业通过以下方式提交main_user
那可以做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
方法一:在main_user目录下以newUser身份运行:
$ cd pathToRunMyJob
$ sudo chown -R newuser:newuser .
$ id -u newuser
1004
$ sbatch --uid=1004 run.sh
方法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)
Update:
我尝试通过使用@Dmitri Chubarov'评论在另一个用户下提交工作:
sudo su - newuser ; sbatch run.sh
这似乎是解决方案。我这样做之后sudo su - newuser
then sbatch run.sh
,它可以防止newuser
的源代码来更改其他用户的文件夹。
另外,我只是想防止用户无法访问任何其他用户存储的任何重要数据。chmod go-rwx /home/*
or chmod 700 ~/*
使其他用户的文件夹无法访问;这可能是一个有用的解决方案吗?