Поддерживают ли оболочки, кроме Bash и Zsh, цитирование ANSI-C? Например, $'string'

Если вы собираетесь сделать это, как минимум, пожалуйста:

  1. Создайте белый список: ограничьте доступ к порту 443 только с известных IP-адресов
  2. Отключите вход с паролем и используйте только ключи SSH

Вы можете открыть в противном случае вы подвергаетесь опасности. Что, если кто-то обнаружит ошибку безопасности, которая позволяет ему автоматически входить в систему при получении приглашения SSH? Ваш белый список снизит этот риск в будущем.

Отключив парольные входы в SSH, если злоумышленнику из белого списка удастся получить доступ к вашему серверу, будет намного сложнее взломать вход.

Это хорошая гигиена безопасности. Если вы обычный студент университета, шансы на нападение могут быть низкими, но зачем подвергать себя ненужному риску?

13
18.06.2017, 20:35
1 ответ

$'…' — это функция ksh93, которая также присутствует в zsh, bash, mksh, FreeBSD sh и в некоторых сборках BusyBox sh (BusyBox ash, созданных с помощьюENABLE_ASH_BASH_COMPAT). Его еще нет в языке POSIX sh. Общие Bourne -, такие как оболочки, которые не имеют его, включают тире (, который /bin/shпо умолчанию в Ubuntu среди прочих ), ksh88, оболочка Bourne, NetBSD sh, yash, производные от pdksh, отличные от mksh и некоторые сборки BusyBox.

Портативный способ получить обратную косую черту -и восьмеричную обратную косую черту -, проанализированные как управляющие символы, заключается в использованииprintf. Он присутствует во всех системах, совместимых с POSIX -.

esc=$(printf '\033') # assuming an ASCII (as opposed to EBCDIC) system
col_green="${esc}[32;01m"

Обратите внимание, что \eне является переносимым. Он поддерживается многими реализациями printf, но не той, что в тире¹. Вместо этого используйте восьмеричный код.

¹ Поддерживается в Debian и его производных, поставляемых как минимум 0.5.8 -2.4, например. начиная с Debian Stretch и Ubuntu 17.04.

19
27.01.2020, 19:53

Теги

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