sudo rm -rf --no-preserve-root / 및 sudo rm -rf /*

sudo rm -rf --no-preserve-root / 및 sudo rm -rf /*

우리 모두 알고 있듯이, 이것들은 둘 다 기계에게 자살을 지시하는 두 가지 치명적인 UNIX 명령입니다. 하지만 둘 사이의 차이점은 무엇입니까? 첫 번째는 루트 디렉터리를 삭제하고 두 번째는 그 안에 있는 모든 것을 삭제합니다. 둘 다 똑같이 나쁘지만 첫 번째는 루트 디렉토리 자체를 삭제하여 파일 시스템을 삭제합니까? 차이점은 무엇입니까?

답변1

rm -r dir및 와 동일한 차이점이 있습니다 rm -r dir/*.

두 번째는 glob과 일치하는 모든 파일을 제거합니다. 일반적으로 이름이 점으로 시작하지 않는 모든 파일이지만 bash 및 기타 항목에서 구성할 수 있습니다. 다음과 같은 경우에도 실패합니다.위치명령줄에는 너무 많은 파일만 담을 수 있으므로 디렉터리에 있는 파일 수입니다. 일반적으로 루트 디렉터리에는 아무것도 없지만 여전히 있습니다.

첫 번째는 으로 반복되어 dir모든 것을 삭제한 다음 디렉터리 자체를 삭제합니다. 그러나 말했듯이 루트 디렉터리는 삭제할 수 없습니다. Linux에서 발생하는 오류는 Device or resource busy마운트된 파일 시스템이 포함된 디렉터리를 삭제하려고 할 때 발생하는 오류와 정확히 같습니다. (삭제하기 전에 디렉터리가 비어 있는지 확인할 필요도 없습니다.)

같은 이유로 일반적으로 루트 디렉터리를 비울 수 없으며 Linux에서는 /proc및 같은 항목이 설치되어 /sys있으며 이를 제거하지 않고는 마운트 지점을 제거할 수 없습니다.


엄밀히 말하면 모든 파일을 삭제한다고 해서 시스템이 종료되는 것은 아닙니다. 단지 외부 프로그램을 실행하여 사용하기가 좀 더 어려워지는 일반적인 패러다임을 만들 뿐입니다. 그러나 파일 시스템에 더 이상 파일이 필요하지 않은 프로그램 실행에는 영향을 미치지 않습니다. 및 가 busybox통합된 rm쉘과 같은 것을 사용하여 시도해 볼 수도 있습니다 ls. (부팅 파일이 마운트된 파일 시스템에 있는 경우 다음 번 부팅이 어려울 수 있습니다.)

답변2

--no-preserve-root반대 지시어를 우회하여 이 지시어는 시스템에 --preserve-root따라 별칭으로 설정되거나 기본 옵션으로 설정될 수도 있습니다 . rm이 옵션은 초보 사용자를 위한 보호 기능일 뿐이며, 처음부터 이러한 명령을 실행하는 사람으로부터 시스템을 크게 보호하지는 않습니다.

--preserver-root지시문(우회 또는 기본값)이 없으면 rm시스템의 모든 항목을 삭제하려고 시도합니다.

예정이니 참고해주세요언제나열려 있기 때문에 삭제할 수 없는 파일이 많기 때문에 이 작업을 수행할 수 없습니다. 또한 이는 /커널 구성이므로 설치된 모든 콘텐츠를 제거할 수 있더라도 어떤 상황에서도 제거할 수 없습니다.

관련 정보