Bagaimana mencegah pengguna mengubah file menggunakan izin linux

8

Apakah mungkin, menggunakan skema izin linux, untuk memungkinkan pengguna membuat file tetapi tidak mengedit atau menghapusnya di lain waktu? Maksud saya, kami memiliki folder pengiriman di mana pengguna meletakkan artefak di sana dan kami tidak ingin artefak ini diubah setelah dikirim yaitu diedit atau dihapus.

Gilles 'SANGAT berhenti menjadi jahat'
sumber

Jawaban:

2

Anda tidak dapat melakukan itu: jika pengguna dapat membuat file, mereka akan dimiliki olehnya, dan ia akan dapat memodifikasinya dan menghapusnya.

Saya akan mengusulkan skema sederhana untuk memiliki direktori pementasan (di mana pengguna dapat melakukan apa yang diinginkannya) dan direktori masuk (tidak dapat diakses oleh pengguna), dengan program kecil istimewa untuk memindahkan file dari direktori pementasan ke yang masuk. direktori. Tapi itu sebenarnya sulit dilakukan dengan benar: di antara hal-hal lain Anda perlu berhati-hati bahwa program istimewa tidak akan memindahkan file di direktori lain (waspadalah terhadap kondisi ras, tautan simbolis, ../), tidak akan menimpa file yang ada ( rename(3)bersifat atomik tetapi dapat hapus tujuan), tidak akan membiarkan pengguna membuka deskriptor file dan memodifikasi file setelah dipindahkan (sehingga Anda lebih baik menyalin daripada memindahkan). Sebagai gantinya, saya akan merekomendasikan untuk mengambil solusi yang kuat dan sudah ada:

  • Minta pengguna mengunggah file melalui HTTP.
  • Minta pengguna berkomitmen pada sistem kontrol versi. Dia akan dapat melakukan versi baru juga.
Gilles 'SANGAT berhenti menjadi jahat'
sumber
1

Apakah mungkin, menggunakan skema izin linux, untuk memungkinkan pengguna membuat file tetapi tidak mengedit atau menghapusnya di lain waktu?

TIDAK

Tetapi Anda memiliki opsi lain seperti yang disarankan oleh @Fredrik dalam komentar untuk pertanyaan Anda. Lihat disini.

ssapkota
sumber
0

Inilah pendekatan yang seharusnya, secara teoritis, bekerja. Terlalu banyak usaha bagi saya untuk mengembangkan bahkan konsep bukti; Anda dapat menolaknya karena alasan yang sama. Dan, sebenarnya, ini bukan "menggunakan skema izin Linux."

  • Dapatkan server file sumber terbuka.
  • Mengubahnya untuk menegakkan aturan yang Anda inginkan (yaitu, pengguna dapat membuat file dalam direktori yang mereka miliki aksesnya untuk menulis, dan dapat menulis ke file segera setelah membuatnya, tetapi, setelah itu, tidak ada orang selain root yang dapat membuka file untuk ditulis atau dihapus tautannya Itu).
  • Siapkan host server yang menjalankan perangkat lunak server Anda yang dimodifikasi. Secara teoritis itu bisa menjadi tuan rumah lokal Anda; pastikan saja direktori tempat kerjanya tidak dapat diakses secara publik.
  • NFS me-mount Anda /mnt/deliverydan memberi tahu pengguna Anda untuk meletakkan file mereka di sana.
Scott
sumber
0

Jawaban sederhananya adalah menjalankan skrip pada interval tertentu yang Anda pilih (katakan setiap 15 menit) yang menetapkan kembali kepemilikan semua file dalam direktori "unggah" ke pengguna "admin" yang telah ditentukan dan setel izin ke "644". Ini akan memungkinkan semua pengguna akses hanya baca ke semua file di direktori unggahan termasuk yang mereka unggah sendiri. Tentu saja, Anda dapat mengoptimalkan skrip setelah menjalankan pertama untuk hanya mencari file-file dengan tanggal yang dibuat setelah menjalankan skrip sebelumnya (katakan dalam 17 menit terakhir).

Michael Yaeger
sumber