Как мне записывать весь ввод и вывод терминала в локальный файл по умолчанию для каждого сеанса?

Программа не может различить EOF, означающий "пора заканчивать", и EOF, означающий "запись завершена, но может быть больше информации от кого-то другого". ".

Если у вас есть возможность изменить поведение вашей программы, то сделайте чтение в бесконечном цикле (одна итерация длится до EOF) и отправьте ей определенную командную строку, которая означает «время выхода». Отправка этой строки будет задачей команды send_eof в вашем вопросе.

Другой вариант:

( echo some stuff; cat more_stuff.txt ) >P

или

{ echo some stuff; cat more_stuff.txt; } >P
0
30.06.2016, 00:59
2 ответа

Если вы действительно захотите, вы можете создать программу (или сценарий оболочки), которая вызывает скрипт , записывающий в файл "машинописного текста" с меткой времени (и, в свою очередь, вызывающий вашу настоящую оболочку) и делает , что программирует вашу оболочку по умолчанию в / etc / passwd .

Есть несколько подводных камней:

  • вам, возможно, придется добавить эту программу в / etc / shells
  • , при этом будет установлена ​​переменная среды SHELL , которая используется по-разному. . Переопределите это, чтобы избежать зацикливания (и другого неправильного поведения):
    #!/bin/sh
    SHELL=/bin/bash
    export SHELL
    script -c "$SHELL" $HOME/consoleOutput_$(whoami)_$(date +'%Y_%m_%d_%H_%M_%S_%N').txt
2
28.01.2020, 02:17

Если ваша цель - контролировать систему, вам понадобится pam_tty_audit . Как следует из названия, pam_tty_audit - это модуль pam , который при правильной настройке вызывается каждый раз, когда пользователь открывает сеанс (и получает TTY). Модуль записывает весь ввод и вывод и отправляет все, что записывает, демону auditd . Затем вы можете выполнить запросы к демону auditd для просмотра журналов.

RedHat предоставляет прекрасное руководство по началу работы с pam_tty_audit : https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/6/html/Security_Guide/sec_Configuring_PAM .html
Для дистрибутивов, не основанных на RedHat или Fedora, руководство по-прежнему работает, но может потребоваться небольшая настройка имен файлов в /etc/pam.d/ .

Обратите внимание, что это не полностью надежно. Есть способы выполнять команды без TTY.Например, при подключении через ssh вы можете выполнить ssh foo.example.com bash -i , и поскольку была указана команда, TTY не выделяется. Хотя есть кое-что, что вы можете сделать, чтобы этого избежать.

Вы также хотите убедиться, что доступ к журналу защищен. pam_tty_audit записи ВСЕ TTY действия, включая пароли, которые вы вводите.

3
28.01.2020, 02:17

Теги

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