在Linux下,默認端口1024下的程序是要在root下才能使用的,在其他用戶下,如果嘗試使用將會報錯。在有的時候,我們可能考慮程序運行在root帳戶下,可能會給Linux系統帶來安全風險。那如何能夠讓非root用戶運行的程序能夠對外啓用小於1024的端口呢
一種方式是:CAP_NET_BIND_SERVICE
從2.1開始,Linux內核有了能力的概念,這使得普通用戶也能夠做只有超級用戶才能完成的工作,這包括使用端口1。
獲取CAP_NET_BIND_SERVICE能力,即使服務程序運行在非root帳戶下,也能夠binding到低端口。使用的方法:
#設置CAP_NET_BIND_SERVICE setcap cap_net_bind_service =+ep /path/to/application
Note: 1. 這個方法並不是所有Linux系統通適,內核在2.1之前的並沒有提供,因此你需要檢查要使用此方法所在系統是否支持(Linux must support capacity);
eg:
setcap 'cap_net_bind_service=+ep' /usr/sbin/grafana-server