Intereting Posts
Создать список ошибок rsync – после факта Как настроить exim для использования SMTP-сервера моего ISP (в системе, отличной от Debian)? Проблемы с crontab CentOS 7 – не обрабатывать рабочие места Как я могу использовать это самое основное использование csplit? MySQL не запускается в Linux Как получить информацию об оборудовании и выбрать драйверы для хранения в ядре, скомпилированном из исходного кода? установка разрешения по умолчанию для каталога виртуальная машина centos не регистрируется на сервере dns интрасети Этот пользователь в настоящее время недоступен – но разрешить запуск скрипта этим пользователем Рабочий процесс создания музыки Linux без ядра с малой задержкой Запуск двоичного файла Solaris на SPARC без оборудования SPARC ssh authentification без пароля больше не работает Как изменить содержимое каталога без sudo? Как этот кронаб интерпретирует «* / N * * * *», где N находится между 31 и 59? Как сделать это LookBehind в Regex?

Запретить приложение изменять настройки терминала?

В последнее время все больше графических приложений (okular и inkscape, среди прочего) начали отключать терминальное эхо, пока они активны. В лучшем случае это кажется излишним (если вы не используете этот процесс, вы не будете вводить его в любом случае, и если бы вы это сделали, кого это волнует? И если вы его изучите, это никак не повлияет). Но хуже всего то, что если вам случается что-то делать неправильно и инстинктивно убивать его с помощью ctrl-C (я делаю это, если я случайно вызываю okular во многих файлах, например), эхо остается отключенным. Это не конец света, но для слепого ввода stty echo каждый раз, когда это происходит, я нервничаю.

Есть ли способ сказать терминалу отключить переключение этих параметров? Я думаю, что можно было бы изменить termcap, но это то, где мои знания об этом заканчиваются. Конечно, это, видимо, делает невидимый пароль видимым, но я хочу знать, как это сделать в любом случае, достаточно одного открытого доступа для защиты от несанкционированного доступа.

echo – это настройка терминального устройства (часть дисциплины в драйвере ядра tty), termcap – это управление терминалом (реальным или эмулятором) с помощью управляющих последовательностей, это две отдельные вещи.

Здесь вы хотите, чтобы приложение не выполняло определенный ioctl . Один из способов – отсоединить его от терминала.

 socat - exec:okular,pty,raw 

Будет работать okular прикрепленный к другому псевдотерминальному устройству, и socat будет передавать данные от вашего терминала к этому.

Чтобы передать произвольные аргументы, с zsh , bash или ksh93 :

 okular() { CODE=$(printf '%q ' exec okular "$@" ) socat - 'system:"eval \"$CODE\"",pty,raw' }