При входе в систему я могу узнать псевдо-терминальное устройство (я) каждого пользователя по выходным данным w
. Будучи системным администратором, могу ли я подслушивать этот терминал без ведома пользователя? Другими словами, я хотел бы видеть все, что делается на этом терминале, как вывод на моем собственном терминале.
Пожалуйста, обратите внимание на следующее:
- Это не для практического использования мониторинга пользовательских действий: я знаю, что для этого есть инструменты системного аудита. Мне просто любопытно, можно ли это сделать.
- Мне известен этот вопрос, и он, кажется, не охватывает то, о чем я спрашиваю, поскольку все предлагаемые решения либо инвазивны (пользователь будет знать о том, что я делаю), либо производят слишком много шума (
strace
решение). Единственное решение, которое подходит ближе, - это то, которое предлагает использоватьgdb
. Но это только позволяет мне видеть стандартный вывод другого терминала.
Что я пробовал
Я попробовал это из моего терминала:
tee /dev/pts/user_pts </dev/pts/user_pts
Это позволяет мне видеть каждый символ, который пользователь вводит в другом псевдотерминале по мере его ввода. Проблема в том, что каждые несколько символов «пропускаются»: на одном оконечном устройстве будет отображаться один мошеннический символ, а на другом - нет. Это также предотвращает выполнение любых команд с псевдотерминального устройства пользователя. Я не совсем уверен, почему это происходит и есть ли способ улучшить это.
Что бы я хотел увидеть
USER TERMINAL | MY TERMINAL
$ echo "Test" | # slick_command_here
Test | echo "Test"
$ | Test
ttysnoop
или , возможноpeekfd
.