Forum Linux.débutant Changer le propriétaire automatiquement d'un fichier

Posté par (page perso) . Licence CC by-sa
Tags : aucun
2
11
oct.
2016

Bonjour, je possède un gestionnaire de téléchargement en JAVA pour lequel j'ai crée un service systemd. Le gestionnaire à son propre compte sur le serveur sur lequel il n'est pas possible de se loguer. Le service utilise ce compte plutôt que root pour lancer le script java.

Tous les téléchargement vont dans le dossier "/home/downloads" dont le propriétaire est nobody:nogroup avec des droits en 777. Forcément, lorsque les fichiers sont téléchargés, le propriétaire est le gestionnaire de téléchargement, ce qui me gêne un petit peu. J'aimerais que les fichiers appartiennent à nobody:nogroup ou idéalement appartiennent automatiquement au propriétaire du dossier vers lequel le fichier est déplacé.

Je ne sais pas si c'est supporté nativement par Linux. Pour le moment la seule solution que j'ai trouvé, c'est d'écrire un script qui pourrait s'occuper de modifier le propriétaire des nouveaux fichiers copiés/déplacés.

Si vous avez d'autres solutions, je suis preneur.

Merci !

  • # nativement, il est possible d'agir sur le groupe

    Posté par . Évalué à 4.

    https://feub.net/2008/03/setuid-setgid-et-sticky-bit/

    setgid

    Le principe du setgid est le même que le setuid pour un fichier, mais bien entendu au niveau des droits du groupe. [ … ]
    Lorsqu’un répertoire est setgidé, tous les fichiers créés dans ce répertoire appartiennent au même groupe que le répertoire.

    Je ne connais pas de moyen d'agir directement sur l'owner. Celà dit :

    J'aimerais que les fichiers appartiennent à nobody:nogroup ou idéalement appartiennent automatiquement au propriétaire du dossier vers lequel le fichier est déplacé.

    Comment fait-on pour savoir, lorsqu'on dépose un fichier dans un répertoire, à qui est destiné ce fichier ?

    • [^] # Re: nativement, il est possible d'agir sur le groupe

      Posté par . Évalué à 2. Dernière modification le 18/10/16 à 19:51.

      +1 pour setguid qui est la solution traditionnelle et simple pour partager les accès sur des fichiers.

      Pour ce qui est de changer l'owner il est maintenant possible de surveiller grâce à inotify les ajouts de fichiers dans un répertoire et d’exécuter une commande dessus avec incron. On peut donc faire un chown / chmod.

      Pour cela :
      1 Installer le package incron
      2 Créer un fichier /etc/incron.d/nom_de_mon_job
      3 Editer son contenu et adapter la ligne suivante :

      /path/to/dir IN_MOVED_TO chown user:group $@/$#; chmod 0660 $@/$#

      4 Relancer le service incron

      Maintenant lorsqu'un fichier est déplacé dans /path/to/dir les deux commandes sont alors directement appelées.

  • # Directement en Java avec java.nio.file.Files

    Posté par (page perso) . Évalué à 3.

    Regarde la méthode setPosixFilePermissions de java.nio.file.Files, comme cela tu peux positionner les droits directement depuis ton service Java. Ça existe à partir de Java 7.

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.