2014-09-05 96 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

相关问题