Почему есть вызов `clear_console` в` ~ / .bash_logout`?

Действия, доступные в файловых системах, перечислены на странице GParted Features . В настоящее время (последняя версия 0.23.0) функции Label и UUID недоступны для файловых систем HFS и HFS +. Это связано с ограничениями основных инструментов файловой системы.

2
21.06.2018, 14:18
3 ответа

Думаю, это связано с конфиденциальностью и безопасностью. Было бы неразумно оставлять открытым для всех то, что вы делали в завершившейся сессии. В моем Debian полная запись в .bash_logout—:

if [ "$SHLVL" = 1 ]; then
    [ -x /usr/bin/clear_console ] && /usr/bin/clear_console -q
fi

$SHLVLравен 1, если это первая оболочка в цепочке. (Вы можете запустить новую оболочку из оболочки, и это увеличит SHLVL. )Когда вы завершаете первый сеанс и, таким образом, передаете консоль и подсказку кому-либо, консоль должна сохранять содержимое вашего сеанса недоступным для неавторизованных глаз, что и происходит.

2
27.01.2020, 21:49

Весь мир хочет, чтобы вы чистили экран.

Как я сказал вhttps://unix.stackexchange.com/a/233855/5132и даже в обсуждении в списке рассылки, на которое косвенно ссылаются & #9786; …

Желание не очищать виртуальный терминал между -выключенным и последующим входом -в значительной степени плывет против течения, как обнаружили Грег Вуледж и другие. Наличие конфиденциальных выходных данных от привилегированных пользователей или боссов, остающихся после выхода -из системы, было проблемой безопасности для Unices (и других операционных систем удаленного -доступа с разделением времени )с 1970-х годов, и для этого требуется много усилий, чтобы отменить все то, что люди приложили для предотвращения этой проблемы. Как вы заметили, для этого они ввели несколько перекрывающихся механизмов.

  • Многие системы имеют стандартную команду clear_consoleв сценариях выхода из оболочки. (Это само по себе проблематично, поскольку плохо работает с графическими программами, работающими на виртуальном терминале ядра #1, и не работает ни с какими другими типами терминалов, виртуальными или реальными.)

    Эту команду необходимо удалить.

  • По умолчанию в программах getty, предназначенных для виртуальных терминалов, таких как mingetty, терминал очищается. (Это происходит перед входом в систему -, что означает, что выходные данные терминала могут остаться нестертыми, если служба входа в систему TTY остановлена. По иронии судьбы, эту функциональность лучше было бы поместить в login, который, благодаря необходимости PAM, все еще работает с выключенным журналом -.)

    Чтобы отключить это, необходимо установить параметр --noclear. В операционных системах systemd это включает в себя запись одного или нескольких файлов переопределения файла модуля, изменение настройки ExecStartили просто указание autovt@.serviceна локальный файл модуля собственной разработки.

  • Поставляемый systemd getty@.serviceсервисный модуль шаблона устанавливает TTYVTDisallocate=yes, который указывает systemd очистить виртуальный терминал ядра. (Это снова не работает ни с какими другими типами терминалов,даже не пользовательское -пространство виртуальных терминалов, что частично отражено в его названии.)

    Это также должно быть удалено, опять же с переопределением или другим шаблоном службы, на который указывает autovt@.service.

Конечно, они не полностью совпадают. mingettyбесполезен для реальных терминалов, подключенных через последовательные устройства; clear_console, как ни странно, является частью пакета оболочки Bourne Again и не вызывается людьми, у которых есть Korn, Z, Almquist, Fish, Watanabe или другая оболочка в качестве интерактивной оболочки входа в учетную запись пользователя; а механизм systemd TTYVTDisallocateнеприменим к не -systemd операционным системам.

Как я уже говорил в ходе обсуждения в списке рассылки несколько лет назад, console_clearвдвойне не нужен. С 2011 года Linux, встроенный -в эмулятор терминала, поддерживает управляющую последовательность ED 3для очистки буфера обратной прокрутки, поэтому возиться с переключением виртуальных терминалов, имеющим эти пагубные побочные -эффекты, в первом случае не нужно. место. Я добавил команду console-clearв набор инструментов nosh несколько лет назад, которая выдает эту управляющую последовательность (и, таким образом, может использоваться не только с Linux, встроенным -в эмулятор терминала, а также для работы через удаленное соединение ). Команда ncurses clearв настоящее время также умеет генерировать соответствующие управляющие последовательности, если так указано в terminfo.

И, конечно же, console-terminal-emulatorстандартно очищает буфер дисплея при зависании терминала.

Дополнительная литература

4
27.01.2020, 21:49

Согласно dlocate, clear_consoleявляется частью (пакета Debian )bash. Он не является частью восходящихbashисточников. Журнал изменений пакета сообщает вам, когда и откуда он появился:

 -- Matthias Klose   Thu, 23 Mar 2006 01:16:22 +0100

bash (3.1-3) unstable; urgency=low

...

  Merge from Ubuntu:
  * clear_console: New helper program to clear the console, including
    the scrollback buffer.
  * /etc/skel/.bash_logout: Install it again and use clear_console.
    Ubuntu #29405. Closes: #331504.

Упомянутые отчеты об ошибках -указывают причину, по которой они были добавлены:

  • Ubuntu #29405 , январь 2006 г. 'clear' не запускается перед 'exit'

    When logging out of a F1-F6 terminal, all of your existing output of activies are left on the screen even when the next login screen appears. The screen should be cleared before the new login appears, so private output won't be viewed by other users.

  • Debian #331504 , октябрь 2005 г. bash :Укажите файл /etc/skel/.bash по умолчанию _выход из системы

    It would be nice if bash would provide a default.bash_logout in /etc/skel for users to use by default to clean up the screen when login through console this is common request, specially in multi-user environments where people don't want others to see what they were working on.

Кстати, это упоминалось вместе с ncurses здесь:

  • Red Hat #815790 [RFE -конфиденциальность] очистить консоль , указав
  • Debian #376841добавьте очистку _консоли в ncurses -bin

Первая проблема была устранена путем адаптации функцииxtermпатча #107 в 1999 году (для консоли Linux ), а вторая никуда не исчезла из-за несовместимости лицензий.

4
27.01.2020, 21:49

Теги

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