2014-09-05 84 views
1

我使用下面的代碼安裝節點:使用root權限安裝node.js是否有缺點?

cd /usr/local/src/ 
    wget http://nodejs.org/dist/v0.10.25/node-v0.10.25.tar.gz 
    tar -xvf node-v0.10.25.tar.gz 
    cd node-v0.10.25 
    ./configure 
    make 
    make install 
     # node.js links to make sudo work right 
    ln -s /usr/local/bin/node /usr/bin/node 
    ln -s /usr/local/lib/node /usr/lib/node 
    ln -s /usr/local/bin/npm /usr/bin/npm 
    ln -s /usr/local/bin/node-waf /usr/bin/node-waf 

該腳本需要root權限的,我想知道,如果打開了任何安全漏洞的可能性,或者類似的東西。我想安裝節點,以便所有用戶都可以使用它,但我不希望它具有任何root權限,除非用戶擁有它們並明確使用它們(通過sudo)。與安裝的npm包相同。

+1

僅供參考:自從節點v0.6.x開始,'node-waf'沒有被使用 – mscdex 2014-09-05 00:33:03

+0

我從一些其他源頭拼湊了它。不知道爲什麼node-waf在那裏 - 現在可能完全沒有必要。 – 2014-09-05 00:42:00

回答

1

如果您已驗證您下載的tarball是合法的,那麼作爲根安裝應該沒有問題,即sudo make install。儘管如此,構建應始終以非root身份完成。

+0

如果以root用戶身份進行安裝,即使沒有以root用戶身份運行節點,sudo也不會有節點具有root權限的副作用?關於npm安裝(尤其是全局)呢 - 用root權限執行'npm install'不是一個好主意嗎? – 2014-09-05 00:44:19

+0

對makefile和任何相關腳本的檢查應該不會顯示調用setuid或setgid的可執行文件,但我無法想象任何人都會這樣做,而不會被那些知道自己在做什麼的人尖叫。 – 2014-09-05 01:24:50

2

這很好,和使用包管理器以root身份安裝東西時一樣。

二進制文件被寫入到磁盤作爲所有者和敏感權限的磁盤,以便人們不能覆蓋它們。當用戶執行他們在他的賬戶下運行的二進制文件時,具有系統權限。 (除非他與sudo一起運行)

對於二進制具有提升特權時,普通用戶運行它沒有sudo它需要設置SUID位,這需要明確設置。 /斌/平就是一個很好的例子:作爲伊格納西奧指出,你可以運行大部分的腳本的無特權,直到「讓安裝」,但你必須解決的二進制文件車主事後(CHOWN根

[email protected]:/bin$ ls -l /bin/ping 
-rwsr-xr-x 1 root root 44168 May 7 22:51 /bin/ping 

:根),因爲它們將由編譯(創建)它們的用戶帳戶擁有。

+1

但是'install'目標中的例程應該使用'install(1)'來實際安裝它們,這將導致它們由root擁有,而不管它們是由誰構建的。 – 2014-09-05 01:25:51

相關問題