ssh установлен, но я получаю ошибку: Не удалось запустить ssh.service: Блок ssh.service не найден

Linux (как и многие другие варианты Unix) поддерживает передачу только одного аргумента интерпретатору скрипта. (Интерпретатором является программа в строке shebang.) Сценарий, начинающийся с #!/usr/bin/sudo -u bob -- /bin/bash, выполняется вызовом /usr/bin/sudo с аргументами -u bob -- /bin/bash и /home/alice/script.sh.

Одно из решений - использовать скрипт-обертку: сделать /home/alice/script.sh contain

#!/bin/sh
exec sudo -u bob /home/alice/script.real

и поместить код в /home/alice.script.real, начиная с #!/bin/bash и сделать так, чтобы правило sudo ссылалось на /home/alice.script.real.

Другое решение - заставить сценарий повторно выполнить себя. Вам нужно быть осторожным, чтобы правильно определить желательное условие, иначе вы рискуете создать бесконечный цикл.

#!/bin/bash
if ((EUID != 123)); then
  exec sudo -u \#123 /home/alice/script.sh
fi

(где 123 - идентификатор пользователя bob)

Простое решение - сказать людям, чтобы они запускали sudo -u bob /home/alice/script.sh вместо того, чтобы запускать сценарий напрямую. Вы можете предоставить псевдонимы оболочки, .desktop файлы и т.д.

0
03.06.2019, 18:32
1 ответ

Вот как это можно сделать:

cat query.bin | socat -x - UDP:8.8.8.8:53 > result.bin
-1
28.01.2020, 05:05

Теги

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