为了方便操作,一般我都是使用root登录管理权限。在这至高无上的权限面前,一个不慎就会发生各种各样的悲剧。前两天,原本打算执行 chmod -R 777 ./* ,结果手滑打少了一个.。虽然及时按 ctrl + c 终止命令,但悲剧已经发生。
结果出现这个错误。┭┮﹏┭┮
ll /usr/bin/su*
查看发现/usr下的可执行文件都改成777了。。。少了suid权限
银河麒麟重新启动——>进入安全模式,在安全模式下可以正常操作(其它版本的linux系统类似,进入安全模式进行操作)。
chmod 4755 /bin/su
chmod 4755 /usr/bin/sudo
进系统执行
sudo ls /root
发现还有问题
chmod 755 /usr
chmod 644 /usr/lib/sudo/sudoers.so
chown -R root:root /usr/lib/sudo
chmod 0440 /etc/sudoers
这几项也检查了一下。
重启电脑正常进入银河麒麟系统,尝试获取管理员权限。
发现su可以了,但是sudo还是不行。
后来发现“所有者”错了
chown root:root /usr/bin/sudo
结果又蹦出一堆错误。。。。。
最终采用如下方法:
chmod 755 /etc/sudoers.d
你这系统是不是整个根分区都执行过chmod 755啊
这么多文件权限都不对
找备机执行getfacl -p -R /etc > ./linux.chmod.bak
然后本机执行
setfacl --restore=/root/linux.chmod.bak
这个是整体恢复策略,需要恢复哪个目录的权限,就getacl哪个
最后终于搞定了。哈哈