当我通过 sudo 以 root 身份发出命令时,突然遇到权限问题。
我可以使用正常权限在我的主目录中创建文件,因此类似这样的操作可以工作,例如:
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 (hardy)
任何想法或帮助都将不胜感激!
答案1
你能跑吗
sudo -s
id
然后发布输出?我想看看它是否真的让你成为了你认为的用户。
另外,尝试
sudo cat /etc/sudoers
此处 id 的输出非常有启发性。运行 时sudo -s
,你被赋予了 UID 1,而内核唯一能识别为具有 root 权限的 UID 是 UID 0。
尝试运行
getent passwd | grep ':0:'
并查看是否有任何条目在其第一个数字字段 UID 中包含 0。无论哪个帐户都是系统上的真正超级用户,而是root
一个假的。一旦您知道了名称,您就可以尝试
sudo -s -u username
以该用户身份获取 shell。
您还应该发布输出
getent passwd root
这里更大的问题是这种情况是如何发生的。
这台机器是否提供任何网络服务?如果是,有人可能已经闯入并接管了它。在这种情况下,您可能应该备份数据,重新安装,并审核其上发生的一切。
如果它更像是一台个人机器,那么最近是否有一位知识渊博的恶作剧者使用过它?
编辑:您对另一个答案的评论表明这是一台服务器。我强烈建议尽快将其脱机并对其磁盘进行映像以用于取证目的。除非您能尽快确定导致这种情况的良性原因,否则您的服务器可能已被破解。
答案2
我想知道 /home 目录是否是 NFS 挂载。在这种情况下,root 用户具有“其他”类别的权限,因为它在 NFS 挂载上的权限是用户 nobody/nobody 而不是 root 用户的权限。
答案3
你还能使用以下命令成为 root 吗
sudo su -
那么,
cd /home/mike
vi test.txt
工作?
答案4
- /home 或 /home/mike 是否与“/”挂载为同一个分区?
- 你也可以发布来自lsattr /home/mike/test.txt命令 ?