今日、私のサーバーでとても奇妙なことが起こりました

今日、私のサーバーでとても奇妙なことが起こりました

入力すると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がor~freemarkに属するようにどのように言いますか?/home2/home3

/home2から、または/home3その逆にソフトリンクを配置することで、問題を一時的に解決できました。しかし、そもそもこれが起こる理由は理解できません。

ベストアンサー1

まず、アカウントのホームディレクトリがどのように設定されているかを知る必要があります。これは、次のコマンドを実行して見つけることができます。

getent passwd username | cut -d: -f6

usernameユーザー名はどこにありますか?)私はそれが次のようになると思います/home/username。この場合、/home3/usernameホームディレクトリを設定する必要があります。

usermod -d /home2/username username

(rootとして実行する必要があります。またはsudosudoersファイルにアクセスできる場合は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アカウントにアクセスできる場合はファイルを確認してください~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コマンドの出力の2番目の列)を次のコマンドに渡してセッションを終了できますkill

kill -15 19687

通常、リモートルートアクセスを許可するのは非常に悪い習慣です。リモートホストからrootアクセスを取得するには、root以外のアカウントとsudoを使用することをお勧めします。ルートアカウントも公開されましたそして設定するのはPasswordAuthentication yes本当に悪い習慣です。特にパスワードが無差別代入攻撃を受けてホストが破損する可能性があるため、パスワードが脆弱な場合(例:ここで発生する可能性がある)

ホストにリモートでアクセスでき、すべてのコマンドを root として実行する sudo 権限を持つ root 以外のアカウントがある場合は、root パスワードを変更し、リモートsudo passwdホストが次のように接続できないように/etc/ssh/sshd_configそのパスワードを設定するように変更することをお勧めします. 。PermitRootLogin no根。次のように設定したら、sshdを再起動する必要があります。

/etc/init.d/sshd restart

(これは/etc/init.d/ssh restartオペレーティングシステムによって異なります)。後でrootシェルが必要な場合は、root以外のユーザーとしてホストにsshを実行し、rootexec sudo bashシェルを取得するには実行します。

おすすめ記事