如果我输入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
属于/home2
or /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。