Описание тега apr
Поиск и awk и
плохие идеи
Источники такого рода файлы с shell-скрипт переводчика является плохой идеей, так как он вводит еще одно место, где может скрываться вредоносный скрипт будет выполняться с правами суперпользователя разрешения, или можно ввести такие вещи, как переопределение переменных, таких как путь
, Лэнг
, и в переменной LD_LIBRARY_PATH
.
% кошка /и т. д./ОС-релиз PRETTY_NAME="Дебиан ГНУ/Линукс 9 (стрейч диверсионных \$путь)" Имя="Дебиан ГНУ/Линукс" VERSION_ID="9" Версия="9 (стрейч)" ИД=дебиан HOME_URL="https://www.debian.org/" SUPPORT_URL="https://www.debian.org/support" BUG_REPORT_URL="https://bugs.debian.org/" Эхо 1>&2 'Установите -м 0644 /и т. д./тень /дома/злоумышленник/и т. д/ 2>/Дев/нуль' Путь="/домашний/злоумышленник/ОГРН:${путь}" % % ( источник /и т. д./ОС-релиз ; команда -в старт-стоп-демона ; ) установите -м 0644 /и т. д./тень /дома/злоумышленник/и т. д/ 2>/dev/нуль /дома/злоумышленник/ОГРН/старт-стоп-демона %
Источники фактически нарушает одно из определенной семантики для файл/etc/ОС-релиз
, который заключается в том, что (цитирую свою инструкцию) "переменная расширения явно не поддерживается".
Точно так же, как awk
, поставляемого в Archemar ответ не правильно цитируешь, и любое значение может быть заключено в кавычки. Обратите внимание, как Archemar ответ не рассматривает версию
значения в вопросе, в котором указано на awk
скрипт не дает правильное значение, потому что он ошибочно сохраняет цитируешь и не обрабатывает escape-последовательности.
% на awk -Ф= '$1=="версия" { печати $2 ;}' /и т. д./ОС-релиз "9 (стрейч)" % на awk -Е= '$1=="PRETTY_NAME" { печати $2 ;}' /и т. д./ОС-релиз "В Debian 9 (стретч с подрывной \$путь)" %
файл /etc/ОС-релиз
- это на самом деле разрешено довольно широкую свободу в цитировании, а также требует, чтобы последовательности обрабатываются должным образом. на awk
- это не правильный инструмент для работы здесь.
Есть и другие, более тонкие, такие проблемы, как утечка уже набор переменных на результаты, если фактический ключ стремились отсутствует файл.
% ( источник /и т. д./ОС-релиз ; Эхо Лэнг$; ) установите -м 0644 /и т. д./тень /дома/злоумышленник/и т. д/ 2>/dev/нуль en_GB.В UTF-8 %
Есть также факт, что если идентификатор
или PRETTY_NAME
не хватает, они определяются как значения по умолчанию. И на вершине, что, есть запасной вариант в каталоге/usr/lib в/ОС-релиз
дело.
Обучения от других людей
Файлы, содержащие ключевые равняется стоимости заданий, с ш
-стиль кавычек, спасаясь, и комментариями, довольно распространенная вещь. Некоторые языки программирования имеют библиотеки функций для работы с ними напрямую. Урок в OpenBSD правила смены в/etc/файл RC.конф
в OpenBSD 5.6, что это более мудрый, чтобы использовать такие библиотечные функции, если таковые имеются, или специальные инструменты, что нет возможности полного командный интерпретатор, для обработки таких файлов.
С shell-скрипты, я использую инструмент под названием Читать-конф
обработать такие файлы:
% read_os() { если тест -р в /etc/ОС-релиз тогда clearenv setenv "$1" "$2" читать-Conf в файле /etc/ОС-релиз "Командной в printenv`" "$1" еще clearenv setenv "$1" "$2" читать-Conf в каталоге /usr/lib в/ОС-релиз "`команда -в printenv`" "$1" интернет } % read_os идентификатор Линукс в Debian % read_os версия 9 (стрейч) % read_os PRETTY_NAME Линукс Дистрибутив Debian GNU/Линукс 9 (стретч с подрывной $путь) % путь read_os /главная/злоумышленник/ОГРН:${путь} read_os % Лэнг %
Обратите внимание на аккуратное использование командной В
чтобы избежать поиск printenv
после того, как зараженный файл конфигурации был злобно настроены по измененному пути
. (Один из этих дней, я добавлю встроенная printenv
, что читать-конф
можете цепочке.)
Дальнейшее чтение
- Тео де Raadt и соавт. (2014-11-01). В OpenBSD 5.6 Изменений. В OpenBSD.
- Джонатан де Бойн Поллард (2018). "
читай-конф
". Руководство по эксплуатации. набор инструментов нош. Программные. - Джонатан де Бойн Поллард (2018). "
clearenv
". Руководство по эксплуатации. набор инструментов нош. Программные. - Джонатан де Бойн Поллард (2018). "
setenv
". Руководство по эксплуатации. набор инструментов нош. Программные. - Джонатан де Бойн Поллард (2018). "
printenv
". Руководство по эксплуатации. набор инструментов нош. Программные.