Я пытаюсь запустить команду ssh в другое пространство имен IP. Я могу сделать это прямо сейчас, но он работает от имени пользователя root. Я хочу запустить его как обычный пользователь. Я хочу знать, есть ли способ ввести некорневую оболочку в другое пространство имен сети.

Я знаю, что вы можете использовать это, чтобы ввести корневую оболочку в другое пространство имен:sudo ip netns exec <namespace> bash

В качестве альтернативы, есть ли способ запуска отдельных команд от имени пользователя без полномочий root? Я знаю, что вы можете запускать команды с правами root с помощью:sudo ip netns exec <namespace> <command>

3 ответа3

0

Вместо ssh hostname используйте форму ssh username@hostname . Или вы можете указать другое имя пользователя в файле ~/.ssh/config:

Host foo*
User foobar
0

Команда, которую вы ищете

su --command=' your command ' new_user_name
0

Лучшим решением была бы программа, в которую можно установить setuid root, чтобы она могла выполнять те же действия, что и ip netns exec, чтобы войти в пространство имен, но затем удаляла root для фактического exec. К сожалению, я не могу найти такую вещь.

Следующее лучшее решение - это скрипт:

#! /bin/bash
if [[ "$USER" != "root" || "$SUDO_USER" == "" ]]; then
        echo Call this script from sudo
        exit 1
fi
NS="$1"
shift
ip netns exec "$NS" sudo -u "$SUDO_USER" $*

Поместите это в файл, который доступен для записи только пользователю root и где-нибудь по пути, например /usr /local /bin /nsexec

Затем, чтобы запустить ssh как своего собственного пользователя в пространстве имен, вы можете сделать:

sudo nsexec testnamespace ssh

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .