pdsh: как выполнить команды, которые требуют root/sudo полномочий

Я реализовал небольшой кластер Беовульфа для тестирования цели, всех узлов с сервером Ubuntu 18.04.

Я установил pdsh для выполнения той же команды на ssh одновременно на нескольких узел. вход в систему ssh предоставляют без пароля с общедоступным/с закрытым ключом распределением по узлам (пример: https://www.rittmanmead.com/blog/2014/12/linux-cluster-sysadmin-ssh-keys/).

Если я пробую простую команду как "дата", все в порядке:

me@master:~$ pdsh -w me@node[0-3] date
node0: Mon Mar 9 18:56:04 UTC 2020
node2: Mon Mar 9 17:26:15 UTC 2020
node3: Mon Mar 9 16:42:37 UTC 2020
node1: Mon Mar 9 17:42:52 UTC 2020
me@master:~$

Но если я пробую команду, которые требуют sudoer полномочий как это:

me@master:~$ pdsh -w me@node[0-3] apt update

затем это возвращает эти ошибки:

node0:
node0: Reading package lists...
node0: E: Could not open lock file /var/lib/apt/lists/lock - open (13: Permission denied)
node0: E: Unable to lock directory /var/lib/apt/lists/
node0: W: Problem unlinking the file /var/cache/apt/pkgcache.bin - RemoveCaches (13: Permission denied)
node0: W: Problem unlinking the file /var/cache/apt/srcpkgcache.bin - RemoveCaches (13: Permission denied)
pdsh@node00: node0: ssh exited with exit code 100

... и так далее для всех других узлов.

Проблемой является "способное обновление" команда, которые требуют sudo выполнения, но я не нашел способ передать его с pdsh

Тот же вид команд, запущенных с "настоящим" пользователем root, хорошо работает:

root@master:~ $ pdsh-w root@node [0-3] способное обновление

но в этом случае это означает на самом деле включать "настоящему" пользователю root на всех узлах, которых я хотел бы избежать.

Действительно ли это возможно? Существует ли путь к возрастающим командам полномочий с pdsh, не включая пользователю root? Или есть ли альтернативные инструменты, которые могут сделать это?

Большое спасибо

B.

1
задан 3 April 2020 в 17:30

1 ответ

Необходимо смочь использовать -S отметьте для передачи по каналу пароля к sudo как это:

pdsh -w me@node[0-3] echo "password" | sudo -S apt update

где password Ваш фактический пароль.

Кроме того, можно препятствовать тому, чтобы пароль обнаружился в Вашем ~/.bash_history путем размещения следующей строки в Ваш ~/.bashrc файл:

export HISTIGNORE='*sudo -S*'

и не забывайте получать Ваш ~/.bashrc файл для применения изменений:

source ~/.bashrc

Вы, возможно, должны сделать это на всех машинах.

0
ответ дан 7 April 2020 в 23:21

Другие вопросы по тегам:

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