/etc/profile.d и “ssh-t”

Вы попытались обеспечить script-security 3 опция позволить openvpn запускать внешние программы?

Хотя лучшее решение для запроса пароля состояло бы в том, чтобы, вероятно, установить OpenVPN для слушания на порте управления, и быть содержат. Можно записать сценарий/интерфейс, который соберет учетные данные от пользователя, и затем можно сделать сокетное соединение и обеспечить учетные данные и выпустить хранение.

3
задан 24 October 2012 в 14:31
3 ответа

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

ssh -t remote1 "/bin/bash --login -c some-script"

Это заставляет оболочку входа в систему, которая запускает сценарии профиля.

0
ответ дан 3 December 2019 в 08:21

Ответы на все вопросы можно найти в разделе «ВЫЗОВ» на странице руководства bash:

Когда bash вызывается как интерактивная оболочка входа или как неинтерактивная оболочка с параметром --login сначала читает и выполняет команды из файла / etc / profile, если этот файл существует. После чтения этого файла он ищет ~ / .bash_profile, ~ / .bash_login, и ~ / .profile, в этом порядке, а также читает и выполняет команды из первый существующий и читаемый. Параметр --noprofile может быть используется при запуске оболочки для предотвращения этого поведения.

Когда оболочка входа в систему завершается, bash считывает и выполняет команды из файла ~ / .bash_logout, если он существует.

При запуске интерактивной оболочки, которая не является оболочкой входа в систему, bash читает и выполняет команды из ~ / .bashrc, если этот файл существует. Эта можно запретить с помощью параметра --norc. Параметр файла --rcfile заставит bash читать и выполнять команды из файла вместо ~ / .bashrc.

Как видите, интерактивные оболочки исходят только из .bashrc , и часто .bash_profile будет получен оттуда, что объясняет порядок, который вы видите .

Очень часто в этих файлах также есть условие, чтобы анализировать определенные разделы только для интерактивных оболочек ( [[$ - == * i *]] ), что объясняет, почему некоторые части могут появляться отсутствует для неинтерактивных оболочек.

0
ответ дан 3 December 2019 в 08:21

Разница между

ssh remote1 echo '$PATH'

и

ssh -t remote1 echo '$PATH'

также объясняется на странице руководства bash:

Bash пытается определить, когда он выполняется со стандартным вводом, подключенным к сетевое соединение, как при выполнении удаленным демоном оболочки, обычно rshd , или демоном безопасной оболочки sshd . Если bash определяет, что он запускается таким образом, он читает и выполняет команды из ~ / .bashrc [я предполагаю, что следует прочитать /etc/bash.bashrc ] и ~ / .bashrc , если эти файлы существуют и доступны для чтения.

В первом примере стандартный ввод bash подключен к сетевому соединению, поэтому он запускает ~ /. bashrc . Во втором случае его stdin поступает от псевдотерминала, поэтому это не так.

0
ответ дан 3 December 2019 в 08:21

Теги

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