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

Unix sudo:/usr/bin/sudo必须归uid 0所有,并在chmod 755之后设置setuid位,unix,centos,Unix,Centos,我尝试的是: 我执行了以下命令: n=$(which node); \ n=${n%/bin/node}; \ chmod -R 755 $n/bin/*; \ sudo cp -r $n/{bin,lib,share} /usr/local 但是现在我不能执行例如sudo su命令,我得到以下错误: 我不知道怎样才能重做 编辑: 关于@Bodo回答: sudo rpm --setperms mkdir sudo rpm --setugids mkdir cd /opt mkdir tes

我尝试的是:

我执行了以下命令:

n=$(which node); \
n=${n%/bin/node}; \
chmod -R 755 $n/bin/*; \
sudo cp -r $n/{bin,lib,share} /usr/local
但是现在我不能执行例如
sudo su
命令,我得到以下错误:

我不知道怎样才能重做

编辑: 关于@Bodo回答:

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

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

困难在于找出您所更改的文件的正常权限

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

见例

本页引文:

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

您需要结合使用rpm和shell for loop命令,如下所示:

for p in $(rpm -qa); do rpm --setperms $p; done
for p in $(rpm -qa); do rpm --setugids $p; done
我建议完全阅读链接页面,并首先对单个包进行尝试。 我想您可以通过某种方式要求
rpm
查找包含的包名,例如
/usr/bin/sudo
。如果命令适用于单个软件包,请重试

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

互联网上有消息来源建议将
--setugids
--setperms
组合在一个命令中,或者使用选项
-a
而不是类似循环的命令

rpm -a --setperms

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

重新安装您的机器。我想用另一种方法来做:/n发生了什么事?
n
可能最终为空,这意味着您更改了
/bin/
@tkausl/usr/bin/中所有文件的权限,其中:中没有节点(/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/username/.local/bin:/home/username/bin)和n=${n%/bin/node};没有给出任何东西我已经更新了问题-为什么这里有差异?它不适用于例如
chage
它现在是
-rwxr-xr-x.
但是是
-rwsr-xr-x.
s是差异。@tryingHard我没有基于RPM的系统进行测试。请阅读我的编辑文档或搜索或互联网上关于“setugids”和“setperms”的信息。
rpm -a --setperms