Tanpa menggunakan sudo, lebih disukai?
Tanpa menggunakan sudo, lebih disukai?
Jawaban:
Mencoba:
chattr +i filename
Melakukan hal ini, akan membuat file tersebut tidak dapat dihapus bahkan oleh root
pengguna - gunakan dengan hati-hati.
touch test && chattr +i test
itu melempar kesalahan; chattr: Operation not permitted while setting flags on test
. Anda membutuhkan sudo
ini. Di samping itu: masih mungkin untuk menghapus file: sudo chattr -i test && rm test
berfungsi.
Tidak, ini tidak mungkin. Tidak mungkin bagi pengguna normal untuk menghapus file: tentu.
Anda harus sudo
mencegah pengguna menghapus file. Administrator Anda akan selalu dapat menghapus file.
sudo chattr +i test
dapat mencegah penghapusan tetapi memang membutuhkan sudo
. Sederhana sudo chattr -i test
memungkinkan 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.
Agak kasar, tetapi ini dekat - jika Anda menghapus akses tulis pada direktori, file di dalamnya tidak dapat dihapus. Dan itu tidak diperlukan sudo
jika 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.
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-file
dan Anda /a/b
belum dapat ditulisi oleh siapa pun tetapi semua orang memiliki akses tulis /a
, maka mereka dapat mengubah nama /a/b
menjadi sesuatu yang lain dan membuat ulang milik mereka sendiri /a/b
dan membuat milik mereka di /a/b/the-file
sana.