我尝试过的是: 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
答案 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
。并尝试命令是否适用于单个软件包。
编辑:如果setuid
或setgid
位不正确,则可以尝试更改命令的顺序,并在{{之前使用--setugids
1}}。 (在某些情况下,--setperms
会重置chown
或setuid
位;不知道这是否适用于setgid
命令。)
互联网上有一些来源建议将rpm
和--setugids
合并为一个命令或使用选项--setperms
而不是像这样的循环
-a
阅读文档。 (我没有可以测试命令的基于RPM的系统。)