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

本文探讨了在IDE中调试运行于80端口的HTTP服务时遇到的权限问题,并提供了三种解决方案:使用sudo启动IDE、创建sudopython脚本以及通过设置capability来避免root权限需求。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题 和 解决方案

很多这样的情况,一个经典的例子是,开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.youkuaiyun.com/zhao_cancan/article/details/38366541

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值