Come impedire all'utente di modificare i file utilizzando l'autorizzazione linux


8

È possibile, utilizzando lo schema delle autorizzazioni di Linux, consentire agli utenti di creare file ma non modificarli o eliminarli in un secondo momento? Voglio dire, abbiamo una cartella di consegna in cui gli utenti inseriscono artefatti e non vogliamo che questi artefatti vengano modificati dopo la consegna, ovvero modificati o eliminati.


Risposte:


2

Non puoi farlo: se l'utente può creare file, saranno di sua proprietà e sarà in grado di modificarli e cancellarli.

Stavo per proporre un semplice schema per avere una directory di gestione temporanea (in cui l'utente può fare ciò che desidera) e una directory in arrivo (non accessibile all'utente), con un piccolo programma privilegiato per spostare i file dalla directory di gestione temporanea in arrivo directory. Ma in realtà è difficile fare la cosa giusta: tra le altre cose devi fare attenzione che il programma privilegiato non sposterà i file in altre directory (attenzione alle condizioni di gara, collegamenti simbolici ../), non sovrascriverà i file esistenti ( rename(3)è atomico ma può cancella la destinazione), non permetterà all'utente di tenere aperto un descrittore di file e di modificarlo dopo che è stato spostato (quindi è meglio copiare che spostare). Invece, ti consiglio di prendere una soluzione esistente e solida:

  • Chiedi all'utente di caricare il file su HTTP.
  • Chiedi all'utente di impegnarsi in un sistema di controllo della versione. Sarà anche in grado di eseguire il commit di nuove versioni.

1

È possibile, utilizzando lo schema delle autorizzazioni di Linux, consentire agli utenti di creare file ma non modificarli o eliminarli in un secondo momento?

NO

Ma hai altre opzioni come suggerito da @Fredrik nel commento alla tua domanda. Vedere qui.


0

Ecco un approccio che dovrebbe teoricamente funzionare. È uno sforzo eccessivo per me sviluppare persino una prova di concetto; puoi rifiutarlo per lo stesso motivo. E, a rigor di termini, non si tratta di "utilizzare lo schema delle autorizzazioni di Linux".

  • Ottieni un file server open source.
  • Modificalo per applicare le regole che desideri (ad esempio, gli utenti possono creare file in directory a cui hanno accesso in scrittura e possono scrivere su un file immediatamente dopo averlo creato, ma, successivamente, nessuno tranne root può aprire un file per scrivere o scollegare esso).
  • Configurare un host server che esegue il software server modificato. Teoricamente potrebbe essere il tuo host locale; assicurati solo che la directory da cui funziona non sia accessibile pubblicamente.
  • NFS monta il tuo /mnt/deliverye dice ai tuoi utenti di mettere lì i loro file.

0

La semplice risposta è eseguire uno script su un determinato intervallo scelto (diciamo ogni 15 minuti) che riassegni la proprietà di tutti i file nella directory "upload" a un utente "admin" prestabilito e imposti le autorizzazioni su "644". Ciò consentirà a tutti gli utenti l'accesso in sola lettura a tutti i file nella directory di caricamento, inclusi quelli caricati da soli. Naturalmente, è possibile ottimizzare lo script dopo la prima esecuzione per cercare solo quei file con date create dopo la precedente esecuzione dello script (ad esempio negli ultimi 17 minuti).

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.