ubuntu etc 设置权限777带来的问题--sudoers权限错误
在一次工作中,在ubutu通过命令行输入
sudo chmod -R 777 /etc
命令,误将etc目录权限更改为了777(rwxrwxrwx)
导致服务器无法ssh远程连接,而且sudo命令无法使用
提示
sudo: /etc/sudoers is world writable
sudo: no valid sudoers sources found,quitting
sudo: unable to initialize policy plugin
解决办法是执行pkexec chmod 440 /etc/sudoers,但是提示
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 authorized
This incident has been reported.
最终解决办法:
- 远程的话开两个ssh终端,能直接操作物理机的话使用ctrl+alt+F2 创建第二个终端窗口使用ctrl+alt+F1切换到tty1;ctrl+alt+F2切换到tty2
- 两个终端,都用有超级管理员用户登录
- 对tty1终端:输入
echo $$
// 获取pid - 切换到tty2:输入
pkttyagent --process $上一步获取的pid值
,此时该tty2终端会卡住 - 切到tty1:输入 pkexec chmod 440 /etc/sudoers,此时tty1也会卡住
- 切到tty2:会看到要求输入密码,对应输入
- 切回到tty1:修改完成,发现就可以继续使用sudo命令了
- 执行 pkexec chmod 600 /etc/ssh/*key 输入超级管理员的密码
- 重启service sshd restart
- 查看ssh的状态systemctl status ssh.service 像最下面那样没有错误,就是可以了