답변:
중요 : 최신 UEFI 시스템은 /sys
디렉토리에 펌웨어를 마운트 하고 OS에서 사용할 수 있도록합니다. 최신 시스템에서는 이 명령 을 실행하지 마십시오. 이 펌웨어는 제거되어 본질적으로 시스템을 손상시킵니다.
내가 생각할 수있는 가장 간단한 시나리오는 드라이브에서 모든 데이터를 삭제하려는 사람입니다. 이 작업을 수행해야하는 합법적 인 이유와 내가 생각할 수있는 가장 간단한 방법은 다음과 같습니다.
rm -rf --no-preserve-root /
이 것은 실제로 다음과 같은 예제로 제공됩니다 info rm
.
`--no-preserve-root'
Do not treat `/' specially when removing recursively. This option
is not recommended unless you really want to remove all the files
on your computer.
또 다른 완벽한 이유는 마운트 된 파일 시스템을 삭제하려고하기 때문입니다 chroot
. 이 경우 환경 rm -rf --no-preserve-root /
에서 시스템을 삭제 chroot
하지만 시스템은 그대로 유지됩니다.
더 많은 이유가있을 것이라고 확신하지만 일반적으로 시스템에서 내가 원하는대로 할 수있는 매우 합리적인 접근 방식 인 것 같습니다. 조심해야 할 것은 제 일입니다. 시스템은 내가 원하는 일만 할 수 있도록해야합니다. 내가 원하는 것이 어리 석다면 그것은 OS의 문제가 아니라 내 문제입니다.
어쨌든 이것은 비교적 새로운 제한 사항이며 POSIX 사양 의 7 번째 버전 ( 이전 버전 은 여기 있음) rm -rf /
에 추가되어 완벽하게 유효한 명령이었습니다. 역사적으로, .
및 ..
디렉토리는 디렉토리를 삭제하는 기능을 처음 획득 한 rm
1979 년 이후로 항상 보호되었습니다 rm
. 그것에 대한 자세한 내용은 여기 를 참조하십시오 .
/
.
rm -rf /
로 예를 들어 누군가의 NFS / CIFS / SSHFS 마운트를 통해 원격 시스템을 비울 수 있습니다.
이 --no-preserve-root
스위치 의 존재는 추가 기능 을 추가하는 것이 아니라 기능을 크게 감소시키는 것 보다 우선 합니다. 이 스위치는 컴퓨터가 지시 한대로 작동해야하며 원하는 작업을 표현하기 위해 명령을 사용할 수 있어야한다는 철학에 기반한 것 같습니다. 이 스위치는 UEFI보다 이전 버전이며 내 경험에 따르면 이제는 더 이상 사용되지 않습니다.
현대의 경우이 스위치가 없으면 rm
명령은 초기화되지 않은 변수 또는 스트레이 공간을 사용할 때 실수로 루트 디렉토리가 삭제되는 것을 방지합니다.
rm -rf /${my_directory}
rm -rf / var/log/httpd/*
재미있는 각주 : 보호는 의도 된 것이 아닙니다. Sun Microsystems 블로그에 따르면 /
디렉토리를 제거하면 현재 작업중인 디렉토리가 내재적으로 제거되어 이미 .
및 ..
디렉토리에 대해 특별히 고려한 사항을 위반합니다 . 이것이 표준위원회가 사고를 예방하기위한 것이 아니라이 특별한 예외를 허용 한 이유입니다. 이 변경은 Solaris 10 빌드 36에서 처음 도입되었습니다.
아마도 이것은 원래 asker가 원하는 대답이 아니지만 루트 디렉토리에서 모든 파일을 재귀 적으로 삭제 해야하는 유스 케이스가 있습니다. rm
명령 을 사용하지는 않지만 내장되지 않은 Linux 시스템을 부팅하는 동안 switch_root (8) 프로세스 의 일부입니다 .
/
있지만»general case«는 여전히 표시됩니다. 다시 말해 :»내가해야 할 일을 말해주는 것은 내 컴퓨터의 일이 아닙니다.«그렇게해서는 안됩니다.