3. Непонимание происходящего.
Вы не вмешиваетесь в текстовые сеансы разных пользователей. Здесь только один пользователь ведет сеанс, назовем ее Алиса. Алиса зарегистрирована на консоли и запускает кучу приложений, включая некоторые эмуляторы терминалов.
В одном из этих терминалов Алиса выполняет sudo -u bob sh
. Теперь есть оболочка, запущенная под учетной записью Боба, но терминал предоставлен Алисой. Процесс эмулятора терминала запущен от имени пользователя alice
.
Когда вы запускаете cat /dev/ttys42
от имени Алисы, вы подглядываете и даже вмешиваетесь в работу эмулятора терминала, который выполняется Алисой, а не в работу оболочки, которую выполняет Боб.
Вы наблюдаете странные явления при наборе текста, потому что каждый байт передается несколько случайным образом любому из процессов, читающих ввод с терминала. Обычно в терминале существует только один процесс переднего плана: механизм управления заданиями и, в частности, управление группой процессов переднего плана и сигнал SIGTTIN обеспечивают это.
Обратите внимание, что /dev/ttys42
принадлежит Алисе. Если Боб запускает эмулятор терминала, то /dev/ttys42
будет принадлежать Бобу и не будет доступен для чтения или записи Алисе, поэтому Алиса не сможет вмешаться на этом уровне. Однако если этот терминал находится в GUI-сессии Алисы, то Алиса может вмешаться на уровне GUI (например, подсматривая или вводя нажатия клавиш, или заставляя Боба поверить, что он взаимодействует с терминалом, который он запустил, когда на самом деле он взаимодействует с приложением, выполняемым Алисой).
Поскольку страница не показывает HTTP 404, это означает, что страница менеджера запущена и работает.
Добавьте в свой server.xml
после элементов <Listener/>
и перед элементом <Service/>
(, скопированным изapache-tomcat-9.0.20/conf/server.xml
):
<GlobalNamingResources>
<!-- Editable user database that can also be used by
UserDatabaseRealm to authenticate users
-->
<Resource name="UserDatabase" auth="Container"
type="org.apache.catalina.UserDatabase"
description="User database that can be updated and saved"
factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
pathname="conf/tomcat-users.xml" />
</GlobalNamingResources>
Вам необходимо добавить пользователя с паролем и ролью manager-gui
в tomcat-users.xml
для доступа к странице /manager/html
.
Минималистичный образецtomcat-users.xml
:
<?xml version="1.0" encoding="UTF-8"?>
<tomcat-users xmlns="http://tomcat.apache.org/xml"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://tomcat.apache.org/xml tomcat-users.xsd"
version="1.0">
<user username="admin" password="secret" roles="manager-gui"/>
</tomcat-users>
Ваш server.xml
недействителен. Вы не можете вложить <Realm.../>
внутри <Service... />
. Вы можете вкладывать <Realm.../>
только внутрь <Engine.../>
, <Host.../>
или <Context.../>
.