突然我遇到了许可问题,当我通过sudo作为根发出命令。
我可以使用普通的权限在我的主目录中创build文件,所以像这样的东西适用于例如:
vi /home/mike/test.txt
但使用sudo运行的等效命令不起作用:
sudo vi /home/mike/test.txt "test.txt" E212: Can't open file for writing
这只是一个例子,所有使用sudo的命令都会因为权限的原因而失败。
我假设,因为我可以写入使用正常的权限,这不是一个文件系统是只读的问题。 它也不限于文件写入,像“sudo visudo”这样的命令也会因为权限原因而失败。 我不知道有任何最近的服务器的变化,可能会导致这(“sudo”一直工作正常,这个用户已经8个月左右)。 硬重启还没有解决这个问题。
服务器是:Ubuntu 8.04.2 LTS(耐寒)
任何想法或帮助将不胜感激!
你能跑吗?
sudo -s id
并发布输出? 我想看看它是否真的让你成为你的用户。
另外,尝试
sudo cat /etc/sudoers
这里id的输出很有启发性。 当你运行sudo -s ,你得到的UID是1,而内核认为拥有root权限的唯一的UID是UID 0。
尝试运行
getent passwd | grep ':0:'
并查看是否有任何条目在其第一个数字字段UID中有0。 不pipe是系统上真正的超级用户,而root是假的。 一旦你知道这个名字,你可以试试
sudo -s -u username
以该用户身份获得一个shell。
你也应该发布的输出
getent passwd root
更大的问题在于这样的情况是如何发生的。
这台机器是否提供任何networking服务? 如果是这样的话,有人可能已经闯入了它并把它拿走了。 在这种情况下,你应该备份数据,干净的重新安装,并审核任何可以重新安装的东西。
如果它更像个人电脑,那么最近有没有一个知识渊博的恶作剧?
编辑:您对另一个答案的评论表明,这是一个服务器。 我强烈build议尽快将其脱机并将其磁盘成像以进行取证。 除非你能在短时间内确定一个良性的原因,否则你的服务器可能已经破解了。
你仍然可以成为根使用
sudo su -
那么,呢
cd /home/mike vi test.txt
工作?
我想知道如果/ home目录是一个NFS安装。 在这种情况下,root用户具有“其他”类的权限,因为它在NFS挂载上的权限是用户nobody / nobody而不是root用户。
是sudo二进制SUID根?
ls -l $(which sudo)