Фундаментальным и очень полезным качеством всех линуксов-юниксов является их модульность и возможность сборки из «кирпичиков» нужных инструментов. Это прекрасно иллюстрируется следующим примером из мануала утилиты netcat
. Эта утилита передачи и приема произвольных данных по протоколам tcp/udp
позволяет сделать элементарный и полностью рабочий шелл для работы с удалённым хостом. И это только используя эту утилиту и стандартные средства Linux вроде pipe
и перенаправления данных.
На удалённой машине создаем трубу
$ rm -f /tmp/f; mkfifo /tmp/f
берем из неё данные, исполняем и результат толкаем в netcat, а его ответ обратно в трубу:
$ cat /tmp/f | /bin/sh -i 2>&1 | nc -l 127.0.0.1 1234 > /tmp/f
В результате получаем упрощённую нешифрованную версию ssh
.
Превосходно! Терминал голыми руками.