当我通过 sudo 以 root 身份发出命令时,突然遇到了权限问题。
我可以使用普通权限在我的主目录中创建文件,例如这样的工作:
vi /home/mike/test.txt
Run Code Online (Sandbox Code Playgroud)
但是使用 sudo 运行的等效命令不起作用:
sudo vi /home/mike/test.txt
"test.txt" E212: Can't open file for writing
Run Code Online (Sandbox Code Playgroud)
这只是一个例子,由于权限原因,所有使用 sudo 的命令都会失败。
我假设因为我可以使用普通权限进行写入,所以文件系统只读不是问题。它也不限于文件写入,像“sudo visudo”这样的命令也会因为权限原因而失败。我不知道最近对服务器所做的任何更改会导致这种情况(“sudo”已经在 8 个月左右的时间里为该用户正常工作)。硬重启并没有解决问题。
服务器是:Ubuntu 8.04.2 LTS (hardy)
任何想法或帮助将不胜感激!
你能跑吗
sudo -s
id
Run Code Online (Sandbox Code Playgroud)
并发布输出?我想看看它是否真的让你成为你认为的用户。
另外,试试
sudo cat /etc/sudoers
Run Code Online (Sandbox Code Playgroud)
这里 id 的输出很有启发性。当您运行 时sudo -s,您获得的 UID 为 1,而内核将识别为具有 root 权限的唯一 UID 是 UID 0。
尝试跑步
getent passwd | grep ':0:'
Run Code Online (Sandbox Code Playgroud)
并查看是否有任何条目在其第一个数字字段 UID 中包含 0。无论哪个帐户是系统上真正的超级用户,而root都是假的。知道名字后,你可以试试
sudo -s -u username
Run Code Online (Sandbox Code Playgroud)
以该用户身份获取shell。
您还应该发布输出
getent passwd root
Run Code Online (Sandbox Code Playgroud)
这里更大的问题是这种情况是如何发生的。
这台机器是否提供任何网络服务?如果是这样,可能有人闯入并接管了它。在这种情况下,您可能应该备份数据,进行全新的重新安装,并审核返回到数据上的任何内容。
如果它更像是一台个人机器,是否可能有一个最近接触过它的知识渊博的恶作剧者?
编辑:您对另一个答案的评论表明这是一个服务器。我强烈建议尽快将其脱机并对其磁盘进行映像以进行取证。除非您能在短时间内确定造成这种情况的良性原因,否则您的服务器可能已被破解。
你还能使用 root 权限吗
sudo su -
Run Code Online (Sandbox Code Playgroud)
那么,是否
cd /home/mike
vi test.txt
Run Code Online (Sandbox Code Playgroud)
工作?
| 归档时间: |
|
| 查看次数: |
41405 次 |
| 最近记录: |