web-dev-qa-db-fra.com

chown - Opération non autorisée

Je suis connecté en tant que minime.

Je ne comprends pas pourquoi cela ne me permet pas de chowner un fichier que je possède sans privilèges su. Je peux évidemment 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
34
user98645

Les utilisateurs non privilégiés (non root) ne peuvent pas modifier les fichiers chown avec d'autres noms d'utilisateur. Pour utiliser chown, un utilisateur doit disposer des privilèges de l'utilisateur cible. En d'autres termes, seule la variable root peut transmettre 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 modifier 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 dotés 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 propriétaire est égal à l'ID utilisateur du fichier ou (uid_t) -1 et si le groupe est égal. soit à l'identifiant de groupe effectif du processus appelant, soit à l'un de ses identifiants de groupe supplémentaires.

La raison derrière ceci a été bien expliquée par @Gilles in this Unix & Linux answer:

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

  • Si des quotas de disque sont activés sur un système, Alice peut créer un fichier accessible en écriture universelle sous un répertoire accessible uniquement par elle (afin que personne d'autre ne puisse accéder à ce fichier accessible en écriture universelle dans le répertoire), puis exécuter chown pour que ce fichier appartienne à un autre utilisateur Bill. Le fichier serait alors comptabilisé dans le quota de disque de Bill même si seule Alice pouvait utiliser le fichier.
  • Si Alice cède un fichier à Bill, il n'y a aucune trace que Bill n'ait pas créé ce fichier. Cela peut poser problème si le fichier contient des données illégales ou compromettantes.
  • Certains programmes requièrent que leur fichier d'entrée appartienne à un utilisateur particulier pour authentifier une demande (par exemple, le fichier contient certaines instructions que le programme exécutera pour le compte de cet utilisateur). Ce n'est généralement pas une conception sécurisée, car même si Bill créait un fichier contenant des instructions syntaxiquement correctes, il n'aurait peut-être pas eu 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 entrée de Bill ne peut qu'aggraver les choses.
49
terdon