慕運(yùn)維8079593
2019-07-13 16:31:42
我正在設(shè)置我的第一個(gè)Node.js服務(wù)器上的cloud Linux node我對(duì)Linux admin..(順便說一下,我不想同時(shí)使用Apache。)所有的安裝都是正確的,但是我發(fā)現(xiàn)除非我使用root login,我聽不進(jìn)去port 80用節(jié)點(diǎn)。但是,出于安全原因,我不愿將其作為根運(yùn)行。最佳做法是:為節(jié)點(diǎn)設(shè)置良好的權(quán)限/用戶,使其安全/沙箱化?允許在這些約束范圍內(nèi)使用端口80。啟動(dòng)節(jié)點(diǎn)并自動(dòng)運(yùn)行它。處理發(fā)送到控制臺(tái)的日志信息。任何其他一般的維護(hù)和安全問題。我應(yīng)該將端口80的流量轉(zhuǎn)發(fā)到不同的偵聽端口嗎?
3 回答

慕碼人2483693
TA貢獻(xiàn)1860條經(jīng)驗(yàn) 獲得超9個(gè)贊
授予安全用戶使用端口80的權(quán)限
請(qǐng)記住,我們不希望以根用戶的身份運(yùn)行您的應(yīng)用程序,但是有一個(gè)問題:您的安全用戶沒有使用默認(rèn)HTTP端口(80)的權(quán)限。您的目標(biāo)是能夠發(fā)布一個(gè)網(wǎng)站,訪問者可以使用導(dǎo)航到一個(gè)易于使用的URL,如http://ip:port/
不幸的是,除非您以root用戶身份登錄,否則通常必須使用如下所示的URLhttp://ip:port
-港口號(hào)>1024。
很多人被困在這里,但解決辦法很簡單。有幾個(gè)選擇,但這是我喜歡的。鍵入以下命令:
sudo?apt-get?install?libcap2-bin sudo?setcap?cap_net_bind_service=+ep?`readlink?-f?\`which?node\``
現(xiàn)在,當(dāng)您告訴Node應(yīng)用程序希望它在端口80上運(yùn)行時(shí),它不會(huì)抱怨。

森欄
TA貢獻(xiàn)1810條經(jīng)驗(yàn) 獲得超5個(gè)贊
在綁定到端口80(或443)后刪除根權(quán)限。
這允許端口80/443保持保護(hù),同時(shí)仍然阻止您以root用戶身份服務(wù)請(qǐng)求:
function?drop_root()?{ ????process.setgid('nobody'); ????process.setuid('nobody');}
使用上述功能的完整示例:
var?process?=?require('process');var?http?=?require('http');var?server?=?http.createServer(function(req,?res)?{ ????res.write("Success!"); ????res.end();});server.listen(80,?null,?null,?function()?{ ????console.log('User?ID:',process.getuid()+',?Group?ID:',process.getgid()); ????drop_root(); ????console.log('User?ID:',process.getuid()+',?Group?ID:',process.getgid());});
添加回答
舉報(bào)
0/150
提交
取消