背景
研发同学需要测试一个demo,在普通用户下启动应用程序提示listen udp :443 bind: permission denied
,demo涉及到的目录均为普通用户,切换到root用户可正常启动。
解决方案
前言:linux对于非root权限用户不能使用1024以下的端口,对于一些服务,过高的权限,会带来一定的风险。(例如80、443)
方案:设置port_start
linux 允许非 root 用户默认只能使用 1024 以上端口,sysctl 可以修改该起始端口。例:允许非root用户使用所有端口
#临时生效
sysctl net.ipv4.ip_unprivileged_port_start=0
#永久生效
echo "net.ipv4.ip_unprivileged_port_start=0" >> /etc/sysctl.conf
sysctl -p
其他linux内核参数见 https://www.kernel.org/doc/Documentation/networking/ip-sysctl.txt文章来源:https://www.toymoban.com/news/detail-416847.html
小插曲
当内核版本低于4.11时,无法开启以上参数sysctl: cannot stat /proc/sys/kern/ipc/maxsockbuf: No such file or directory
资料说明:https://github.com/istio/istio/issues/36560
引用资料:https://kubernetes.io/zh-cn/docs/tasks/administer-cluster/sysctl-cluster/
ps:可以考虑尝试你的应用使用root权限启动运行,并监听udp:443文章来源地址https://www.toymoban.com/news/detail-416847.html
到了这里,关于解决 Ubuntu 16.04.4普通用户无法监听udp 443的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!