실수로 "rm -rf /home"을 실행했습니다.

실수로 "rm -rf /home"을 실행했습니다.

실수로 실행한 명령은 사용자 디렉터리가 아닌 루트 홈 디렉터리를 재귀적으로 삭제하는 것이었습니다. sudo나 루트 권한이 없다는 것은 아닙니다.

이는 일반적인 의미의 데이터 복구 문제가 아닙니다. 어떤 이유에서인지 루트 디렉터리의 하위 디렉터리 대부분은 /home그대로인 것 같습니다. 특히 내 사용자 홈 디렉터리는 /home/user여전히 존재하며 대부분의/(모두?) 하위 디렉터리가 있습니다. 거기에는 살아남은 것으로 보이는 모든 작업 파일이 포함된 .ssh디렉터리가 있습니다 . code그러나 내 .bashrc파일이 없습니다.

rm -rf /home

내 첫 번째 질문은 왜 이러한 디렉토리가 명령에 영향을 미치지 않습니까?

이 글을 쓰는 주된 목적은 내가 알고 있는 것을 이해하는 것입니다.했다제거하고 설치가 다시 제대로 작동하도록 했습니다.

우분투에서는 l=ls별칭을 더 이상 사용할 수 없으므로 이러한 별칭이 포함된 일부 파일을 삭제한 것 같습니다.

일부 프로그램도 누락되었습니다.

탭 완성도 작동하지 않습니다. 어떻게 다시 돌려받을 수 있는지 아이디어가 있나요?

답변1

글쎄요, 한 번에 여러 가지 질문을 해서는 안 됩니다. 귀하의 /home/user디렉토리가 삭제되지 않은 이유에 대해 답변 드리겠습니다 .

UNIX 계열 시스템의 파일 권한을 이해해야 합니다. 이는 3개의 트리플로 구성됩니다: rwxrwxrwx, 첫 번째 트리플은 소유자의 권한, 두 번째 트리플은 소유자 그룹의 권한, 마지막 트리플은 다른 모든 사람의 라이센스입니다.

들어가서 /home/실행하면 ls -la다음과 같은 내용이 표시됩니다.

drwxr-xr-x  6 root root  4096 Feb 15  2022 .
drwxr-xr-x 19 root root  4096 Jan 19 20:56 ..
drwxr-xr-x 88 user user  4096 Feb  1 21:22 user

그것을 분석해 봅시다. 이 .디렉토리는 우리가 있는 ( ) 디렉토리 이며 사용자와 그룹이 소유하고 있음 /home/을 알 수 있습니다 . 이것은 귀하의 사용자가 아니며 해당 사용자를 실행하거나 "될" 수 있지만 일반적으로 해당 디렉터리를 변경하려는 명령을 실행하면 세 번째 삼중항인 "기타"가 됩니다. 다른 것에는 권한이 있습니다 . 즉, 해당 디렉터리의 내용(파일 및 하위 디렉터리 목록)을 읽고 실행할 수 있습니다(해당 디렉터리로 변경하고 해당 디렉터리가 현재 디렉터리인 동안 명령을 실행).rootrootsusudor-x

파일이나 하위 디렉터리를 삭제하면 실제로 파일이 변경되는 것이 아니라 파일이 있는 디렉터리가 변경됩니다. 일부 시스템에서는 쓰기 소유권은 없지만 파일이 있는 디렉터리에 대한 쓰기 권한이 있는 파일을 삭제하려고 하면 경고가 표시되지만 기술적으로는 그렇게 할 수 있습니다.

그것에 대해 생각해 봅시다:

/         root  root drwxr-xr-x
/test/    user  user drwxrwxr--
/test/t   root  root -rwx------
/tst      user  user -rw-rw-rw-

슈퍼유저(루트)가 되지 않으면 파일을 읽거나 쓸 수 없습니다. /test/t그러나 쓰기 권한이 있기 때문에 파일을 삭제할 수 있습니다 /test/.

그러나 문서에는 /tst그 반대라고 나와 있습니다. 문제 없이 파일에 쓰고, 내용을 읽고, 파일을 자르는 등의 작업을 할 수 있습니다 /. 하지만 .

이제 여러분의 이야기로 돌아가 보겠습니다 /home/. 자신에게는 쓰기 권한이 없으며 /home무엇이든 할 수 있다는 점을 기억하세요.이내에 /home/user/이지만 삭제할 수는 없습니다. 따라서 그 안의 모든 파일은 삭제되지만 디렉터리 자체는 여전히 존재합니다.

답변2

  • 하는 것보다 낫다rm -rf /
  • 내가 하고 싶은 말은 여기에서 나온다.킬 -9항상 로그인되어 있는 사용자뿌리그래서 집 밑의 모든 것을 삭제하지 않은 이유는 귀하가 아닌 귀하로 로그인했기 때문입니다.뿌리.
    • 당신은 루트로 로그인했다고 명시적으로 말하지 않았으므로 당신이 당신으로 로그인했다고 가정하고 있으므로 아래의 다른 모든 것은 /home괜찮을 것입니다. 쓰기 액세스 권한이 있는 항목(예: 홈 계정)만 그럴 것입니다. control-C중단하고 싶을 때까지 실제로 삭제를 시작하세요 .
  • 설치가 다시 제대로 작동하도록 하려면 어떤 단계를 수행해야 합니까?

    • 사용자 계정을 다시 생성하세요...
      • adduser serguio --uid # --gid 100 --no-user-group --create-home --comment Sergio\ Gliesh
      • 필요에 맞게 매개변수를 조정하세요 adduser. 이는 단지 예일 뿐입니다.
      • 이전과 다른 계정 이름을 사용해야 합니다. 그런 다음 데이터 파일과 폴더를 복사할 수 있지만 숨겨진 도트 파일은 복사할 수 없습니다 /home/oldaccount. /home/newaccount그런 다음 .bashrc특정 콘텐츠가 있는 것처럼 도트 파일을 찾아보고 해당 콘텐츠를 새 파일로 깔끔하게 편집하세요./home/<newaccount>/.bashrc

관련 정보