Под каким пользователем пассивный агент лезет в MySQL?

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Под каким пользователем пассивный агент лезет в MySQL?

    Приветствую.
    Столкнулся с такой непонятной ситуацией.
    На сервере с Centos 6 перезапускаю zabbix агента
    Code:
    sudo service zabbix-agent restart
    Shutting down Zabbix agent:                                [  OK  ]
    Starting Zabbix agent:                                     [  OK  ]
    Все Ок, агент запущен от пользователя zabbix
    Code:
     ps axu | grep -i zabb
    zabbix    17957  0.0  0.0  75432  1244 ?        S    12:45   0:00 /usr/sbin/zabbix_agentd -c /etc/zabbix/zabbix_agentd.conf
    zabbix    17959  0.0  0.0  75432  1404 ?        S    12:45   0:00 /usr/sbin/zabbix_agentd: collector [idle 1 sec]
    zabbix    17960  0.0  0.0  75432  2276 ?        S    12:45   0:00 /usr/sbin/zabbix_agentd: listener #1 [waiting for connection]
    Делаю простенький пассивный элемент данных:

    system.run[''whoami;id; mysql'']

    И в выхлопе получаю:
    Code:
    zabbix
    uid=367962(zabbix) gid=496(employee) groups=496(employee)
    ERROR 1045 (28000): Access denied for user 'Alex_UUU'@'localhost' (using password: NO)
    Т.е. агент работает под пользователем zabbix, ИД пользователя правильные. А вот в MySQL он пытается зайти под пользователем, который перезагружал агента последний раз.
    По идее он должен был в мускуль заходить под юзером zabbix И, например, выдать ошибку

    ERROR 1045 (28000): Access denied for user 'zabbix'@'localhost' (using password: NO)

    Как такое возможно и что сделать?

  • Alex_UUU
    commented on 's reply
    У меня в основном Центос 6. В семерке
    [Service]
    Environment="CONFFILE=/etc/zabbix/zabbix_agentd.conf"
    EnvironmentFile=-/etc/sysconfig/zabbix-agent

    Т.е HOME не передается. Добавил через файл переменных. И все стало Ок.

    Всем спасибо.

  • kidoro
    replied
    а что у вас в zabbix-agent.service?
    я в смысле, какая связь, под кем запускается служба и локальной переменной? Везде рекомендуют использовать полный путь именно потому, что сервис запущенный системой, даже под конкретным пользователем видит текущие локальные переменные. Хотите использовать другие - пожалуйста, но тогда не используйте стандартные, как HOME. Или я что-то путаю?
    Last edited by kidoro; 15-01-2019, 15:55.

    Leave a comment:


  • Alex_UUU
    replied
    Originally posted by oitss View Post
    Посмотреть ENVIRONMENT процесса strings –a /proc/<pid_of_the_process>/environ
    Огромное спасибо.
    Это именно то, что нужно.
    Когда я не правил скрипт запуска (не добавлял переменную HOME:
    Code:
    strings –a /proc/126342/environ
    strings: '–a': No such file
    TERM=xterm
    PATH=/sbin:/usr/sbin:/bin:/usr/bin
    PWD=/
    LANG=en_US.UTF-8
    SHLVL=2
    _=/usr/sbin/zabbix_agentd
    Когда добавил:
    Code:
    strings –a /proc/54630/environ
    strings: '–a': No such file
    TERM=xterm
    PATH=/sbin:/usr/sbin:/bin:/usr/bin
    PWD=/
    LANG=en_US.UTF-8
    SHLVL=2
    HOME=/var/lib/zabbix
    Действительно переменная HOME в процесс не передается. Поэтому при отсылке команды агенту при работе с мускулем надо или указывать в строке вызова параметры коннекта, или в скрипт запуска процесса добавить значение этой переменной.
    Второй путь считаю более логичным. Внести бы еще передачу этой переменной в сборку заббикса - было бы вообще прекрасно :-) (минусов не вижу, а вот плюсы - есть)

    Leave a comment:


  • oitss
    replied
    man service

    ENVIRONMENT
    LANG, TERM
    The only environment variables passed to the init scripts.

    Посмотреть ENVIRONMENT процесса strings –a /proc/<pid_of_the_process>/environ

    Leave a comment:


  • Alex_UUU
    replied
    Если getent passwd хомяка выдает. Если переменная HOME под юзером zabbix о хомяке знает, то задавай-не задавай ничего не изменится.

    Code:
    usermod -m -d /var/lib/zabbix zabbix
    usermod: no changes
    По какой-то причине процессу не передается переменная окружения HOME

    Leave a comment:


  • mak_v_
    replied
    задать хомяк через явное указание для вас не вариант?

    usermod -m -d /var/lib/zabbix zabbix

    Leave a comment:


  • Alex_UUU
    replied
    Code:
    su - zabbix
    -bash-4.1$ echo $HOME
    /var/lib/zabbix
    Перезапустил заббикс агента под юзером заббикса. Значение переменной HOME агенту не передалось.
    Т.е. Заббикс агент не знает о своей домашней директории.. Пользователь zabbix - знает, а агент - нет.
    Но не исключаю каких-то глюков и в системе.

    Leave a comment:


  • mak_v_
    replied
    Больше знаков восклицания
    жесть конечно...у вас заббикс проверка стартует не из init.d а единократно.
    сделайте наконец
    su - zabbix
    И посмотрите переменные окружения.

    Leave a comment:


  • Alex_UUU
    replied
    ПРоцесс забикса не видит хомяка!!! Вернее он после перезагрузки имеет пустую переменную НОМЕ.

    Leave a comment:


  • mak_v_
    replied
    Ниче не понинимаю.... а как вы хотите передать параметры коммандной строки (логин и пароль) не передавая их же???
    Из хомяка подхватывается .my.cnf по .profile и экспортируется в переменные окружения...
    Никак не могу понять что вы хотите....

    Leave a comment:


  • Alex_UUU
    replied
    В общем сделал так (кстати, считаю это багом заббикса и исправить бы его системно)
    В файл
    /etc/init.d/zabbix-agent
    дописать
    export HOME=/var/lib/zabbix

    В результате получаем:

    Code:
    zabbix
    uid=367962(zabbix) gid=496(employee) groups=496(employee)
    zabbix:x:367962:496:zabbix MailBox:/var/lib/zabbix:/bin/bash
    /var/lib/zabbix
    ERROR 1049 (42000): Unknown database 'select Test';'
    Т.е. используется правильный хомяк со всеми вытекающими.

    Leave a comment:


  • Alex_UUU
    replied
    Originally posted by mak_v_ View Post
    Можно сделать костыль
    system.run[''whoami;id; getent passwd `whoami`;alias 'mysql -p'='mysql --defaults-extra-file=.my.cnf';"'']
    Костыль делается еще проще, указанием в run хомяка. Но это неправильно по нескольким причинам:
    1. И так длина запроса ограничена
    2. ХЗ где завтра это вылезет.

    Leave a comment:


  • mak_v_
    replied
    Можно сделать костыль
    system.run[''whoami;id; getent passwd `whoami`;alias 'mysql -p'='mysql --defaults-extra-file=.my.cnf';"'']

    Leave a comment:


  • Alex_UUU
    replied
    Originally posted by mak_v_ View Post
    getent passwd zabbix
    Выше есть:
    Это я на сервере выполнил, тоже самое.
    Code:
    zabbix:x:367962:496:zabbix MailBox:/var/lib/zabbix:/bin/bash

    Leave a comment:

Announcement

Collapse
No announcement yet.
Working...
X