UNIX KSH -Использование двойных кавычек или отсутствие кавычек при присвоении строк с подстановочными знаками переменной?

Это плохая идея.

Ведение журнала на системную консоль — это особый случай направления вывода журнала на любой реальный терминал или виртуальное терминальное устройство ядра. Там нет когда-либо -растущего буфера ядра. То, что прокручивается в верхней части экрана терминала, теряется.

Однако это плохая идея для регистрации WWW-сервера.

Извлеките урок из " Bash отображает тарабарщину после определенного входящего запроса " и не предоставляет злоумышленникам средства для записи произвольных данных на ваши терминалы, особенно на вашу системную консоль .

И не думайте, что безопасность в локальной сети не нужна. Всегда защищенные серверы, принимающие данные по любой сети.

Стандартная ошибка и стандартный вывод вашего процесса должны быть подключены к каналу, другой конец которого является одним из инструментов, упомянутых вhttps://unix.stackexchange.com/a/505854/5132:

./thing-to-be-logged 2>&1 | cyclog logs/

Эти инструменты гарантируют, что файлы в logs/занимают не более указанного объема дискового пространства, и выполняют ротацию журналов автоматически и в нужных точках. Просмотр журналов даже с помощью чего-то такого простого, как less, гарантирует, что предоставленные злоумышленником -данные очищены (до уровня ), а не просто переданы на терминальное устройство, как -. (Конечно, не используйте опцию -Rдля less.)

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

  • Джонатан де Бойн Поллард (2018 ). "linux -консоль ".Устройства . нош набор инструментов.
  • Джонатан де Бойн Поллард (2016 ). " Ведение журнала ". Направляющая ноша . Программное обеспечение.
  • Джонатан де Бойн Поллард (2015 ). " Ведение журнала ". Семейство daemontools . Часто задаваемые ответы.
1
29.06.2020, 12:32
1 ответ

Подстановочные знаки в именах файлов не имеют значения для оболочки. Расширение имени файла и разбиение на слова не происходит в обычном назначении (не -массива ), независимо от того, есть ли там кавычки или нет.

Хотя во многих других контекстах вам понадобятся кавычки, и они также понадобятся вам в присваивании, если значение содержит пробелы или операторы оболочки (, например. ;, (, >и т. д. ). Так что некоторые могут захотеть использовать их и здесь, просто чтобы везде использовать один и тот же обычай.

См. также:Когда необходимо двойное -цитирование?

3
18.03.2021, 23:23

Теги

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