Как разговаривать с устройством ответвления в Linux с другого компьютера

С помощью sudo -Siu newuser < password.txtстандартный ввод для команды sudo -Siu newuserберется из password.txt. Опция -Sзаставляет sudoсчитывать пароль из стандартного ввода и, следовательно, из password.txt. Но стандартный ввод для последующей оболочки остается перенаправленным.

Когда ввод перенаправляется в оболочку --, независимо от того, работает ли она в интерактивном режиме --и достигается конец ввода, оболочка завершает работу. Это похоже на запуск скрипта и достижение им конца файла или на нажатие Ctrl + D , чтобы ваш терминал указывал конец -ввода -..

Следовательно, вы запускаете оболочку, ввод которой перенаправляется из файла, содержимое которого, вероятно, уже в основном прочитано. Доходит до конца и гаснет. На самом деле ваша цель состоит в том, чтобы оболочка, которую вы запускаете с sudo, получала ввод с вашего терминала, а не из этого файла.

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

sudo -Sv < password.txt

Сделав это, вы можете просто бежать:

sudo -iu newuser

Если вы запустите вторую команду вскоре после первой, то ваша временная метка останется действительной, и вам вообще не нужно будет вводить пароль.

Обратите внимание, что когда вы запускаете команду от имени именованного пользователя с sudoс -u, она работает так же, как и при запуске команды от имени пользователя root (, что обычно выполняется без-u).Пароль, который он запрашивает у вас, — это ваш пароль , а не пароль целевого пользователя, поэтому команда, которая просто выполняет аутентификацию (с помощью -v), не упоминает другого пользователя. возможно настроить sudoтак, чтобы вместо этого ожидался пароль целевого пользователя, но люди редко делают это на практике, и вы не упомянули об этом, поэтому я предполагаю, что это не то, что вы (и большинство других читателей )интересует.

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

0
09.07.2019, 04:02
1 ответ

Вам нужно понять сеть, которая у вас есть. Существует (по крайней мере 2 )точек, где связь может быть прервана, и вам необходимо устранить их все, прежде чем вы сможете получить доступ к устройству извне.

Судя по описанию, у вас есть TAP-устройство на вашей локальной машине, которое слушает сервер. Обычно вы не сможете получить доступ к этому TAP-интерфейсу из-за пределов вашей Linux-машины, даже из другой виртуальной машины в сети VMWare. Решение состоит в том, чтобы подключить TAP к ethernet-интерфейсу Linux (, который должен быть eth0, если только у вас нет глупой схемы RedHat; используйте ifconfig, чтобы быть уверенным)

Итак, сначала создайте мост:

ip link add br0 type bridge

Затем добавьте устройства в мост (Я предполагаю, что это tap0, так же как я предполагал, что это должен быть eth0):

ip link set tap0 master br0
ip link set dev eth0 down
ip addr flush dev eth0 
ip link set dev eth0 up
ip link set eth0 master br0

И убедитесь, что мост поднят:

ip link set dev br0 up

Теперь вы сможете получить доступ к серверу на tap0 с виртуальной машины в той же виртуальной сети VMWare. Вы должны проверить это, запустив -вторую виртуальную машину.

В вашем виртуальном Linux-боксе теперь есть следующая сеть:

+------+      +-------+
| tap0 |      | eth0  |
+------+      +-------+
   |             |   |
   +-------------+   +--------
      bridge 0         "outside world"

Далее :как эта виртуальная сеть VMWare соединяется с внешним миром? Эта сеть также подключена к вашему Mac? Или это NAT? В этом случае вы должны указать некоторые правила переадресации портов. Не уверен, как это работает в VMWare, потому что, как и многие, я использую VirtualBox.

В VirtualBox «внешний мир» может быть несколькими вещами, наиболее важными из которых являются:

  • Bridged Adapter :, как и в случае с интерфейсом tap -, виртуальный интерфейс подключен к внешнему интерфейсу хоста, на котором работает VirtualBox. Виртуальная машина будет иметь собственный внешний IP-адрес.

  • NAT :виртуальный интерфейс соединен с внешним, но через NAT (Network Address Translation ).Именно так большинство маршрутизаторов SOHO DSL подключаются к Интернету. Снаружи есть один IP-адрес, и если вы хотите получить доступ к машине извне, вы должны настроить -переадресацию портов (никогда этого не делали; не уверен, что это возможно в VirtualBox)

  • Только хост -:Отдельная сеть, которая должна быть доступна только в среде VirtualBox.

Таким образом, в VirtualBox мостовой адаптер лучше всего подходит для вас.

Предполагая, что вы используете мост в VirtualBox, теперь у вас будет следующая сеть:

+------+      +-----+     }
| tap0 |      | eth0|     }
+------+      +-----+     }  in your Linux virtual machine
   |     br0    |  |      }
   +------------+  |      }
                   |
Your host (mac)    |
-----------------+ |
                 | |
              +-----------+     physical outside world
              | mac's eth0|--------------
              +-----------+

Другими вопросами, на которые следует обратить внимание, являются ваш тарифный план IP и подсети.

2
28.01.2020, 02:39

Теги

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