Chown – L'opération n'est pas autorisée

Je suis connecté comme minime.

Je ne comprends pas pourquoi il ne me permet pas de déposer un fichier que je possède sans privilèges. Évidemment, je peux utiliser sudo, mais j'aimerais comprendre pourquoi? En raison du groupe www-data?

chown minime:www-data user-functions.php ls -lh -rw-r--r-- 1 minime minime 24K Jan 6 16:11 user-functions.php Error: chown: changing ownership of `user-functions.php': Operation not permitted 

Les utilisateurs non privilégiés (pas root) ne peuvent pas chown fichiers vers d'autres noms d'utilisateurs. Pour utiliser chown , un utilisateur doit avoir les privilèges de l'utilisateur cible. En d'autres termes, seule la root peut donner un fichier à un autre utilisateur.

Comme expliqué ici (merci @slhck):

Seuls les processus avec une ID utilisateur efficace égal à l'ID utilisateur du fichier ou avec les privilèges appropriés peuvent changer la propriété d'un fichier. Si _POSIX_CHOWN_RESTRICTED est en vigueur pour le chemin d'accès:

  • La modification de l'ID utilisateur est limitée aux processus avec les privilèges appropriés.

  • La modification de l'ID de groupe est permise pour un processus avec un identifiant d'utilisateur effectif égal à l'ID utilisateur du fichier, mais sans les privilèges appropriés, si et seulement si le propriétaire est égal à l'ID utilisateur ou (uid_t) -1 et le groupe est égal Soit à l'identification de groupe efficace de l'appelant, soit à l'un de ses identifiants de groupe supplémentaires.

La raison d'être de cela a été bien expliquée par @Gilles dans cette réponse Unix & Linux:

La raison de cette restriction est que donner un fichier à un autre utilisateur peut permettre de mauvaises choses dans des situations peu communes, mais toujours importantes. Par exemple:

  • Si un système a des quotas de disque activés, Alice pourrait créer un fichier pouvant être écrit en entier dans un répertoire accessible uniquement par elle (afin que personne d'autre ne puisse accéder à ce fichier pouvant être écrit dans le répertoire dans le monde entier), puis exécuter chown pour que ce fichier appartienne Un autre utilisateur Bill. Le fichier comptait alors sous le quota de disque de Bill, même si seul Alice peut utiliser le fichier.
  • Si Alice donne un dossier à Bill, il n'y a aucune trace que Bill n'a pas créé ce fichier. Cela peut être un problème si le fichier contient des données illégales ou autrement compromettantes.
  • Certains programmes exigent que leur fichier d'entrée appartienne à un utilisateur particulier afin d'authentifier une demande (par exemple, le fichier contient certaines instructions que le programme effectuera pour le compte de cet utilisateur). Ce n'est généralement pas un design sécurisé, car même si Bill a créé un fichier contenant des instructions syntaxiquement correctes, il n'a peut-être pas l'intention de les exécuter à ce moment précis. Néanmoins, permettre à Alice de créer un fichier avec un contenu arbitraire et de le prendre comme contribution de Bill ne peut que gêner les choses.