繁体   English   中英

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

[英]sudo: /usr/bin/sudo must be owned by uid 0 and have the setuid bit set after chmod 755

我试过的是这个: 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

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

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

参见例如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之前使用--setperms (在某些情况下, chown重置setuidsetgid位;不知道这是否适用于rpm命令。)

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

rpm -a --setperms

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM