slurm: Как отправить работу под другим пользователем и запретить чтение файлов других пользователей?

Основано на следующей теме; Я пытаюсь отправить работу под другим пользователем.

Я вошел как main_userи грязные работы отправляются через 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

Approach_1: Запуск от имени newUser в директории main_user:

$ 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 ~/* делает папку других пользователей недоступной; это может быть полезным решением?

1 ответ

Решение

Но после того, как я запустил sbatch run.sh, я получаю следующее сообщение: Отправлено пакетное задание ***; но отправленное задание не отображается в очереди, и задание не запускается в Slurm.

Часто это указывает на то, что newuser не известен на вычислительном узле. Вы должны запустить useradd команда на всех вычислительных узлах, а также. Но это должно быть ясно из журналов Slurm.

Кроме того, я просто хочу запретить пользователю не иметь доступа к каким-либо важным данным, хранящимся у любого другого пользователя. chmod go-rwx /home/* или chmod 700 ~/* делает папку других пользователей недоступной; это может быть полезным решением?

Да, 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:

Можете ли вы представить вакансию как newuser напрямую, например sudo su - newuser ; sbatch run.sh?

Я отправил вакансию как $NEWUSER

$ sudo su - $NEWUSER -c "cd $BASEDIR/USERADDRESS_home/path_to_run && 
sbatch -c2 slurmScript.sh
Другие вопросы по тегам