【银河麒麟】sudo:无法初始化策略插件 【问题描述】银河麒麟桌面系统/etc/sudoers的文件的权限正常为0440现因误更改此文件的权限为777导致无法使用sudo命令报错为sudo: /etc/sudoers 可被任何人写sudo: 没有找到有效的 sudoers 资源退出sudo: 无法初始化策略插件【解决方法】1、查看/etc/sudoer文件权限发现被误改成了777方法一如果是在完整的桌面环境下可以使用pkexec chmod 0440 /etc/sudoers命令输入当前普通用户的密码即可将权限改回0440方法二SSH/终端环境下使用 pkttyagent pkexec在 SSH 远程连接或纯终端环境下直接执行 pkexec 可能会报以下错误polkit-agent-helper-1: error response to PolicyKit daemon: GDBus.Error:org.freedesktop.PolicyKit1.Error.Failed: No session for cookie AUTHENTICATION FAILED Error executing command as another user: Not authorizedThis incident has been reported.为什么 SSH 下 pkexec 会失败pkexec 依赖 polkit 认证框架需要当前会话中有 polkit 认证代理authentication-agent来收集密码。图形桌面登录后UKUI 桌面环境会自动启动 polkit-ukui-authentication-agent-1 等图形认证代理所以完整的图形环境下 pkexec 可以直接用。但 SSH 会话是独立的文本会话不会启动图形 polkit 代理也没有内置的文本代理所以 polkitd 找不到可用的认证代理来收集密码直接返回 No session for cookie。解决方案手动启动 Polkit 的文本认证代理 pkttyagent并通过管道将其与 pkexec 关联pkttyagent --process $$ | pkexec chmod 0440 /etc/su4、确认sudo命令能够正常使用且/etc/sudoers文件权限正常【知识扩展】1、/etc/sudoers 文件的作用/etc/sudoers 是 Linux 系统中一个关键配置文件用于定义用户或用户组的 sudo 权限。该文件决定了哪些用户或用户组可以以超级用户root或其他用户的身份执行命令以及可以执行哪些命令。通过合理配置 /etc/sudoers可以实现权限的细粒度控制避免滥用 root 权限带来的安全风险。2、权限不能被设置成 777 的原因将 /etc/sudoers 文件权限设置为 777即 rwxrwxrwx会带来严重的安全隐患主要原因如下安全风险777 权限意味着任何用户包括非特权用户都可以读取、修改甚至删除该文件。攻击者可能利用这一漏洞提升自己的权限获得 root 访问权限从而完全控制系统。sudo 的设计限制sudo 命令在运行时会对 /etc/sudoers 文件的权限进行严格检查。如果文件权限过于宽松如 777sudo 会拒绝执行并报错提示权限不安全。这是 sudo 的一种自我保护机制。最小权限原则Linux 系统遵循最小权限原则即仅授予必要的权限。/etc/sudoers 文件通常应设置为 440-r--r-----仅允许 root 用户读取和写入其他用户只能读取。这种设置既满足功能需求又最大限度降低风险。3、正确的权限设置推荐使用以下命令设置 /etc/sudoers 文件权限chmod 440 /etc/sudoers同时确保文件所有者是 rootchown root:root /etc/sudoers如果需要编辑 /etc/sudoers应使用visudo命令而非直接修改文件。visudo会在保存时自动检查语法错误避免配置错误导致 sudo 不可用。