You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

执行Node相关操作后sudo命令报错,寻求恢复解决方案

修复被破坏的sudo权限及系统权限问题

你这情况明显是执行Node相关权限修改命令时,误操作影响到了系统关键文件的权限,尤其是sudo的核心权限被搞坏了。别着急,咱们一步步来恢复:

第一步:先拿到root权限(毕竟sudo已经用不了了)

要修复sudo,得先获取root身份:

  • 先试试直接输入 su -,如果能输入root密码进入root shell,那直接跳到下一步。
  • 如果su -也不行,就得进入单用户模式
    • 对于CentOS/RHEL系列:开机时按e进入GRUB编辑界面,找到以linux16开头的行,把ro改成rw init=/sysroot/bin/sh,按Ctrl+X进入紧急shell,再执行chroot /sysroot切换到真实系统环境。
    • 对于Ubuntu/Debian系列:开机按Shift调出GRUB菜单,选「高级选项」,再选recovery mode里的「root shell」,先执行mount -o remount,rw /把根目录改成可写状态。

第二步:修复sudo的核心权限

进入root环境后,执行这两条命令把sudo的权限改回正确状态:

chown root:root /usr/bin/sudo
chmod 4755 /usr/bin/sudo
  • chown是把sudo的所有者和组强制改回root(报错里明确要求sudo必须属于uid 0的用户)
  • chmod 4755是设置setuid位——这就是报错里提到的必须的setuid bit,有了它sudo才能以root身份执行命令。

执行完后输入sudo -l测试,如果能正常列出你的sudo权限,说明sudo已经恢复正常了。

第三步:批量修复其他系统文件的权限

你之前只针对mkdir单独修复了权限,但之前的递归chmod和复制操作可能影响了大量系统文件,所以要批量恢复所有系统包的默认权限:

sudo rpm --setperms -a
sudo rpm --setugids -a

这里的-a参数是对所有已安装的rpm包执行权限和属主恢复,而不是单个命令,这样能把被误改的系统文件权限全部还原回去。

恢复完后再测试mkdir /opt/test13121,应该就能正常创建目录了。

最后提个醒

以后执行chmod -R这种递归修改权限的命令一定要格外小心,尤其是涉及到复制到/usr/local这类系统目录的操作时,先确认$n的路径仅指向你的Node安装目录,别不小心碰了系统文件的权限。

内容的提问来源于stack exchange,提问作者tryingHard

火山引擎 最新活动