Разрешить доступ по ssh для пользователей с определенным UID с определенных IP-адресов

С помощью GNU Parallel вы можете сделать это:

parallel NOCI.py {1} {2} {1.}{2.}.output ::: Folder1/* ::: Folder2/*

По умолчанию будет выполняться одно задание для каждого потока ЦП параллельно.

Чтобы увидеть, что будет запущено, используйте--dry-run:

parallel --dry-run NOCI.py {1} {2} {1.}{2.}.output ::: Folder1/* ::: Folder2/*

GNU Parallel — это универсальный распараллеливатель, который позволяет легко выполнять задания параллельно на одной машине или на нескольких машинах, к которым у вас есть доступ по ssh.

Если у вас есть 32 разных задания, которые вы хотите запустить на 4 ЦП, прямой способ распараллеливания — запустить 8 заданий на каждом ЦП:

Simple scheduling

GNU Parallel вместо этого порождает новый процесс, когда он завершается -, сохраняя активность ЦП и, таким образом, экономя время:

GNU Parallel scheduling

Установка

Из соображений безопасности вам следует установить GNU Parallel с помощью вашего менеджера пакетов, но если GNU Parallel не упакован для вашего дистрибутива, вы можете выполнить персональную установку, которая не требует root-доступа. Это можно сделать за 10 секунд, сделав это:

$ (wget -O - pi.dk/3 || lynx -source pi.dk/3 || curl pi.dk/3/ || \
   fetch -o - http://pi.dk/3 ) > install.sh
$ sha1sum install.sh | grep 883c667e01eed62f975ad28b6d50e22a
12345678 883c667e 01eed62f 975ad28b 6d50e22a
$ md5sum install.sh | grep cc21b4c943fd03e93ae1ae49e28573c0
cc21b4c9 43fd03e9 3ae1ae49 e28573c0
$ sha512sum install.sh | grep da012ec113b49a54e705f86d51e784ebced224fdf
79945d9d 250b42a4 2067bb00 99da012e c113b49a 54e705f8 6d51e784 ebced224
fdff3f52 ca588d64 e75f6033 61bd543f d631f592 2f87ceb2 ab034149 6df84a35
$ bash install.sh

Другие варианты установки см. вhttp://git.savannah.gnu.org/cgit/parallel.git/tree/README

Узнать больше

Посмотреть другие примеры:http://www.gnu.org/software/parallel/man.html

Посмотрите вступительные видеоролики:https://www.youtube.com/playlist?list=PL284C9FF2488BC6D1

Прохождение обучения:http://www.gnu.org/software/parallel/parallel_tutorial.html

Прочесть книгу:https://doi.org/10.5281/zenodo.1146014

Подпишитесь на список рассылки, чтобы получить поддержку:https://lists.gnu.org/mailman/listinfo/parallel

0
01.12.2020, 23:27
1 ответ

Возможно, вам нужен модуль pam _listfile .

Блок, подобный следующему в /etc/pam.d/sshd, скорее всего, сделает то, что вы хотите:

account [success=1 default=ignore] pam_succeed_if.so quiet uid < 6000 uid > 6500
account required pam_listfile.so file=/etc/remote-hosts item=rhost sense=allow onerr=fail

Первая строка пропускает тест pam_listfile, если UID выходит за пределы диапазона 6000 -6500. Снимите флаг quiet, чтобы увидеть, когда выполняется этот тест. Измените его на debug, чтобы действительно заполнить ваши журналы.

Вторая строка проверяет, присутствует ли удаленный хост пользователя в файле доступа. Вы можете изменить эту строку, чтобы использовать onerr=succeed; если это так, вы можете удалить этот файл доступа, чтобы разрешить вход для всех пользователей в этом диапазоне UID.

И если я могу предложить модификацию вашей стратегии, вместо использования диапазона UID добавьте таких пользователей в общую группу, например. "ограниченный". Тогда вам не нужно беспокоиться о попадании всех таких пользователей в определенный диапазон UID. Вместо этого попробуйте следующий блок:

account [success=1 default=ignore] pam_succeed_if.so quiet user notingroup restrictedssh
account required pam_listfile.so file=/etc/remote-hosts item=rhost sense=allow onerr=fail

В любом случае добавьте строки в начало файла /etc/pam.d/sshdсразу после любых других строк account.

0
18.03.2021, 22:45

Теги

Похожие вопросы