사용자 소유 디렉터리에서 특정 파일이 삭제되는 것을 방지할 수 있는 방법이 있습니까?

사용자 소유 디렉터리에서 특정 파일이 삭제되는 것을 방지할 수 있는 방법이 있습니까?

사용자가디렉토리 1그것은 포함한다파일 1 파일 2는 파일을 삭제할 수 없습니다. 사용자가 삭제하지 못하도록 하는 방법삭제할 수 없는 파일?

내가 소유권을 바꾸면디렉토리 1쓰기 권한을 제거하면 사용자는 어떤 파일도 삭제할 수 없습니다. 또한 새 파일 등을 추가할 수도 없습니다.

나는 결코 삭제되지 않을 일부 파일을 설정할 수 있기를 원합니다.

좀 더 구체적인 설명입니다.

사용자 프로필을 만들고 있습니다. 응용 프로그램 실행 파일을 만드는 중입니다.데스크탑. 그래서 일부 런처 파일(.desktop)을 설정하고 사용자가 해당 파일을 실행할 수만 있고 이름을 바꾸거나 삭제할 수 없고 실행만 할 수 있도록 만들고 싶습니다.

현재 사용자가 파일이 포함된 디렉터리를 소유한 경우입니다. 그는 그것을 삭제할 수 있습니다.

모든 *nix에서 작동하는 모든 것에 적용되는 단일한 접근 방식이 없다면 Linux와 ext4 FS입니다.

답변1

파일을 변경할 수 없도록 하려면 이 속성을 사용하십시오 i.

chattr +i file.desktop

자세한 내용은 을 참조하세요 man chattr.

답변2

(저는 사용자의 집에 침입하는 것을 좋아하지 않습니다. 사용자가 집에서 원하는 것은 무엇이든 할 수 있어야 한다고 생각합니다...하지만 무엇이든...)

이것은 Linux에서 작동합니다(적어도). 나는 user이미 그룹의 구성원이라고 가정합니다 user. 해결책은 Directory1디렉토리의 소유권을 변경 하고 고정 비트를 설정하는 것입니다.

chown root:user Directory1
chmod 1775 Directory1

그런 다음 다음을 사용하십시오.

chown root Directory1/CantBeDeletedFile

이제 user고정 비트 1로 인해 파일이 삭제되지 않습니다. 여전히 user그렇게 할 수 있습니다. 그러나 해당 항목은 비워지지 않으므로 Directory1삭제할 수 없습니다 .Directory1


1. 디렉터리에 고정 비트가 활성화되어 있으면 사용자(소유자 제외)는 디렉터리에서 자신의 파일만 삭제할 수 있습니다. 이는 /tmp권한이 1777= 인 디렉토리에 사용됩니다 rwxrwxrwt.

답변3

Unix 파일 권한이 있는 단일 파일의 삭제를 방지하는 방법은 없다고 생각하지만 해결 방법은 생각할 수 있습니다. 파일이 삭제될 때 파일을 대체하는 데몬을 작성하는 것입니다. inotify-toolsLinux를 사용하고 있다면 이런 종류의 일에 아주 좋습니다.

삭제된 항목을 바꾸는 방법에는 여러 가지가 있습니다. 새 항목을 복사하거나 실제 파일을 안전한 장소에 저장하고 링크를 사용자 디렉터리에 복사하는 것입니다. 링크의 경우 심볼릭 링크나 하드 링크를 사용할 수 있습니다. 나는 심볼릭 링크로 시작하겠지만 일부 (몇몇) 프로그램은 심볼릭 링크를 올바르게 처리하지 못합니다. 사용자가 이러한 프로그램을 접하는 경우 대신 하드 링크를 사용하십시오.

답변4

Linux에 관해 구체적으로 질문하셨지만 이러한 질문을 읽는 다른 독자들의 이익을 위해 BSD와 macOS는 이미chflags또한 (단지 삭제를 방지하는 것이 아니라) 파일을 완전히 보호하는 데에도 사용할 수 있습니다.

"uchg" 플래그는 사용자 수준입니다. 사용자가 직접 이 플래그를 지울 수도 있습니다.

chflags uchg file-to-protect

시스템 수준인 "schg" 플래그도 있습니다. "schg"를 추가하거나 제거하려면 sudo가 필요합니다.

chflags schg file-to-protect

관련 정보