拥有Sudo权限的用户拒绝权限

突然我遇到了许可问题,当我通过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) 
  • 是/ home还是/ home / mike分区与“/”挂载?
  • 你也可以发布lsattr /home/mike/test.txt命令的输出吗?