2017-01-13 3 views
1

Ich habe ein Programm (https://github.com/raboof/connbeat), die auf /proc/[pid]/fd/* basiert, um Prozesse zu finden, die einen (Netzwerk) Inode gegeben.Lesen/proc/<pid>/fd/<fd> ohne vollständigen Root-Zugriff

/proc/[pid]/fd kann nur von root gelesen werden, aber ich möchte Privilegien so weit wie möglich für die Sicherheit fallen lassen.

Gibt es eine Möglichkeit, (effizient) auf die Beziehung zwischen Prozessen und Inodes zu kommen, ohne die vollständigen Root-Rechte zu benötigen? Vielleicht ein Syscall, mit dem ich selektiv auf die Nutzung von Funktionen zugreifen kann? Sie benötigen

Antwort

1

zu können fd die alle Prozesse lesen: - für den Zugriff auf/proc/[pid]/fd

  • CAP_SYS_PTRACE -

    • CAP_DAC_READ_SEARCH Symlinks lesen unter/proc/[pid ]/fd/*

    Sie können Ihr Programm auf genau diese beiden Funktionen beschränken. Dann können Sie auf die fraglichen Informationen mit normalen API-Aufrufen wie readdir() oder readlink() oder was auch immer Sie bevorzugen, zugreifen.

    Eine ausführlichere Beschreibung dieser beiden Funktionen finden Sie unter capabilities(7)

  • Verwandte Themen