天天看點

Linux非root使用者如何使用80端口啟動程式

預設情況下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