因此,当我点击 时,我的 ubuntu 用户的 .bash_history 不会显示出来history
。因此,我检查了权限,发现 /home/ubuntu 中的 .bash_history 现在归 root 所有。知道可能发生了什么吗?我检查了 root 用户的历史记录,没有发现任何可能导致此问题的原因。
另外,当我使用 mysql 客户端时,它会在某些行的末尾附加一串长“ ”。
为了解决这两个问题,我将 .bash_history 改回 ubuntu:ubuntu。知道为什么会发生这种情况吗?
答案1
除非您的系统有命令审计功能并且愿意仔细检查“上次运行”和“发生故障”之间执行的每个命令,否则无法确切知道发生了什么。
粗略猜测:您bash
以 root 身份执行$HOME
,环境变量仍设置为该用户的主目录。有很多方法可以做到这一点(例如su -m
将保留$HOME
)。
答案2
您可能运行了类似这样的命令sudo su
来获取 root shell。这将保持相同的环境,这意味着您的 home 被用作 root。如果您想要 root shell,请使用sudo -i
。
答案3
我想添加有关 .bash_history 文件的经验,即使我的 .bash_history 文件所有权没有改变。我们有一个主要用于我们内联网的 Ubuntu(22.04.4 LTS)服务器。它加入了我们公司的 AD 域,您可以使用域用户名和密码登录。因此,我可以从加入域的笔记本电脑使用 ssh 登录到服务器:
C:\Users\user1234>ssh 192.168.xx.xx
登录后,我无法访问 bash 历史记录,但文件仍然存在:
user1234@websrv:~$ ls -Al total 152 -rw------- 1 user1234 users 7458 Mar 28 16:40 .bash_history -rw-r--r-- 1 user1234 users 220 Nov 29 2017 .bash_logout -rw-r--r-- 1 user1234 users 41 Oct 18 2022 .bash_profile -rw-r--r-- 1 user1234 users 3812 Oct 18 2022 .bashrc
当我尝试查看文件内的内容时:
user1234@websrv:~$ less .bash_history .bash_history: Permission denied
即使我仍然拥有 .bash_history 文件的所有权,我也收到此错误。我检查了一下,我确实是 user1234:
user1234@websrv:~$ whoami user1234 user1234@websrv:~$ id -u user1234 1002
我可以访问其他 bash 文件,但它们为每个人设置了读取选项。我怀疑这与我的域用户帐户有关。然后使用以下命令登录: 然后我就可以再次访问我的 bash 历史记录了。 我仍然是 user1234,我的使用的 id 也是一样的。我不知道为什么会这样,我很确定这是新的东西。以前,我登录服务器时无需提供用户名。我也没有权限访问仅由 user1234 拥有的任何其他文件。这不是一个很好的答案,因为它没有回答“为什么?”这个问题。
C:\Users\user1234>ssh [email protected]
user1234@websrv:~$ less .bash_history user1234@websrv:~$ whoami user1234 user1234@websrv:~$ id -u user1234 1002 user1234@websrv:~$