預設情況下Linux的1024以下端口是隻有root使用者才有權限占用,我們的tomcat,apache,nginx等等程式如果想要用普通使用者來占用80端口的話就會抛出java.net.BindException: Permission denied:80的異常。
bind時perror提示錯誤資訊:permission denied
解決辦法有兩種:
1.使用非80端口啟動程式,然後再用iptables做一個端口轉發。
iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080
用root使用者直接去執行就可以了!
2.假設我們需要啟動的程式是nginx,那麼這麼做也可以達到目的。
一開始我們檢視nginx的權限描述:
-rwxr-xr-x 1 nginx dev 2408122 Sep 5 16:01 nginx
這個時候必然是無法正常啟動的。
首先修改檔案所屬使用者為root:
chown root nginx
然後再加上s權限:
chmod u+s nginx
再次檢視權限描述的時候:
-rwsr-xr-x 1 root root 2408122 Sep 5 16:01 nginx
這樣就能啟動了。
不要讓懶惰占據你的大腦,不讓要妥協拖跨你的人生。青春就是一張票,能不能趕上時代的快車,你的步伐掌握在你的腳下,good luck