С помощью 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
так, чтобы вместо этого ожидался пароль целевого пользователя, но люди редко делают это на практике, и вы не упомянули об этом, поэтому я предполагаю, что это не то, что вы (и большинство других читателей )интересует.
(Конечно, обычные предостережения о рисках безопасности, связанных со считыванием пароля из файла, подобного этому, продолжают применяться в той же степени, что и раньше.)
Вам нужно понять сеть, которая у вас есть. Существует (по крайней мере 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 и подсети.