it-swarm-id.com

Apakah ada cara untuk mencegah penghapusan file tertentu dari direktori milik pengguna?

Katakanlah pengguna memiliki Directory1 dan berisi File1 File2 CantBeDeletedFile Cara membuatnya agar pengguna mau tidak pernah diizinkan untuk menghapus CantBeDeletedFile ?

Jika saya mengubah kepemilikan Directory1 dan menghapus izin menulis, pengguna tidak akan dapat menghapus file apa pun. Mereka juga tidak akan dapat menambahkan file baru dll.

Saya hanya ingin dapat mengatur beberapa file yang tidak akan pernah dihapus.

Deskripsi yang lebih spesifik.

Saya membuat profil pengguna. Saya membuat file peluncur aplikasi di Desktop mereka. Jadi saya ingin mengatur beberapa file peluncur (.desktop) dan membuatnya jadi pengguna hanya bisa meluncurkannya dan mereka tidak bisa mengganti nama atau menghapus, luncurkan saja.

Saat ini jika pengguna memiliki direktori yang berisi file apa pun. Dia bisa menghapus.

Jika tidak ada cara umum untuk semua * nix, ini adalah Linux dan ext4 FS.

44
bakytn

(Saya tidak suka mengganggu pengguna di rumah, saya pikir mereka harus diizinkan untuk melakukan apa pun yang mereka inginkan dengan rumah mereka ... tapi bagaimanapun ...)

Ini harus bekerja di linux (setidaknya). Saya berasumsi user sudah menjadi anggota grup user. Solusinya adalah mengubah kepemilikan Directory1 dan atur bit sticky pada direktori:

chown root:user Directory1
chmod 1775 Directory1

Kemudian gunakan:

chown root Directory1/CantBeDeletedFile

Sekarang, user tidak akan dapat menghapus file ini karena bit yang lengket¹. user masih dapat menambah/menghapus file mereka sendiri di Directory1. Tetapi perhatikan bahwa mereka tidak akan dapat menghapus Directory1 karena itu tidak akan pernah dikosongkan.

-
1. Ketika bit sticky diaktifkan pada direktori, pengguna (selain pemilik) hanya dapat menghapus file mereka sendiri di dalam direktori. Ini digunakan pada direktori seperti /tmp yang memiliki izin 1777 = rwxrwxrwt.

42

Buat file tidak berubah dengan atribut i.

chattr +i file.desktop

lihat man chattr untuk informasi lebih lanjut.

64
Keith

Saya tidak berpikir ada cara untuk mencegah penghapusan file individual dengan izin file Unix, tapi saya bisa memikirkan solusinya: menulis daemon yang menggantikannya ketika dihapus. inotify-tools sempurna untuk hal semacam ini jika Anda menggunakan Linux.

Ada beberapa cara Anda dapat mengganti item yang dihapus: salin yang baru di tempat, atau simpan file asli di tempat yang aman dan cukup salin tautan ke direktori pengguna. Untuk tautan, Anda bisa menggunakan symlink atau tautan keras. Saya akan mulai dengan symlink, tetapi beberapa (sangat sedikit) program tidak menangani symlink dengan benar. Jika ternyata pengguna menemukan program seperti ini, gunakan tautan keras.

2
Shawn J. Goff

Sederhana

chmod -i filename

agak akan "melindungi" file itu dari penghapusan.

rm filename
rm: remove write-protected regular file 'filename'?

Anda masih dapat menghapusnya, tetapi setidaknya Anda harus cukup yakin tentang apa yang Anda lakukan.

0
fiatjaf