Назад | Перейти на главную страницу

Monit: Как проверить программу, выполняемую конкретным пользователем?

Я использовал monit/mmonit для наблюдения за моей системой. Один, если его особенности - check program синтаксис, который запускает программу и проверяет ее возвращаемое значение:

# Asserts that there are more than 40 users in the DEV DB.

check program more_than_40_users_in_dev_db 
    with path /home/ubuntu/servers-scripts/monitoring/more_than_40_users_in_dev_db.py
    with timeout 5 seconds
    every 2 cycles
    if status != 0 then alert

Проблема в том, что скрипт должен запускаться от имени пользователя ubuntu, но monit запускает его как root. Я пробовал as uid ubuntu and gid ubuntu синтаксис, но, похоже, он не работает для check program директива.

Есть ли способ запустить этот скрипт от имени конкретного пользователя?

Вероятно, это было изменено за прошедшие несколько лет, но теперь вы можете сделать это с помощью as uid abc and as gid abc синтаксис, пока monit работает от имени пользователя root (например, служба systemd):

# You can also shorten to 'as gid user and uid user'; both formats work for me with v5.26.0
check program somescript with path /home/user/somescript.sh as gid user and as uid user
    if status != 0 then alert

Где somescript.sh

#!/bin/bash

whoami > /home/user/whoami.out

Конечно, вы также можете использовать другой gid этот пользователь является частью (скажем sharing) и получившийся файл будет создан с владельцем user:sharing и содержать «пользователь».