[Feedback on issues] 急急!!出现这个是什么情况呢?
Tofloor
poster avatar
大梁何
deepin
2 hours ago
Author

用终端 出现这个是什么情况呢?

sudo: /etc/sudo.conf is world writable
sudo: /usr/bin/sudo 必须属于用户 ID 0(的用户)并且设置 setuid 位

Reply Favorite View the author
All Replies
huaqi
deepin
2 hours ago
#1

你是第三个出现这个的人,你是怎么出现的

Reply View the author
mozixun
Moderator
2 hours ago
#2

你是怎么制造出这个问题的(((

Reply View the author
LiuYongzhang
deepin
24 minutes ago
#3

这两个报错是 Linux 系统 sudo 命令的安全校验失败,99% 是因为你之前执行了递归修改系统目录权限的危险操作(比如 chmod -R 777 /etc/usr,破坏了 sudo 的核心安全规则:

  1. sudo: /etc/sudo.conf is world writable/etc/sudo.conf被设置为全局可写,sudo 为了防止恶意篡改,直接拒绝执行。
  2. sudo: /usr/bin/sudo 必须属于用户 ID 0(的用户)并且设置 setuid 位:sudo 程序的所有者不是 root(UID 0),且丢失了 setuid 提权位,没有这个权限,sudo 完全无法实现普通用户提权到 root 的功能。

修复方案(按优先级从易到难)

方案一:用 pkexec 图形化提权修复(优先推荐,无需重启)

deepin 自带 polkit 的 pkexec图形化提权工具,只要你当前是管理员用户、知道登录密码,就能直接修复,不用重启。

  1. 打开终端,先修复 sudo 主程序的所有者和权限,依次执行 2 条命令:

    pkexec chown root:root /usr/bin/sudo
    pkexec chmod 4755 /usr/bin/sudo
    

    每条命令执行后,都会弹出图形化密码框,输入你的登录密码确认即可。

  2. 再修复 sudo.conf 配置文件的权限:

    pkexec chown root:root /etc/sudo.conf
    pkexec chmod 644 /etc/sudo.conf
    
  3. 验证修复结果:执行 sudo whoami,如果输出 root且无报错,说明修复完成。

补充:如果还有 sudoers is world writable的额外报错,再执行以下命令修复 sudoers 相关权限:

pkexec chmod 440 /etc/sudoers
pkexec chmod 755 /etc/sudoers.d
pkexec chmod 440 /etc/sudoers.d/*

方案二:知道 root 密码,用 su 切换 root 修复

如果 pkexec 执行失败,但你知道 root 用户的密码,可直接切换到 root 用户修复:

  1. 终端执行 su -,输入 root 密码,切换到 root 用户(命令行前缀变为 root@xxx)。

  2. 依次执行修复命令:

    # 修复sudo主程序权限
    chown root:root /usr/bin/sudo
    chmod 4755 /usr/bin/sudo
    
    # 修复sudo.conf配置文件
    chown root:root /etc/sudo.conf
    chmod 644 /etc/sudo.conf
    
    # 可选:修复sudoers相关权限
    chmod 440 /etc/sudoers
    chmod 755 /etc/sudoers.d
    chmod 440 /etc/sudoers.d/*
    
  3. 执行 exit退出 root 用户,再用 sudo whoami验证修复结果。

方案三:单用户模式终极修复(无需密码,以上方法都失效时用)

如果 pkexec 用不了、也不知道 root 密码,通过 GRUB 进入单用户模式直接获得 root 权限修复:

  1. 重启电脑,在 Deepin GRUB 引导菜单界面,选中日常使用的启动项,不要按回车,直接按 e键进入编辑模式。

  2. 找到以 linux开头的长行,做 2 处修改:

    • 把行内的 ro(只读)改成 rw(读写)
    • 在这一行的最末尾,加上 init=/bin/bash
  3. Ctrl+XF10启动,直接进入单用户 root 命令行。

  4. 先确保根目录可写,执行:

    mount -o remount,rw /
    
  5. 执行方案二里的全套修复命令,完成后执行以下命令重启:

    exec /sbin/init
    

    若无法重启,直接按 Ctrl+Alt+Delete强制重启即可。

  6. 重启进入系统后,用 sudo whoami验证修复结果。


重要注意事项

  1. 绝对禁止再执行 chmod -R 777这类递归修改系统目录权限的命令,这会彻底破坏 Linux 的安全权限体系,轻则程序异常,重则无法开机。
  2. deepin25 默认开启不可变系统(磐石系统),核心目录 /usr默认只读。若修改系统文件提示只读,修复完成后需执行 sudo deepin-immutable-writable enable临时关闭保护,修改后建议重新开启。
  3. 如果修复后还有其他权限异常,大概率是之前的递归改权限破坏了更多系统文件,建议优先备份个人数据,必要时重装系统,避免留下安全隐患。
Reply View the author