chown - Opération non autorisée

37

Je suis connecté en tant que minime.

Je ne comprends pas pourquoi cela ne me permet pas de chown fichier que je possède sans privilèges su. Évidemment, je peux utiliser sudo, mais j'aimerais comprendre pourquoi? à cause 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

la source

Réponses:

51

Les utilisateurs non privilégiés (pas root) ne peuvent pas chowndéposer de fichiers vers d'autres noms d'utilisateurs. Pour l'utiliser chown, un utilisateur doit disposer des privilèges de l'utilisateur cible. En d'autres termes, seul rootpeut donner un fichier à un autre utilisateur.

Comme expliqué ici (merci @slhck):

Seuls les processus avec un ID utilisateur effectif é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:

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

  • La modification de l'ID de groupe est autorisée pour un processus avec un ID 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 du fichier ou (uid_t) -1 et que le groupe est égal soit à l'ID de groupe effectif du processus appelant, soit à l'un de ses ID de groupe supplémentaires.

La raison derrière cela a été bien expliquée par @Gilles dans cette réponse Unix et Linux:

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

  • Si un système a des quotas de disque activés, Alice pourrait créer un fichier accessible en écriture dans un répertoire accessible uniquement par elle (donc personne d'autre ne pourrait accéder à ce fichier en écriture dans le répertoire), puis exécuter chown pour que ce fichier appartienne à un autre utilisateur Bill. Le fichier compterait alors sous le quota de disque de Bill même si seule Alice peut utiliser le fichier.
  • Si Alice donne un fichier à 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 compromettantes.
  • Certains programmes nécessitent que leur fichier d'entrée appartienne à un utilisateur particulier afin d'authentifier une demande (par exemple, le fichier contient des instructions que le programme exécutera au nom de cet utilisateur). Ce n'est généralement pas une conception sécurisée, car même si Bill a créé un fichier contenant des instructions syntaxiquement correctes, il n'a peut-être pas eu l'intention de les exécuter à ce moment particulier. Néanmoins, permettre à Alice de créer un fichier avec un contenu arbitraire et de le prendre comme entrée de Bill ne peut qu'empirer les choses.
terdon
la source
Merci @slhck J'ai vérifié la manpage et je n'ai pas trouvé de mention explicite à ce sujet, réponse mise à jour.
terdon
génial! très clair maintenant ... et si minime fait partie du groupe www-data?
@SandroDzneladze non, vous devez avoir le même ID utilisateur que l'utilisateur auquel vous souhaitez accéder.
terdon