我正在使用以下代码安装节点:
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软件包相同。
答案 0 :(得分:2)
没关系,就像使用包管理器以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),因为它们将由你编译的用户帐户拥有(他们。
答案 1 :(得分:1)
如果您已经确认已下载的tarball是合法的,那么以root身份安装应该没有问题,即sudo make install
。建筑物应始终以非root方式完成,以防万一。