Apakah mungkin membuat file yang memiliki izin penuh untuk semua orang tetapi tidak mungkin dihapus?


Jawaban:


3

Mencoba:

chattr +i filename

Melakukan hal ini, akan membuat file tersebut tidak dapat dihapus bahkan oleh rootpengguna - gunakan dengan hati-hati.


5
ketika melakukan touch test && chattr +i testitu melempar kesalahan; chattr: Operation not permitted while setting flags on test. Anda membutuhkan sudoini. Di samping itu: masih mungkin untuk menghapus file: sudo chattr -i test && rm testberfungsi.
Rinzwind

23

Tidak, ini tidak mungkin. Tidak mungkin bagi pengguna normal untuk menghapus file: tentu.

  1. Anda harus sudomencegah pengguna menghapus file. Administrator Anda akan selalu dapat menghapus file.

  2. sudo chattr +i testdapat mencegah penghapusan tetapi memang membutuhkan sudo. Sederhana sudo chattr -i testmemungkinkan untuk menghapus file. Tidak ada pengguna selain admin yang dapat digunakan chattr.

Dan ... cukup reboot dan masuk ke mode penyelamatan akan memungkinkan orang itu untuk dapat menghapus file itu. Ini akan menjadi risiko keamanan jika ada metode untuk tidak pernah dapat menghapus file.


8

Agak kasar, tetapi ini dekat - jika Anda menghapus akses tulis pada direktori, file di dalamnya tidak dapat dihapus. Dan itu tidak diperlukan sudojika Anda memilikinya:

=^_^= 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

Jadi, Anda dapat mengatur izin pada file itu sendiri seperti yang Anda inginkan.

Juga, seperti yang dinyatakan oleh @Rinzwind, pasti ada banyak cara untuk mengatasinya.


Ini persis seperti yang diinginkan OP. (Meskipun mengapa mereka menginginkannya, saya tidak yakin.) Pengguna dapat membaca, mengubah, dan menjalankan file, tetapi tidak dapat memutuskan tautan (menghapus) mereka.
Eliah Kagan

8

Untuk menghapus file, Anda harus menulis izin untuk semua direktori yang terhubung dengan file tersebut. Untuk memutuskan tautannya dari satu direktori, Anda perlu izin tulis ke direktori itu.

Jadi, selama Anda memberikan izin menulis (atau bahkan kepemilikan) ke file tetapi tidak ke direktori atau direktori tempat file itu ditautkan, file itu tidak dapat dihapus.

Cara terbaik untuk mencapainya adalah dengan menautkan file itu ke direktori yang dimiliki oleh root dan itu tidak dapat ditulisi oleh siapa pun. Anda dapat menjadikannya milik Anda sebagai gantinya yang berarti Anda dan root dapat menghapusnya.

Itu masih akan memungkinkan pengguna lain untuk menautkan file itu ke direktori lain dan memutusnya setelah itu, tetapi mereka masih tidak dapat menghapus file karena mereka akan dapat memutuskan tautannya dari direktori Anda sendiri.

Perhatikan bahwa agar itu berfungsi sepenuhnya, izin penulisan setiap komponen jalur ke file harus dikontrol. Karena misalnya jika file tersebut adalah /a/b/the-filedan Anda /a/bbelum dapat ditulisi oleh siapa pun tetapi semua orang memiliki akses tulis /a, maka mereka dapat mengubah nama /a/bmenjadi sesuatu yang lain dan membuat ulang milik mereka sendiri /a/bdan membuat milik mereka di /a/b/the-filesana.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.