Mein System: 5.3.0-40-generic #32~18.04.1-Ubuntu SMP Mon Feb 3 14:05:59 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux
Für eine bestimmte Binary muss ich nach dem Comilieren den Befehl
1 | sudo setcap cap_net_raw=ep <binary_name> |
ausführen, damit diese für ihren Zweck funktionieren kann. Bevor ich den Befehl ausführe kann ich das Programm ohne Probleme ausführen (in einer Simulation). Danach bekomme ich jedoch immer die Fehlermeldung
1 | </path/to/binary>: error while loading shared libraries: <libblablabla>.so: cannot open shared object file: No such file or directory |
Dabei hat sich sonst nichts geändert. Ich habe den LD_LIBRARY_PATH überprüft, er stimmt und die Bibliothek ist im Pfad, ich habe mit ldd die dynamisch gelinkten Bibliotheken überprüft, diese stimmen und befinden sich im Pfad und ich habe ldconfig probiert aber hilft nicht.
Eine unschöne Lösung ist die Bibliothek aus dem Pfad nach /usr/lib zu kopieren (der Pfad ist im LD_LIBRARY_PATH enthalten). Ich müsste das aber für alle ~50 Bibliotheken machen und das ist wie gesagt unschön und sehr gefrikelt.
Kurz gesagt
Weiß jemand warum eine Binary die dymanisch gelinkten Bibliotheken (aus dem LD_LIBRARY_PATH) nicht mehr findet wenn man:
1 | sudo setcap cap_net_raw=ep <binary_name> |
ausgeführt hat? Und wie man dieses Problem beheben kann.
PS: Unter Ubuntu 16.04 gab es diese Problem komischerweise nicht!!
Nachdem mein Beitrag gemeldet wurde möchte ich noch hinzufügen, dass es sich bei setcap um ein Standardtool handelt (wie sed, cat, etc).