Сценарий: запись почтового ящика SQL Record на основе пользователей системы

Я получил его, добавив прокси- тэга в файл yum.conf , который изначально отсутствовал.

-121--291182-

Я полагаю, мы говорим об архитектуре x86.

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

Но даже если бы вы могли «создать код для этой таблицы во время загрузки», как вы говорите, это противоречило бы целому назначению общих библиотек. Таким образом, каждый процесс будет иметь «закрытую» копию функций библиотеки в своем адресном пространстве, эффективно увеличивая объем памяти - одной из причин, по которой были созданы общие библиотеки, было решение этой проблемы.

Весь процесс, который вы описываете, довольно сложен, и он будет стоить больше циклов обработки, чем метод PLT, который используется в настоящее время, и, вероятно, введет больше, новых и интересных вопросов безопасности.

-121--291167-

Наиболее вероятно, что MAC-адрес на вашей сетевой плате изменился.

Если виртуальная машина была клонирована или дублирована и она создала новый MAC-адрес, попробуйте установить его таким же образом, как и исходная машина. Скопируйте и вставьте старый MAC-адрес в сеть параметров настройки > advanced и перезапустите виртуальную машину.

(У меня только что была та же ошибка в виртуальной машине CentOS 6.3, клонированной с помощью Virtual Box).

-5
16.12.2018, 14:55
1 ответ

Проблема в том, что обратные кавычки в SQL рассматриваются оболочкой как подстановки команд. Оболочка попытается запустить строку с обратной галочкой как команду, чтобы заменить этот бит выводом этой конкретной команды.

Оболочка делает это, потому что вы echoзаключаете строку в двойные кавычки.

Чтобы решить эту конкретную проблему, экранируйте каждую обратную кавычку как \`.

В идеале вы должны передать SQL как строку в одинарных кавычках, но это будет означать, что переменные не будут раскрыты.

Можно и так, что безопаснее:

printf 'INSERT INTO `mailbox` (`username`, `password`, `name`, `maildir`, `quota`, `local_part`, `domain`, `created`, `modified`, `active`) VALUES ("%s", "%s", "", "%s", 0, "xxx", "xxx", "date --rfc-3339=date", "date --rfc-3339=date", 1);\n' "$username" "$pass" "$xxxx"

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

0
28.01.2020, 05:21

Теги

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