모든 사람에게 모든 권한이 있지만 삭제할 수없는 파일을 만들 수 있습니까?


답변:


3

시험:

chattr +i filename

그러나 이렇게하면 root사용자 가 파일을 삭제할 수 없게되므로 주의해서 사용하십시오.


5
할 때 touch test && chattr +i test오류가 발생합니다. chattr: Operation not permitted while setting flags on test. 당신이 필요 sudo합니다. 그 옆 : 여전히 파일을 삭제할 수 있습니다 : sudo chattr -i test && rm test작동합니다.
Rinzwind

23

아니요, 불가능합니다. 일반 사용자가 파일을 삭제하는 것은 불가능합니다.

  1. 사용자가 sudo파일을 삭제하지 못하게 해야 합니다. 관리자는 항상 파일을 삭제할 수 있습니다.

  2. sudo chattr +i test삭제를 방지 할 수 있지만 필요합니다 sudo. 간단 sudo chattr -i test하게 파일을 제거 할 수 있습니다. admin 이외의 다른 사용자는 사용할 수 없습니다 chattr.

그리고 ... 단순히 재부팅하고 복구 모드로 들어가면 해당 사용자가 해당 파일을 삭제할 수 있습니다. 파일을 절대 삭제할 수없는 방법이 있다면 보안 위험이 있습니다.


8

약간 조잡하지만 가까이에 있습니다. 디렉토리에서 쓰기 권한을 제거하면 그 안의 파일을 삭제할 수 없습니다. 그리고 sudo소유하고 있으면 필요하지 않습니다 .

=^_^= izkata@izein:~$ mkdir test
=^_^= izkata@izein:~$ touch test/delme
=^_^= izkata@izein:~$ chmod a-w test
=^_^= izkata@izein:~$ echo 'Hello' > test/delme 
=^_^= izkata@izein:~$ cat test/delme 
Hello
=^_^= izkata@izein:~$ rm test/delme 
rm: cannot remove `test/delme': Permission denied

따라서 원하는 파일 자체에 대한 권한을 설정할 수 있습니다.

또한 @Rinzwind가 언급했듯이 그 주위에는 많은 방법이 있습니다.


이것은 OP가 원하는 것과 정확히 같습니다. ( 원하는 이유 는 확실하지 않습니다.) 사용자는 파일을 읽고 변경하고 실행할 수는 있지만 링크를 해제 (제거) 할 수는 없습니다.
Eliah Kagan

8

파일을 삭제하려면 해당 파일이 연결된 모든 디렉토리에 대한 쓰기 권한이 필요합니다. 한 디렉토리에서 링크를 해제하려면 해당 디렉토리에 대한 쓰기 권한이 필요합니다.

파일에 대한 쓰기 권한 (또는 소유권)을 부여 하지만 파일이 연결된 디렉토리 나 디렉토리에 대한 쓰기 권한을 부여 하지 않는 한 해당 파일을 삭제할 수 없습니다.

이를 달성하는 가장 좋은 방법은 해당 파일을 루트가 소유하고 누구도 쓸 수없는 디렉토리에 링크하는 것입니다. 대신 당신이 그것을 소유 할 수 있습니다. 즉, 당신과 루트 모두 삭제할 수 있습니다.

그래도 다른 사용자가 해당 파일을 다른 디렉토리에 링크 한 후 링크를 ​​해제 할 수는 있지만, 자신의 디렉토리에서 링크를 해제 할 수 있기 때문에 파일을 삭제할 수는 없습니다.

이 기능이 완전히 작동하려면 파일에 대한 모든 경로 구성 요소의 쓰기 권한이 제어되어야합니다. 예를 들어 파일이 /a/b/the-file있고 /a/b다른 사람이 쓸 수는 없지만 모든 사람이에 쓰기 권한을 가지고 있으면 다른 것으로 /a이름 /a/b을 바꾸고 자신을 다시 /a/b만들고 자신 을 만들 수 /a/b/the-file있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.