需要sudo 运行的程序的IDE设置

xiaoxiao2021-02-28  56

问题 和 解决方案

很多这样的情况,一个经典的例子是,开80端口的http server,在IDE中的调试。

以python pyCharm 为例,解决方法大致有三种:

用sudo 打开 IDE 缺点是IDE新建的文件owner将是root,并且和git 一起用可能会有问题

新建脚本sudo python,然后在pycharm 中用此脚本作为解释器 缺点是调试时不能终止程序(调试器和IDE 一样是非root权限,所以无权终止程序)

设置 capability 使程序在bind lower number port 时,不再需要root权限 感觉这个最靠谱

setcap

sudo setcap CAP_NET_BIND_SERVICE+ep /bin/nc.openbsd` ## 或者 sudo setcap 'cap_net_bind_service=+ep' ~/python35-setcap

这里用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

转载请注明原文地址: https://www.6miu.com/read-2627314.html

最新回复(0)