Comment empêcher l'utilisateur de modifier des fichiers en utilisant l'autorisation Linux

8

Est-il possible, en utilisant le schéma d'autorisation linux, d'autoriser les utilisateurs à créer des fichiers sans les modifier ou les supprimer ultérieurement? Je veux dire, nous avons un dossier de livraison où les utilisateurs y mettent des artefacts et nous ne voulons pas que ces artefacts soient modifiés après leur livraison, c'est-à-dire modifiés ou supprimés.

Gilles 'SO- arrête d'être méchant'
la source

Réponses:

2

Vous ne pouvez pas faire cela: si l'utilisateur peut créer des fichiers, ils lui appartiendront et il pourra les modifier et les effacer.

J'allais proposer un schéma simple pour avoir un répertoire intermédiaire (où l'utilisateur peut faire ce qu'il veut) et un répertoire entrant (non accessible à l'utilisateur), avec un petit programme privilégié pour déplacer des fichiers du répertoire intermédiaire vers le entrant annuaire. Mais il est en fait difficile de bien faire les choses: entre autres, vous devez vous assurer que le programme privilégié ne déplace pas les fichiers dans d'autres répertoires (méfiez-vous des conditions de concurrence, des liens symboliques, ../), n'écrasera pas les fichiers existants ( rename(3)est atomique mais peut effacer la destination), ne permettra pas à l'utilisateur de garder un descripteur de fichier ouvert et de modifier le fichier après son déplacement (il vaut donc mieux copier que déplacer). Au lieu de cela, je recommanderai de prendre une solution existante et robuste:

  • Demandez à l'utilisateur de télécharger le fichier via HTTP.
  • Demandez à l'utilisateur de s'engager dans un système de contrôle de version. Il pourra également valider de nouvelles versions.
Gilles 'SO- arrête d'être méchant'
la source
1

Est-il possible, en utilisant le schéma d'autorisation linux, d'autoriser les utilisateurs à créer des fichiers sans les modifier ou les supprimer ultérieurement?

NON

Mais vous avez d'autres options comme suggéré par @Fredrik dans le commentaire de votre question. Vois ici.

ssapkota
la source
0

Voici une approche qui devrait théoriquement fonctionner. C'est trop d'efforts pour moi de développer même une preuve de concept; vous pouvez le rejeter pour la même raison. Et, à proprement parler, ce n'est pas «en utilisant le schéma d'autorisation Linux».

  • Obtenez un serveur de fichiers open source.
  • Modifiez-le pour appliquer les règles que vous souhaitez (c.-à-d., Les utilisateurs peuvent créer des fichiers dans des répertoires auxquels ils ont accès en écriture et peuvent écrire dans un fichier immédiatement après sa création, mais, par la suite, personne d'autre que root ne peut ouvrir un fichier pour l'écriture ou la dissociation. il).
  • Configurez un hôte de serveur exécutant votre logiciel serveur modifié. Théoriquement, il pourrait s'agir de votre hôte local; assurez-vous simplement que le répertoire à partir duquel il fonctionne n'est pas accessible au public.
  • NFS monte votre /mnt/deliveryet dites à vos utilisateurs d'y mettre leurs fichiers.
Scott
la source
0

La réponse simple est d'exécuter un script sur un intervalle donné que vous choisissez (disons toutes les 15 minutes) qui réattribue la propriété de tous les fichiers du répertoire "upload" à un utilisateur "admin" prédéterminé et définit les autorisations sur "644". Cela permettra à tous les utilisateurs d'accéder en lecture seule à tous les fichiers du répertoire de téléchargement, y compris ceux qu'ils ont eux-mêmes téléchargés. Bien sûr, vous pouvez optimiser le script après la première exécution pour rechercher uniquement les fichiers avec des dates créées après l'exécution précédente du script (disons au cours des 17 dernières minutes).

Michael Yaeger
la source