$ ls sess.vim -lh
-rw-r--r-- 1 root root 11K Feb 26 18:52 sess.vim
나는 이 파일을 모든 사람이 읽을 수 있지만 루트를 제외한 누구도 쓸 수 없도록 하고 싶습니다. 그래서 644
권한과 소유권을 root:root
.
$ echo "text" >> sess.vim
zsh: permission denied: sess.vim
좋아 보인다. vim에서 일부 변경을 한 후 실행 :w!
(강제 쓰기)을 했더니 파일이 성공적으로 저장되었습니다. 지금:
$ ls sess.vim -lh
-rw-r--r-- 1 MY_USERNAME users 11K Feb 26 19:06 sess.vim
무게..왜? 어떻게?
답변1
vim에서 다음과 같이 사용하십시오 :w!
.
echo 'test' > sess.vim.temp
mv sess.vim.temp sess.vim
이 mv
명령은 파일 권한이 아닌 디렉터리 권한에만 관심을 갖습니다. 이는 파일에 쓰는 것이 아니라 디렉터리를 수정하기 때문입니다. 목표를 달성하려면 파일이 있는 디렉터리의 권한도 조정해야 합니다.
답변2
이는 상위 디렉터리의 사용자 및 그룹 소유권이 your-username:your-group-name이기 때문에 작동합니다.
사용자가 디렉토리의 소유자이고 디렉토리에 대한 쓰기 권한이 있는 경우 해당 사용자는 파일 권한에 관계없이 그 안에 포함된 모든 파일을 삭제할 수 있습니다. 나는 vim이 편집한 파일의 링크를 해제(삭제)하고 :wq! 주어진.