저는 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/bashrc
bash
$ 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
.