Какое-либо специальное разрешение ssh удаленная команда, работающая над файлом FIFO (иначе именованный канал)?

Вы не уточняли то, что вы хотели запустить в Chroot. Таким образом, он пытается начать оболочку. Он также не знает, какая оболочка должна начинаться, поэтому он пытается использовать один из переменной $ Shell переменной среды, которая, по-видимому, / usr / bin / zsh . Эта оболочка, по-видимому, не существует внутри вашей Chroot.

Расскажите Chroot То, что вы хотите запустить:

chroot /mnt /bin/bash

В зависимости от того, что вы пытаетесь сделать, у вас также могут быть другие проблемы, если вы Mount -O Bind несколько вещей от хозяина, такого как / dev , / dev / pts , / sys , & / proc .

1
07.03.2015, 01:53
2 ответа

SSH запускает команду оболочки. Он объединяет свои параметры пробелами между промежутками и выполняет удаленно. Таким образом, когда вы вводите это в локальной оболочке

ssh rundeck@nagios1 sudo su - root -c 'printf "Disable_Notification;web01;App:Tomcat:Log:webapp" >> /opt/nagios/nagios.cmd'

, это то, что выполняется в удаленной оболочке:

sudo su - root -c printf "Disable_Notification;web01;App:Tomcat:Log:webapp" >> /opt/nagios/nagios.cmd

, как вы можете видеть перенаправление, применяется во внешней удаленной оболочке, вызываемой SSHD , не в Внутренняя оболочка запущена SU . Вам нужен дополнительный слой цитирования: один, чтобы защитить специальные символы от локальной оболочки, чтобы они достигли удаленной оболочки, и он для защиты специальных символов от внешней удаленной оболочки, чтобы они достигли внутренней удаленной оболочки, вызываемые (плюс третий вокруг строки, чтобы распечатать, чтобы она проходила через эту внутреннюю оболочку).

ssh rundeck@nagios1 'sudo su - root -c '\''printf "Disable_Notification;web01;App:Tomcat:Log:webapp" >> /opt/nagios/nagios.cmd'\'

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

ssh rundeck@nagios1 'printf "Disable_Notification;web01;App:Tomcat:Log:webapp" | sudo tee /opt/nagios/nagios.cmd'

И вы можете даже сделать печать локально, что исключает другой уровень необходимой цитирования.

printf "Disable_Notification;web01;App:Tomcat:Log:webapp" | ssh rundeck@nagios1 sudo tee /opt/nagios/nagios.cmd

и вместо использования Печать ... | ... Вы можете использовать здесь строку (при условии, что ваша локальная оболочка ksh, bash или zsh).

ssh rundeck@nagios1 sudo tee /opt/nagios/nagios.cmd <<<"Disable_Notification;web01;App:Tomcat:Log:webapp"
0
28.01.2020, 01:43

Обратитесь к этому ответу , в сочетании с некоторыми другими флагами Sudo и SSH для выделения псевдо-TTY.

ssh -t rundeck@nagios1 "sudo -u root sh -c 'printf \"Disable_Notification;web01;App:Tomcat:Log:webapp\" >> /opt/nagios/nagios.cmd'"
0
28.01.2020, 01:43

Теги

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