很多这样的情况,一个经典的例子是,开80端口的http server,在IDE中的调试。
以python pyCharm 为例,解决方法大致有三种:
用sudo 打开 IDE 缺点是IDE新建的文件owner将是root,并且和git 一起用可能会有问题
新建脚本sudo python,然后在pycharm 中用此脚本作为解释器 缺点是调试时不能终止程序(调试器和IDE 一样是非root权限,所以无权终止程序)
设置 capability 使程序在bind lower number port 时,不再需要root权限 感觉这个最靠谱
这里用nc举例,因为 nc -l 80 立刻可以看到效果 当前的问题,可以把/bin/nc.openbsd替换为需要的解释器或者可执行程序的绝对路径,不过只能是可执行文件,软连接是不可以的
参数中的+ep:permitted(P)和effective(E) 还有另外一个是i,inheritable(I)、
查看文件的capability:
getcap xxx参考: 这篇三种方法都有提: https://stackoverflow.com/questions/14299509/debugging-in-pycharm-with-sudo-privileges 这篇是第二种方法的具体操作: https://esmithy.net/2015/05/05/rundebug-as-root-in-pycharm/ capability参考: https://blog.csdn.net/zhao_cancan/article/details/38366541
