docker中的SO_DEBUG套接字选项的权限被拒绝
我已经隔离了在我的testing用例中抛出的Permission Denied
exception这些行 –
... ASSERT_EQ(0, getsockopt(s.getSocket(), SOL_SOCKET, SO_DEBUG, &optval, &optlen)); ... ... ASSERT_EQ(0, setsockopt(s.getSocket(), SOL_SOCKET, SO_DEBUG, &optval, optlen)); ...
这些工作正常运行testing可执行文件与我的本地机器上的sudo
例如。 sudo ./test/testexe
和所有的testing通过,不会引发exception。 要运行这些没有sudo
,我已经尝试在执行testing之前设置function,例如。 sudo setcap "cap_net_admin+ep cap_net_raw+ep" test/testexe
这次在我的本地机器上再次运行正常,没有sudo
。
Docker中没有任何一个方法可以工作的问题 – 既没有sudo
帮助,也没有抛出exception, setcap
方法也成功地设置了这些function,但是当执行testing的时候,错误的Operation not permitted
是Operation not permitted
。
那么是否有任何其他的方式成功地运行SO_DEBUG
行,但没有提升特权运行docker,因为我只有在我的CI平台的docker集装箱内获得控制。