今天我的服务器发生了一些非常奇怪的事情

今天我的服务器发生了一些非常奇怪的事情

如果我输入cd ~username它会说

Can't find /home2/username

实际上~username存在,/home3并且它曾经有效。没有发生任何奇怪的事情。不知何故,Linux 认为我的所有文件都/home2在.昨天效果很好。然后我看到:/home3/home3/home2

    root     pts/6        139.193.156.125  Thu Aug 29 05:48   still logged in
    root     pts/5        ng1.cptxoffice.n Thu Aug 29 05:43   still logged in
    root     pts/4        139.193.156.125  Thu Aug 29 05:35   still logged in
    root     pts/3        139.193.156.125  Thu Aug 29 05:31   still logged in
    root     pts/2        139.193.156.125  Thu Aug 29 05:12   still logged in
    root     pts/1        139.193.156.125  Thu Aug 29 02:20   still logged in
    root     pts/0        139.193.156.125  Thu Aug 29 01:34   still logged in
    reboot   system boot  2.6.32-279.22.1. Wed Aug 28 17:00 - 05:48  (12:48)
    reboot   system boot  2.6.32-279.22.1. Wed Aug 28 11:33 - 16:46  (05:13)
    root     pts/0        139.193.156.125  Mon Aug 26 05:12 - 01:23  (20:11)
    root     pts/0        139.193.156.125  Wed Aug 21 20:51 - 22:07  (01:15)
    root     pts/1        139.193.156.125  Wed Aug 21 06:50 - 22:01  (15:11)

不知道楼主的情况ng1.cptxoffice.net

我如何告诉 linux~freemark属于/home2or /home3

我可以通过从 到 放置一个软链接来暂时解决该问题/home2/home3反之亦然。但为什么会发生这种情况首先是无法理解的。

答案1

首先,您需要知道您帐户的主目录已设置为什么。可以通过发出以下命令找到:

getent passwd username | cut -d: -f6

username您的用户名在哪里)。我想它会是这样的/home/username。在这种情况下,您可能/home3/username需要设置主目录:

usermod -d /home2/username username

(您必须以 root 用户身份运行它,或者sudo如果您有权访问 sudoers 文件,则必须以 root 用户身份运行它):

sudo usermod -d /home2/username username

如果上述情况并非如此,并且命令getent返回您的主目录为/home,您需要查看是否/home已经是符号链接:

ls -ld /home

如果输出的形式为(显示符号链接,并且解析为 home3):

lrwxr-xr-x  1 root  root  4 Aug 29 13:37 home@ -> home3

然后已经有一个指向 home3 的符号链接,您需要更改它。

rm /home ; ln -sf /home2 /home3

至于诊断问题,如果您有权访问根帐户,请检查文件~root/.bash_history,因为我想象用户更改了路径。您可能还想通过发出以下命令来终止该登录会话:

ps ua | grep '[p]ts/5'

你应该得到如下所示的输出:

root    19687  0.0  0.1  26896  9732 pts/5    Ss+  Aug20   0:00 -bash

然后您可以通过将关联的进程 ID(ps 命令输出的第二列)传递给以下命令来终止会话kill

kill -15 19687

一般来说,允许远程 root 访问是非常糟糕的做法。建议使用非 root 帐户和 sudo 从远程主机获取 root 访问权限。还暴露了 root 帐户设置PasswordAuthentication yes确实是不好的做法,尤其如果您的密码很弱,因为它可能会被暴力破解并且您的主机受到威胁(就像您在这里可能发生的情况一样)。

如果您有一个非 root 帐户,可以远程访问主机并具有 sudo 权限以 root 身份运行所有命令,我还建议您更改 root 密码,sudo passwd并更改/etc/ssh/sshd_config为具有该设置PermitRootLogin no,这样远程主机就无法以 root 身份连接用户。如果设置如下,则必须重新启动 sshd:

/etc/init.d/sshd restart

(这可能/etc/init.d/ssh restart取决于您的操作系统)。将来,如果您需要 root shell,请以非 root 用户身份 ssh 到主机,然后运行exec sudo bash以获取 root shell。

相关内容