내 생각엔 여기 많은 사람들이 " rm -rf
큰 피해를 입히지 않기를 바라면서 잘못된 디렉토리를 편집하는 실수를 저지르는 것 같아요. 사용자가 이런 일을 하는 것을 막을 수 있는 방법이 없을까요?"유닉스 공포 이야기??누군가 언급됨(댓글 영역이전 링크) 저것
...유닉스를 사용하는 모든 유닉스 코스나 회사에서는 유닉스를 실행하려는 사람의 계정을 비활성화하거나 실행을 방지하도록 rm -fr이 설정되어 있다고 확신합니다.
현재 Unix 또는 Linux 배포판에 구현이 있습니까? 시스템 관리자(루트 액세스 권한 포함)로서도 이 오류를 방지하기 위한 일반적인 방법은 무엇입니까?
좀 있는 것 같더라구요루트 디렉터리 보호( /
) Solaris(2005년 이후) 및 GNU(2006년 이후). 어쨌든 다른 폴더에도 동일한 보호 방법을 구현할 수 있습니까?
더 명확하게 말하자면, 사용법에 대한 일반적인 조언을 구하는 것이 아니며 rm
(더 많은 내용을 나타내기 위해 제목을 업데이트했습니다) 루트 폴더 보호와 같은 것을 원합니다. 이를 위해서는 rm -rf /
특정 매개변수를 전달해야 합니다. rm -rf --no-preserve-root /
.. custom Is 디렉토리 세트에 대한 유사한 구현이 있습니까? 아니면 /
보호된 파일 이외의 파일을 지정할 수 있나요?뿌리를 유지하다옵션?
답변1
오해를 피하기 위해 rm -rf
,입력하지rm -rf
.
디렉터리 트리를 삭제해야 하는 경우 다음 작업 흐름을 권장합니다.
- 필요한 경우 삭제하려는 디렉터리의 상위 디렉터리로 변경합니다.
mv directory-to-delete DELETE
DELETE
실제로 삭제하려는 항목인지 탐색 하고 확인하세요.rm -rf DELETE
rm -rf
이외의 인수로 호출 하지 마십시오 DELETE
. 여러 단계에 걸쳐 삭제를 수행하면 철자 오류(대신 에서와 같이 rm -rf /foo /bar
) 로 인해 rm -rf /foo/bar
또는 뇌 손상으로 인해(죄송합니다. 삭제 foo.old
하고 유지하라는 뜻입니다 foo.new
) 잘못된 콘텐츠를 삭제하지 않았는지 확인할 수 있습니다.
다른 사람이 를 입력하지 않을 것이라고 믿을 수 없다는 것이 문제라면 rm -rf
해당 사람의 관리자 권한을 제거하는 것이 좋습니다. 잘못될 수 있는 일이 더 많이 있습니다 rm
.
항상 백업해두세요.
백업이 제대로 작동하고 최신 상태인지 정기적으로 확인하세요.
어디에서나 쉽게 다운로드할 수 없는 모든 것을 버전 관리에 두십시오.
기본 UNIX 시스템의 경우 특정 디렉토리가 삭제되지 않도록 하려면 특정 매개변수를 거부하는 사용자 정의 스크립트로 rm
바꾸십시오(또는 섀도우하는 것이 더 좋습니다) . rm
아니면 패스하세요 hg rm
.
일부 UNIX 변형은 추가 가능성을 제공합니다.
- OSX에서는 설정할 수 있습니다액세스 제어 목록디렉터리에서는 새 항목이 생성되거나 기존 항목이 수정되는 것을 방지하지 않고 그 안의 파일 및 하위 디렉터리 삭제를 방지합니다. (
chmod +a 'group:everyone deny delete_child' somedir
이렇게 하면 하위 디렉터리의 파일 삭제가 방지되지 않습니다. 필요한 경우 하위 디렉터리에도 ACL을 설정합니다.) - Linux에서는 SELinux, AppArmor 또는 기타 보안 프레임워크에서 규칙을 설정하여
rm
특정 디렉터리의 수정을 금지할 수 있습니다.
답변2
zsh를 사용하는 경우 rm *
옵션을 설정할 수 있습니다 rmstarwait
.
setopt rmstarwait
이제 다음 명령을 사용할 때 셸에서 경고가 표시됩니다 *
.
> zsh -f
> setopt rmstarwait
> touch a b c
> rm *
zsh: sure you want to delete all the files in /home/unixuser [yn]? _
거부( n
)하면 아무 일도 일어나지 않습니다. 그렇지 않으면 모든 파일이 삭제됩니다.
답변3
C 프로그래밍 언어를 알고 있다면 rm 소스 코드를 다시 작성하고 커널에 대한 패치를 만드는 것이 가능하다고 생각합니다. 서버에서 이것을 보았는데 몇몇 중요한 디렉토리를 삭제할 수 없었고 "rm -rf /direcotyr"를 입력하면 시스템 관리자에게 이메일이 전송되었습니다.
답변4
디렉토리에 예상치 못한 일이 발생하는 것을 방지하려면 rm -rf *
디렉토리에 "-i"라는 파일을 만드십시오(이를 수행하려면 emacs나 다른 프로그램을 사용할 수 있습니다). 쉘은 -i를 해석하여 대화형 모드로 전환하려고 시도합니다.
rmtest
예를 들어, 이라는 파일이 포함된 디렉터리가 있습니다 -i
. rm
디렉토리 내의 모든 것을 시도하면 rm
먼저 디렉토리에 전달되고 -i
대화형 모드로 들어갑니다. 해당 파일을 보호하려는 디렉토리에 넣으면 도움이 될 수 있습니다.
이 쌍은 아무런 효과가 없습니다 rm -rf rmtest
.