Quando accedo a una macchina, posso scoprire i dispositivi pseudo-terminali di ciascun utente dall'output di w
. Essendo un amministratore di sistema, è possibile per me intercettare su questo terminale senza che l'utente ne sia consapevole? In altre parole, vorrei vedere tutto ciò che veniva fatto su questo terminale come output sul mio terminale.
Si prega di notare quanto segue:
- Questo non è per un caso pratico di monitoraggio delle attività degli utenti: sono consapevole che esistono strumenti di controllo del sistema per questo. Sono solo curioso di sapere se si può fare.
- Sono consapevole di questa domanda e non sembra coprire ciò che sto chiedendo in quanto tutte le soluzioni suggeriscono che ci sono o invasive (l'utente sarebbe consapevole di ciò che sto facendo) o producono troppo rumore (il
strace
soluzione). L'unica soluzione che si avvicina è quella che suggerisce l'utilizzogdb
. Ma questo mi fa vedere solo stdout dell'altro terminale.
Quello che ho provato
Ho provato questo dal mio terminale:
tee /dev/pts/user_pts </dev/pts/user_pts
Questo mi permette di vedere ogni carattere digitato dall'utente nell'altro pseudo-terminale mentre lo digita. Il problema è che, ogni pochi caratteri, "salterebbe": mostrerebbe un personaggio canaglia su un dispositivo terminale ma non sull'altro. Impedisce inoltre l'esecuzione di qualsiasi comando dal pseudo terminale dell'utente. Non sono davvero sicuro del perché questo accada e se esista un modo per migliorarlo.
Quello che mi piacerebbe vedere
USER TERMINAL | MY TERMINAL
$ echo "Test" | # slick_command_here
Test | echo "Test"
$ | Test
ttysnoop
o probabilmentepeekfd
.