Несоответствие между ~ (домашний каталог пользователя) и зарегистрированным пользователем - PullRequest
2 голосов
/ 11 февраля 2011

Nagios - это система мониторинга ИТ-инфраструктуры.Я пишу простой плагин-скрипт для него.Для него была создана специальная учетная запись nagios, и сценарий запускается Nagios под этой учетной записью.

В целях отладки сценарий очень прост:

#!/bin/bash
echo "OK - Running okay" ~ `id`

Он повторяетзначение ~, то есть домашний каталог, и результат команды id.

Я вхожу в учетную запись nagios (su -l nagios) и проверяю ее из командной строки:

OK - Running okay /home/nagios uid=1005(nagios) gid=1007(nagios) groups=1007(nagios),1008(nagcmd)

Это именно то, чего я ожидаю.

Я запускаю его из системы Nagios, и сообщаем, что результаты:

OK - Running okay /home/julian uid=1005(nagios) gid=1007(nagios) groups=1007(nagios),1008(nagcmd)

Подождите, /home/julian is *Домашний каталог 1020 * моей учетной записи;но он вошел в учетную запись nagios.Это противоречие не имеет смысла для меня;Я, очевидно, не понимаю, как это должно работать.

Есть предложения, как это может происходить?

Ответы [ 2 ]

2 голосов
/ 11 февраля 2011

Ваш скрипт случайно запускается на sudo?

rpinson@rpinson:~$ echo ~; id
/home/rpinson
uid=61367(rpinson) gid=100(users) groupes=24(cdrom),25(floppy),29(audio),30(dip),44(video),46(plugdev),100(users),119(admin)
rpinson@rpinson:~$ sudo -u toto -s
toto@rpinson:~$ echo ~; id
/home/rpinson
uid=1001(toto) gid=1001(toto) groupes=1001(toto)

В некоторых случаях (например, sudo -u) среда экспортируется, поэтому $HOME не сбрасывается для пользователя, выполняющегокоманда.

В случае sudo существуют способы использования среды пользователя:

rpinson@rpinson:~$ sudo -u toto -i
toto@rpinson:~$ echo ~; id
/home/toto
uid=1001(toto) gid=1001(toto) groupes=1001(toto)

или

rpinson@rpinson:~$ sudo -u toto -H -s
toto@rpinson:/home/rpinson$ echo ~; id
/home/toto
uid=1001(toto) gid=1001(toto) groupes=1001(toto)
0 голосов
/ 11 февраля 2011

Nagios обращается к удаленной системе, поэтому, вероятно, вы запускаете скрипт через ssh julian@remote.

...