오늘 내 서버에 아주 이상한 일이 일어났습니다

오늘 내 서버에 아주 이상한 일이 일어났습니다

내가 입력하면 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.

리눅스가 or ~freemark에 속하도록 어떻게 말합니까 ?/home2/home3

/home2에서 로 또는 /home3그 반대로 소프트 링크를 배치하여 문제를 일시적으로 해결할 수 있었습니다 . 그러나 애초에 이런 일이 발생하는 이유는 이해할 수 없습니다.

답변1

먼저, 계정의 홈 디렉터리가 어떻게 설정되어 있는지 알아야 합니다. 이는 다음 명령을 실행하여 찾을 수 있습니다.

getent passwd username | cut -d: -f6

( username사용자 이름은 어디에 있습니까?) 나는 그것이 다음과 같을 것이라고 상상한다 /home/username. 이 경우 /home3/username홈 디렉터리를 설정해야 할 수도 있습니다.

usermod -d /home2/username username

(루트로 실행해야 합니다. 또는 sudosudoers 파일에 액세스할 수 있는 경우 루트로 실행해야 합니다.)

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

일반적으로 원격 루트 액세스를 허용하는 것은 매우 나쁜 습관입니다. 원격 호스트에서 루트 액세스를 얻으려면 루트가 아닌 계정과 sudo를 사용하는 것이 좋습니다. 루트 계정도 노출됐다그리고설정하는 것은 PasswordAuthentication yes정말 나쁜 습관입니다.특히비밀번호가 무차별 대입 공격을 받아 호스트가 손상될 수 있으므로 비밀번호가 취약한 경우(예: 여기에서 발생할 수 있는 일)

호스트에 원격으로 액세스할 수 있고 모든 명령을 루트로 실행할 수 있는 sudo 권한이 있는 루트가 아닌 계정이 있는 경우 루트 비밀번호를 변경 sudo passwd하고 원격 호스트가 다음과 같이 연결할 수 없도록 /etc/ssh/sshd_config해당 비밀번호를 설정하도록 변경하는 것이 좋습니다. PermitRootLogin no뿌리. 다음과 같이 설정되면 sshd를 다시 시작해야 합니다.

/etc/init.d/sshd restart

(이는 /etc/init.d/ssh restart운영 체제에 따라 다를 수 있습니다). 나중에 루트 셸이 필요한 경우 루트가 아닌 사용자로 호스트에 ssh를 실행하고 exec sudo bash루트 셸을 얻으려면 실행하세요.

관련 정보