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

问题 和 解决方案

很多这样的情况,一个经典的例子是,开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

猜你喜欢

转载自blog.csdn.net/harryhare/article/details/80630359