熱搜:win11繞過硬件限制安裝 一鍵重裝Win10系統(tǒng) 最干凈的u盤啟動盤 真正純凈版的win7系統(tǒng)
時間:2015-07-24 13:58:46 作者:zhijie 來源:系統(tǒng)之家 1. 掃描二維碼隨時看資訊 2. 請使用手機瀏覽器訪問: https://m.xitongzhijia.net/xtjc/20150724/53742.html 手機查看 評論 反饋
在Linux系統(tǒng)中,一般情況下,小于1024的端口是不對沒有root的Linux普通用戶開放的。但是還是有一些技巧能夠讓沒有root的用戶使用小于1024的端口的。本文就來介紹一下Linux中如何讓普通用戶使用1024以下端口。
方法一:SetUID
給用戶的應(yīng)用程序在執(zhí)行位設(shè)置用戶 ID 能夠使程序可以以 root 權(quán)限來運行,這個方法讓程序能夠像在 root 下運行一樣,不過需要非常小心,這種方法同樣會帶來安全風(fēng)險,特別是當要執(zhí)行的程序本身存在安全風(fēng)險時。
使用的方法是:
1.chown root.root /path/to/application
2.#使用SetUID
3.chmod u+s /path/to/application
我們可以看到在系統(tǒng)下,/usr/bin/passwd這種文件,就使用了SetUID,使得每個系統(tǒng)能的用戶都能用passwd來修改密碼——這是要修改/etc/passwd的文件(而這個只有root有權(quán)限)。
既然要使用非root用戶運行程序,目的就是要降低程序本身給系統(tǒng)帶來的安全風(fēng)險,因此,本方法使用的時候需要特別謹慎。
方法二:CAP_NET_BIND_SERVICE
從 2.1 版本開始,Linux 內(nèi)核有了能力的概念,這使得普通用戶也能夠做只有超級用戶才能完成的工作,這包括使用端口。
獲取CAP_NET_BIND_SERVICE能力,即使服務(wù)程序運行在非root帳戶下,也能夠banding到低端口。使用的方法:
1.# 設(shè)置CAP_NET_BIND_SERVICE
2.setcap cap_net_bind_service =+ep /path/to/application
Note:
1. 這個方法并不是所有Linux系統(tǒng)通適,內(nèi)核在2.1之前的并沒有提供,因此你需要檢查要使用此方法所在系統(tǒng)是否支持;
2. 另外需要注意的是,如果要運行的程序文件是一個腳本,這個方法是沒有辦法正常工作的。
方法三:Port Forwarding
如果要運行的程序有權(quán)限監(jiān)聽其他端口,那么這個方法是可以使用的,首先讓程序運行在非root帳戶下,并綁定高于1024的端口,在確保能正常工作的時候,將低端口通過端口轉(zhuǎn)發(fā),將低端口轉(zhuǎn)到高端口,從而實現(xiàn)非root運行的程序綁定低端口。要使用此方法可以使用下面的方式:
1.# Enable the IP FORWARD kernel parameter.
2.sysctl -w net.ipv4.ip_forward=1
3.# Use iptables rules to redirect packets
4.iptables -F -t nat
5.iptables -t nat -A PREROUTING -p tcp --dport 80-j DNAT --to:8088
第一步使用sysctl確保啟用IP FORWARD功能(此功能在Red Hat/CentOS默認是被禁用的),注意,代碼中使用的sysctl設(shè)置是臨時性設(shè)置,重啟之后將會被重置,如果要長久保存,需要在/etc/sysctl.conf文件內(nèi)修改:
1.# Default value is 0, need change to 1.
2.# net.ipv4.ip_forward = 0
3.net.ipv4.ip_forward =1
然后從文件中加載新的配置
1.# load new sysctl.conf
2.sysctl -p /etc/sysctl.conf
3.# or sysctl -p
4.# default filename is /etc/sysctl.conf
第二步就是使用iptables的規(guī)則來實現(xiàn)端口轉(zhuǎn)發(fā)到程序所在的端口,示例中我們要將80端口轉(zhuǎn)發(fā)到8088。
此種方法能夠比較好的達到我們的目的,我們的程序可以通過非root用戶來運行,并能夠?qū)ν馓峁┑投丝谔柕姆⻊?wù)。
方法四:RINETD
這種方法使用的也是端口轉(zhuǎn)發(fā),此工具可以將本地端口映射到遠程端口,但此功能對于我們當前的功能來說,有點雞肋,畢竟我們新增了一個額外的程序,這將可能會增加我們系統(tǒng)的風(fēng)險性。在此不做推薦。
以上就是Linux中如何讓普通用戶使用小于1024端口的方法了,前面三種方法都可以不用root而且沒有什么風(fēng)險,大家可以放心使用。
發(fā)表評論
共0條
評論就這些咯,讓大家也知道你的獨特見解
立即評論以上留言僅代表用戶個人觀點,不代表系統(tǒng)之家立場