X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=src%2Fsmart.c;h=5bb6af438ddaab0e90d17a7e965ec6cdc6964ea0;hb=75d4c13daf6c1226710b64ff3a793afa31721b81;hp=93bfcbec8aff9cc9314b254a0e821fa585a899c9;hpb=bb1d857383b85dbc2c37098391d53e2b9261c830;p=collectd.git diff --git a/src/smart.c b/src/smart.c index 93bfcbec..5bb6af43 100644 --- a/src/smart.c +++ b/src/smart.c @@ -33,6 +33,10 @@ #include #include +#ifdef HAVE_SYS_CAPABILITY_H +#include +#endif + static const char *config_keys[] = {"Disk", "IgnoreSelected", "IgnoreSleepMode", "UseSerial"}; @@ -241,7 +245,25 @@ static int smart_read(void) { return (0); } /* int smart_read */ +static int smart_init(void) { +#if defined(HAVE_SYS_CAPABILITY_H) && defined(CAP_SYS_RAWIO) + if (check_capability(CAP_SYS_RAWIO) != 0) { + if (getuid() == 0) + WARNING("smart plugin: Running collectd as root, but the " + "CAP_SYS_RAWIO capability is missing. The plugin's read " + "function will probably fail. Is your init system dropping " + "capabilities?"); + else + WARNING("smart plugin: collectd doesn't have the CAP_SYS_RAWIO " + "capability. If you don't want to run collectd as root, try " + "running \"setcap cap_sys_rawio=ep\" on the collectd binary."); + } +#endif + return (0); +} /* int smart_init */ + void module_register(void) { plugin_register_config("smart", smart_config, config_keys, config_keys_num); + plugin_register_init("smart", smart_init); plugin_register_read("smart", smart_read); } /* void module_register */