Hallo Liste,
nach ein paar Bier und etwas Rumpro"bier"en hat sich folgendes rausgestellt:
Obwohl der Splunk-Prozess die korrekte Capability in den entsprechenden Sets hat, gibt es den Fehler, weil er *vor* dem eigentlich open() auf die Datei ein access() respektive faccessat() darauf loslaesst.
Die Capability CAP_DAC_READ_SEARCH erlaubt zwar open()/openat() auf eine sonst nicht lesbare Datei, aber die access()-Familie liefert einen Fehler. Ob das jetzt inkonsistentes Verhalten des Kernels ist, sei mal dahingestellt.
Simples Testprogramm, schlaegt trotz CAP_DAC_READ_SEARCH fehl:
--------------------------------------------------------------------- #define _POSIX_C_SOURCE 200809L
#include <stdio.h> #include <unistd.h>
int main() { int ret;
ret = access("/var/log/kern.log", R_OK);
if (-1 == ret) { perror("access"); return 1; }
return 0; } ---------------------------------------------------------------------
Gruss, Christian