一位客户意外地赋予了他们的 ubuntu 10.04 机器上的整个文件系统完全权限。
chmod -R 777 httpdocs/cd /
正如您所见,他们尝试通过 cd 转到根目录,但却给了 chmod 一个有趣的参数来玩。
问题的第一个迹象是无法使用“su”,导致身份验证错误。sudo 还抱怨缺少 setuid 位。这个问题可以通过从机器本身以 root 身份登录并运行 chmod +s /usr/bin/sudo 来解决。
我现在可以sudo su
以 root 身份执行我需要执行的操作。但su
仍然出现身份验证失败。
我遵循了这里的建议:http://swiss.ubuntuforums.org/showthread.php?t=1180661&page=2
chmod 0755 /
chmod 0755 /*
chmod 1777 /tmp
chmod 0750 /root
chmod 0700 /lost+found
然后我尝试重置 root 密码。我仍然无法su
成为 root,或者su root
。
系统似乎运行良好。有什么建议可以su
再次运行吗?我可以在哪里查找更多问题?
答案1
我实际上会考虑完全重新安装系统。即使您设法正确获取了大多数权限并且一切似乎都正常,也很可能存在一些特殊权限,随时可能造成麻烦。
或者,我会将权限与第二台(可能是新安装的)机器进行比较。与您最喜欢的脚本语言一起使用应该不会太难。
答案2
哇...我也遇到过一次...幸运的是,那是一台家用机器。我解决了强制重新安装所有软件包的问题,这样所有权限都被设置了。反正那是在 Debian 上。我在获取所有软件包列表的脚本中使用 apt-get install --reinstall $packages。当您尝试 su 时,系统日志或身份验证会显示什么?
码头
答案3
也许是因为缺少 SUID 位导致的问题?
以下是应该包含该文件的文件:
ip@ip:~$ ls -al /bin | grep rws
-rwsr-xr-x 1 root root 27256 2010-01-28 20:32 fusermount*
-rwsr-xr-x 1 root root 78096 2009-10-23 07:28 mount*
-rwsr-xr-x 1 root root 35600 2009-05-12 00:43 ping*
-rwsr-xr-x 1 root root 31368 2009-05-12 00:43 ping6*
-rwsr-xr-x 1 root root 36864 2009-07-31 16:59 su*
-rwsr-xr-x 1 root root 56616 2009-10-23 07:28 umount*
ip@ip:~$ ls -al /usr/bin | grep rws
-rwsr-xr-x 1 root root 14640 2009-05-12 00:43 arping*
-rwsr-sr-x 1 daemon daemon 52112 2009-09-16 01:29 at*
-rwsr-xr-x 1 root root 41864 2009-07-31 16:59 chfn*
-rwsr-xr-x 1 root root 37128 2009-07-31 16:59 chsh*
-rwsr-xr-x 1 root root 59752 2009-07-31 16:59 gpasswd*
-rwsr-xr-x 1 root lpadmin 14256 2010-03-02 17:16 lppasswd*
-rwsr-xr-x 1 root root 62368 2008-11-05 15:24 mtr*
-rwsr-xr-x 1 root root 32384 2009-07-31 16:59 newgrp*
-rwsr-xr-x 1 root root 42856 2009-07-31 16:59 passwd*
-rwsr-xr-x 1 root root 14880 2009-10-16 14:43 pkexec*
-rwsr-xr-x 2 root root 143736 2010-04-13 20:31 sudo*
-rwsr-xr-x 2 root root 143736 2010-04-13 20:31 sudoedit*
-rwsr-xr-x 1 root root 18848 2009-05-12 00:43 traceroute6.iputils*
-rwsr-sr-x 1 root root 10536 2009-11-10 12:48 X*
尝试通过以下方式在所有命令上设置执行+SUID(或至少在 su 上)
chmod u+xs file
UPD:请注意,对于 /usr/bin/at 和 /usr/bin/X,您还需要执行
chmod g+xs