sudo:must be setuid root

帮坑货配置环境的过程中,坑货想要把静态链接库直接安装到/usr下面。更改prefix只在configure里面用过,cmake怎样更改还真心不知道。于是想到最简单的当然是开放/usr这个目录的权限。于是将/usr的权限设置为777。问题解决了,坑也就埋下了。

过了一阵碰到gcc版本问题,需要使用sudo命令来解决。使用sudo -i的时候出现了:sudo:must be setuid root的提示。换了其他几个sudo命令,也都是这个提示。上网一查,才发现是因为更改了/usr/bin/sudo这个文件的权限导致的问题。权限在linux下是很重要的,如同.ssh/id_rsa的权限设置不对的话,这个密钥就会无效。

找到了原因,接下来该解决这个问题。目前在正常运行情况下是不能获取到root权限了,只能通过修复或者恢复模式。系统是ubuntu 10.04 LTS,开机的时候长按shift按键会弹出选择菜单,选择recovery模式就能进入恢复模式。万万没想到,这个坑爹的恢复模式还需要root密码!妈蛋,对ubuntu这样的系统就没有对root设置过密码吧,又不是centos! 因为没有root密码,恢复模式这条路是断绝了,只能借助额外的力量来恢复相关文件的权限。

没办法,只好又刻了一张安装盘。启动的时候选择安装盘的rescue模式,根据提示选在系统所在安装盘,选择root模式,这样直接就获取到了root权限。再对 /usr/bin/sudo 这个文件设置权限为 4755就OK了。设置完毕之后可以su 到普通用户,看看能不能使用sudo 命令。可以发现这个时候就正常了。 使用ll查看/usr/bin/sudo的权限,会发现是 -rwsr-xr-x,这与普通的rwx是不同的存在,估计s代表只有sudo才能使用吧。

有了sudo权限之后当然一切都又解决了,reboot之后就可以继续正常配置了。

 

留言评论

发表评论

电子邮件地址不会被公开。 必填项已用*标注