CentOS错误 - sudo:有效的UID不是0,sudo已安装为setuid root吗?

21

我发现另一个标题相同的问题,但我想我的情况有点不同。

为了设置新项目,我需要安装nodejs。我意识到只有在使用sudo时才能工作。例如:sudo npm

此外,我访问了链接https://docs.npmjs.com/getting-started/fixing-npm-permissions并执行了

sudo chown -R $(whoami) $(npm config get prefix)/{lib/node_modules,bin,share}

以更改默认目录权限。 现在因为我必须在这里sudo npm,所以我运行了

sudo chown -R $(whoami) $(sudo npm config get prefix)/{lib/node_modules,bin,share}

在此之后,每当我尝试使用sudo时,就会出现此错误 -

sudo: effective uid is not 0, is sudo installed setuid root?

我知道我的npm设置应该更好并且不应该在根目录下,但我是一个Linux新手。

任何帮助都将不胜感激。:)

更多信息 -

ls -l $(which sudo)得到的结果为 => ---s--x--x. 1 dev root 123832 Aug 13 2015 /usr/bin/sudo


---s--x--x. 1 开发者 root 123832 Aug 13 2015 /usr/bin/sudo 我看到bin目录下的所有文件现在都有dev用户了。 :/ - Swanidhi
你能认真思考并回忆起你做了什么来将/usr/bin中所有文件的所有者从root更改为dev吗? - John Zwinck
可能的命令 - sudo chown -R $(whoami) $(sudo npm config get prefix)/{lib/node_modules,bin,share} - Swanidhi
3
好的,你没有看到链接页面上写着“警告:如果显示的路径只是 /usr,请切换到选项2,否则您将搞乱您的权限。”吗? - John Zwinck
我确实这样做了。但是只有在执行代码后才发现问题。我的问题确实很严重。你有什么方法能避免重新镜像吗? - Swanidhi
显示剩余2条评论
3个回答

21

问题在于您可能已经更改了目录 /usr/bin 的权限。

要解决这个问题:

1)首先确保 root 是此目录 /usr/bin 的所有者:

chown root:root /usr/bin

2)并更改此目录的权限:

chmod u+s /usr/bin/sudo

8
我面临这个问题:chown: 改变‘/usr/bin/’的所有权被拒绝。 - rahulthakur319
@Baruch,为了使您的答案有效,用户必须知道root密码,即在执行su -时提示的密码,否则他无法使用sudo执行这些命令。 - vishal
我应该提到,即使ls -l /usr/bin/sudo显示正确的信息,这也值得运行。我已经让ls -l显示了预期的内容;我甚至进行了一次stat以确保UID和GID为0;但是,在将目录挂载到另一个系统后,仍然运行上述命令最终解决了问题。尽管ls -lstat的输出没有改变。可能是某个Unix bug吧? - Alex

7

如果您仍然遇到sudo问题,我成功解决了它,方法是检查WHM中帐户的shell访问权限。我因为帐户受到Jailed Shell限制而收到相同的错误。我将其设置为正常Shell,错误消失了。


1
问题: sudo: 有效的 UID 不是 0,sudo 是否以 setuid root 安装?
注意: ---s--x--x. 1 dev root 123832 Aug 13 2015 /usr/bin/sudo
用户和组应该是 root,并且 sudo 文件应该有 setuid。
应该为 ---s--x--x. 1 root root 123832 Aug 13 2015 /usr/bin/sudo
并且还要双重检查。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接