Я использовал 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
и содержать «пользователь».