Что позволяет пользователю `mysql `записывать файл в /var/log?

В оболочке пробелы имеют значение.

Заменить:

if [$SERVER_NAME == $i]

с:

if [ "$SERVER_NAME" = "$i" ]

Без пробелов оболочка считает, что вы хотите запустить команду с именем [$SERVER_NAME(, например[servr1)с аргументами ==и $i]. С пробелом оболочка запускает команду test , обозначаемую как [.

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

Наконец, хотя bash принимает либо ==, либо =для обозначения строки -, равной внутри [...], другие оболочки понимают только =. Для переносимости рекомендуется использовать =для строки -, равной внутри [...].

0
31.03.2021, 23:31
1 ответ

dв drwxr-x---указывает, что файл mysqlимеет тип каталога. Каталог, скорее всего, был создан root, его владелец и права доступа были изменены. Это была одноразовая работа -во время установки MySQL или чего-то еще.

Кроме того, .в drwxr-xr-x.вместо/var/logуказывает на наличие контекста безопасности SELinux . Я мало знаю о SELinux, но я считаю, что с ним можно предоставить дополнительные разрешения. Если вы считаете, что каталог mysqlбыл создан не совсем root, тогда исследуйте эту зацепку.

Пользователь mysqlможет создавать файлы внутри каталога mysql. Для этого отсутствие разрешения на запись в /var/logне имеет значения.

Этот факт может быть вам более знаком:
В Linux обычные пользователи не могут создавать файлы непосредственно в /home. Тем не менее, у каждого есть собственный каталог внутри /home, где они могут создавать файлы (/home/yves, /home/kamil, /home/bob).

Точно так же mysqlимеет каталог внутри /var/logдля создания там файлов журналов.

4
28.04.2021, 22:54

Теги

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