linux - 我如何将低编号端口声明为非根端口 "right way"

标签 linux port daemon privileges setuid

我有一个脚本,我想作为守护进程运行,监听低编号端口 (< 1024)

脚本是 python,虽然 perl 的答案也是可以接受的。

脚本正在使用 start-stop-daemon 进行守护进程在启动脚本中,这可能会使答案复杂化

我真正(认为)不想要的是键入 ps -few 并看到此进程在其行上运行时带有“root”。

我该怎么做?

(从我对系统调用了解不足的角度来看,我可以看到 3 条途径,

  1. 以 root 身份运行脚本(没有 --user/--group/--chuid 到 start-stop-daemon),并让它在声明端口后降级它的用户
  2. 在脚本上设置 root (chmod u+s),并以运行用户身份运行脚本,(通过 --user/--group/--chuid 启动-停止守护进程,启动脚本仍然必须以root身份调用),在脚本中获取root权限,认领端口,然后恢复为普通用户
  3. 还有一些我不知道的

)

最佳答案

“你不知道的东西”是“能力”,但如前所述elsewhere功能在使用 shebang 方法的脚本中表现不佳,因此这里没有太多答案。我会采用“绑定(bind)端口,然后删除权限”的方法。

关于linux - 我如何将低编号端口声明为非根端口 "right way",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2574337/

相关文章:

linux - Shell 在创建配置文件时提示文件权限

linux - 在 linux 终端中,如何显示文件夹的最后修改日期,并考虑其内容?

python - celeryd 和 celerybeat - "Received unregistered task of type..."

Java 应用程序作为 Windows 服务

linux - 将 HTTP 重定向到 HTTPS。最好的方法是什么?

python - 直接运行文件时只有 ImportError

.Net Core API 起始 URL

port - scp 指定端口号

CSS 不适用于端口 8080 上的框架 url

linux - 如何创建一个在后台运行且在 L​​inux 中交互式的应用程序?