Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/40.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 使用root权限安装node.js是否有缺点?_Linux_Node.js_Security_Root_Sudo - Fatal编程技术网

Linux 使用root权限安装node.js是否有缺点?

Linux 使用root权限安装node.js是否有缺点?,linux,node.js,security,root,sudo,Linux,Node.js,Security,Root,Sudo,我正在使用以下代码安装节点: 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 l

我正在使用以下代码安装节点:

    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权限,我想知道这是否会打开任何安全漏洞的可能性,或者类似的问题。我想安装node,以便所有用户都可以使用它,但我不希望它拥有任何根权限,除非用户拥有并显式使用它们(通过sudo)。与已安装的npm软件包相同。

如果已验证下载的tarball是合法的,则以root用户身份安装应该没有问题,即
sudo make install
。构建应该始终以非root用户身份进行,以防万一。

这很好,与使用包管理器以root用户身份安装东西时一样

二进制文件以root作为所有者和合理权限写入磁盘,因此人们无法覆盖它们。当用户执行二进制文件时,它们将在其帐户下运行,并具有系统权限。(除非他和sudo一起跑步)

对于一个二进制文件来说,当普通用户在没有sudo的情况下运行它时,它需要SUID位集,这需要显式设置/bin/ping就是一个例子:

user@dek:/bin$ ls -l /bin/ping
-rwsr-xr-x 1 root root 44168 May  7 22:51 /bin/ping

正如Ignacio指出的,在“make install”之前,您可以不受特权地运行大部分脚本,但之后您必须修复二进制文件所有者(chown root:root),因为它们将由编译(创建)它们的用户帐户拥有

FY:<代码>节点WAF尚未使用,因为节点V0.6XI在一段时间内从另一个源中拼凑起来。不知道为什么会有节点waf——很可能现在完全没有必要了。而且,如果您以root身份安装,即使您不以root/sudo身份运行节点,在节点具有root权限的情况下也不会有任何副作用?npm安装(尤其是全局安装)如何?使用root权限执行
npm安装不是一个好主意?检查makefile和任何相关脚本都不应显示调用可执行文件setuid或setgid,但是我无法想象任何人在不被知道他们在做什么的人尖叫的情况下会这样做。但是
install
目标中的例程应该使用
install(1)
来实际安装它们,这将导致它们归root所有,而不管是谁构建的。