ssh и sftp работают с netns, а sshfs — нет.

Para apreciar la situación, pregúntese: "¿Relativo a qué?". Los archivos .desktopson ​​para uso dentro de contextos GUI, para los cuales no se puede asumir ninguna ruta base sobre la cual construir una ruta absoluta a partir de cualquier ruta relativa que podría considerar colocar en el archivo .desktop.

Las rutas relativas solo son útiles cuando se pueden convertir a una ubicación definida (la ruta absoluta ), y eso requiere un punto de referencia. que no se puede asumir en ningún contexto de GUI genérico.

1
17.05.2019, 15:44
2 ответа

Как уже упоминалось, ответ Филипа , это ожидаемое поведение, поскольку ip netns execвыполняется в отдельном пространстве имен монтирования. Хитрость заключается только в том, чтобы запустить ssh(, который выполняет сетевое взаимодействие )через ip netns exec, а не всю команду sshfs.

То есть вместо этого:

ip netns exec secured sshfs -p PORT USER@HOST: MOUNTPOINT

Сделай это:

sshfs -o ssh_command="ip netns exec secured ssh" -p PORT USER@HOST: MOUNTPOINT
1
27.01.2020, 23:22

Это, к сожалению, ожидаемое поведение.

http://man7.org/linux/man-pages/man8/ip-netns.8.html

ip netns exec automates handling of this configuration, file convention for network namespace unaware applications, by creating a mount namespace and bind mounting all of the per network namespace configure files into their traditional location in /etc.

Это означает, что при использовании ip netns exec <namespace> <command>команда будет выполняться не только в другом сетевом пространстве имен, но и в другом пространстве имен монтирования. Итак, sshfsуспешно монтируется по вашему запросу, но вы не видите этого монтирования.


Обходной путь 1

Вы можете просто открыть командную строку в сети и работать оттуда:

ip netns exec secured bash
sshfs -d -o sshfs_debug -p PORT USER@HOST: MOUNTPOINT
#... use MOUNTPOINT

Обходной путь 2

После создания общего ресурса вы можете повторно -ввести это пространство имен монтирования:

    ip netns exec secured sshfs -d -o sshfs_debug -p PORT USER@HOST: MOUNTPOINT
    ps -ef | grep sshfs
    root 1880     1  0 13:15 ?        00:00:00 sshfs -p PORT USER@HOST:. MOUNTPOINT

    # Now run a command (ls) in the same mount namespace
    nsenter --mount -t 1880 ls

    # You can of course run a command prompt there
    nsenter --mount -t 1880 bash

Обходной путь 3

Обратите внимание, что это, вероятно, будет более сложным, и я не исследовал этот вариант должным образом.

Как сказано в приведенной выше цитате, пространство имен mount используется для дополнительной настройки сети. Но теоретически это не требуется, так как вы можете добиться того же эффекта, используя chroot.

Вы можете поэкспериментировать с вводом сетевого пространства имен с помощью nsenter --netи с помощью chrootдля настройки требуемой конфигурации сети. Это позволит вам выполнить sshfsвнутри вашего основного пространства имен монтирования.

2
27.01.2020, 23:22

Теги

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