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

15

Tanpa menggunakan sudo, lebih disukai?

Evan
sumber
2
Ya Tuhan, apa bedanya? ars.userfriendly.org/cartoons/?id=19981111 Secara praktis, file yang bahkan tidak bisa dihapus setelah root akan menjadi impian pembuat malware.
Dan Neely
Saya setuju pemformatan @DanNeely Plus adalah bentuk menghapus file juga;)
Rinzwind

Jawaban:

3

Mencoba:

chattr +i filename

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

Aditya
sumber
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.

Rinzwind
sumber
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.

Izkata
sumber
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.

Stéphane Chazelas
sumber