sudo:/ usr / bin / sudo必须由uid 0拥有,并在chmod 755之后设置setuid位

时间:2019-04-19 14:48:20

标签: unix centos

我尝试过的是: https://stackoverflow.com/a/29903645/4983983

我执行了这个

n=$(which node); \
n=${n%/bin/node}; \
chmod -R 755 $n/bin/*; \
sudo cp -r $n/{bin,lib,share} /usr/local

但是现在我无法执行例如sudo su命令,出现以下错误:

sudo: /usr/bin/sudo must be owned by uid 0 and have the setuid bit set

我不确定该如何重做?

编辑: 关于@Bodo答案:

sudo rpm --setperms mkdir
sudo rpm --setugids mkdir
cd /opt
 mkdir test13121
mkdir: cannot create directory ‘test13121’: Permission denied

BUT:

sudo  chown root:root /usr/bin/mkdir && sudo chmod 4755 /usr/bin/mkdir
mkdir test912121

1 个答案:

答案 0 :(得分:1)

困难在于找出已更改文件的普通权限。

您可以尝试根据软件包管理中的信息来重置文件权限。

例如参见https://www.cyberciti.biz/tips/reset-rhel-centos-fedora-package-file-permission.html

此页面的引用:

  

重置所有已安装的RPM软件包的权限

     

您需要使用rpm和shell的组合来执行循环命令,如下所示:

for p in $(rpm -qa); do rpm --setperms $p; done
for p in $(rpm -qa); do rpm --setugids $p; done

我建议您完整阅读链接的页面,并首先尝试使用单个软件包。 我想您可以以某种方式要求rpm查找包含例如/usr/bin/sudo。并尝试命令是否适用于单个软件包。

编辑:如果setuidsetgid位不正确,则可以尝试更改命令的顺序,并在{{之前使用--setugids 1}}。 (在某些情况下,--setperms会重置chownsetuid位;不知道这是否适用于setgid命令。)

互联网上有一些来源建议将rpm--setugids合并为一个命令或使用选项--setperms而不是像这样的循环

-a

阅读文档。 (我没有可以测试命令的基于RPM的系统。)