Как поместить файл сокета ssh-agent в каталог, отличный от / tmp - PullRequest
0 голосов
/ 24 апреля 2018

Я бы хотел поместить файл сокета, который создает ssh-agent, в каталог, отличный от / tmp. Если вы посмотрите на справочную страницу, там упоминается $ TMPDIR, поэтому можно сделать вывод, что установка этой переменной среды позволит это сделать. Я попробовал это:

$ export TMPDIR=$HOME/.ssh
$ ssh-agent
SSH_AUTH_SOCK=/tmp/ssh-gZSxgCXIOMVK/agent.4287; export SSH_AUTH_SOCK;
SSH_AGENT_PID=4288; export SSH_AGENT_PID;
echo Agent pid 4288;

и

$ TMPDIR=$HOME/.ssh ssh-agent
SSH_AUTH_SOCK=/tmp/ssh-cv6U38tey4XQ/agent.5160; export SSH_AUTH_SOCK;
SSH_AGENT_PID=5161; export SSH_AGENT_PID;
echo Agent pid 5161;

Как видите, ssh-agent игнорирует TMPDIR и помещает файл сокета в /tmp.

.

Я посмотрел (я клонировал его, затем запустил grep) источник ssh-agent (git@github.com: openssh / openssh-portable.git) и искал TMPDIR. У меня был один удар в функции mktemp_proto (misc.c: 1401). Он ищет переменную среды TMPDIR и использует ее, если она определена, в противном случае использует / tmp. Вызывающая сторона mktemp выглядит так, как будто она вызывает, затем создает каталог сокета, а затем создает файл сокета. Это выглядит хорошо.

Моя следующая мысль заключалась в том, что используемая мной версия старше, чем когда эта функция была добавлена. Глядя на репозиторий github, упомянутый выше, я определил, что он был добавлен в версии 5.8 2011/01/12. Запуск строк на исполняемом файле

$ cat /usr/bin/ssh-agent | strings | grep OpenSSH

выводит несколько строк, включая эту

OpenSSH_6.6.1

Итак, исполняемый файл - не менее 6.6.1. Выполнение подобного grep на TMPDIR находит один удар. Итак, этот исполняемый файл должен использовать TMPDIR.

Я сделал все это на Ubuntu 14.04 LTS.

Итак, мой вопрос: как мне заставить ssh-agent создать файл сокета в каталоге по моему выбору?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...