실수로 파일을 삭제하는 것을 방지하세요

실수로 파일을 삭제하는 것을 방지하세요

저는 RHEL 서버의 사용자입니다(루트 아님). 내 홈 디렉터리에서 파일을 계속 편집할 수 있기를 원하지만 실수로 삭제하지 않도록 권한을 설정합니다. 가능합니까? 삭제하기 전에 보조 메시지(예: "정말입니까? y/n")가 필요하도록 만들 수 있나요?

답변1

다음을 통해 파일을 삭제할 수 있습니다.풀리다이는 자신이 참조하는 디렉터리를 가리킵니다(파일은 여러 디렉터리에서 참조되거나 디렉터리를 여러 번(다른 이름으로) 참조할 수 있으며, 이를 일반적으로 하드 링크라고 합니다).

그러면 중요한 권한은 파일의 권한이 아니라 파일이 연결된 디렉터리의 권한입니다.

따라서 쓰기 권한이 없는 디렉토리에 넣으면 다음과 같습니다.

mkdir important-files
echo test > important-files/myfile
chmod a-w important-files # make the directory not writable

그러면 을(를) 삭제할 수는 없지만 myfile파일이 쓰기 가능한 한 파일을 수정할 수는 있습니다.

답변2

하위 디렉터리를 만들고 자신의 쓰기 권한을 제거하면 해당 디렉터리의 파일을 삭제할 수는 없지만 수정할 수는 있습니다.

$ mkdir dir ; echo something > dir/foo ; chmod a-w dir
$ $EDITOR dir/foo
$ rm -rf dir/
rm: cannot remove 'dir/foo': Permission denied

콘텐츠를 편집하는 동안 내용이 깨지거나 잘릴 수 있지만 더 나은 옵션은 백업을 만드는 것입니다. 시스템 관리자는 삭제할 수 없는 디렉터리에 백업을 저장할 수 있지만(해야 할까요?) 기본적으로 위와 동일한 아이디어를 사용하여 저렴한 시뮬레이션을 수행할 수 있습니다. 디렉터리를 만들고 쓰기 권한을 복원하는 임시 디렉터리를 만듭니다. 해당 디렉토리에 백업 사본을 만들고 쓰기 권한을 다시 지우십시오.

답변3

내 홈 디렉터리에서 파일을 계속 편집할 수 있기를 원하지만 실수로 삭제하지 않도록 권한을 설정합니다. 가능합니까?

즉, 모든 파일이 일반적인 Unix 권한을 갖고 있는 것은 아닙니다. 아마도ACL이렇게 세밀한 제어가 가능할까요?

삭제하기 전에 보조 프롬프트(예: "정말입니까? y/n")가 필요하도록 만들 수 있나요?

rm일반적인 해결 방법은 in (배포판에서 지원하는 경우) 또는 전역적으로 ( 패키지 업데이트로 덮어쓸 수 있으므로 이 옵션을 사용하지 않는 것이 가장 좋음) rm -i와 같이 to 에 대한 별칭을 설정하는 것입니다 .~/.bash_aliases~/.bashrc/etc/bashrcbash

$ cat .bash_aliases 
alias rm='rm -i'
...

답변4

이는 myFile 변수에 지정한 하나의 파일에 대해서만 작동합니다.

#
# Wrapper around /bin/rm to prevent accidental `rm myFile`
#
rm (){
local rm=$(which rm)

myFile="important.txt"

if [ -f "$myFile" ]; then
  $rm -iv "$myFile"
else
  $rm "$@"
fi

}

/etc/profile에 추가한 다음 ./etc/profile.

관련 정보