chown - Operación no permitida

37

Estoy conectado como minime.

No entiendo por qué no me permite crear archivos que poseo sin privilegios su. Obviamente puedo usar sudo, pero me gustaría entender por qué. por el grupo 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

fuente

Respuestas:

51

Los usuarios no privilegiados (no root) no pueden enviar chownarchivos a otros nombres de usuario. Para usar chown, un usuario debe tener los privilegios del usuario objetivo. En otras palabras, solo rootpuede entregar un archivo a otro usuario.

Como se explica aquí (gracias @slhck):

Solo los procesos con una ID de usuario efectiva igual a la ID de usuario del archivo o con los privilegios apropiados pueden cambiar la propiedad de un archivo. Si _POSIX_CHOWN_RESTRICTED está vigente para la ruta:

  • Cambiar la ID de usuario está restringido a procesos con los privilegios apropiados.

  • Se permite cambiar la ID de grupo a un proceso con una ID de usuario efectiva igual a la ID de usuario del archivo, pero sin los privilegios apropiados, si y solo si el propietario es igual a la ID de usuario del archivo o (uid_t) -1 y el grupo es igual ya sea al ID de grupo efectivo del proceso de llamada o a uno de sus ID de grupo complementarios.

La razón detrás de esto ha sido bien explicada por @Gilles en esta respuesta de Unix y Linux:

La razón de esta restricción es que regalar un archivo a otro usuario puede permitir que sucedan cosas malas en situaciones poco comunes pero importantes. Por ejemplo:

  • Si un sistema tiene habilitadas las cuotas de disco, Alice podría crear un archivo de escritura mundial en un directorio accesible solo para ella (para que nadie más pueda acceder a ese archivo de escritura mundial en el directorio), y luego ejecutar chown para hacer que ese archivo sea propiedad de otro usuario Bill. El archivo entonces contaría bajo la cuota de disco de Bill, aunque solo Alice puede usar el archivo.
  • Si Alice le regala un archivo a Bill, no hay rastro de que Bill no haya creado ese archivo. Esto puede ser un problema si el archivo contiene datos ilegales o comprometedores.
  • Algunos programas requieren que su archivo de entrada pertenezca a un usuario en particular para autenticar una solicitud (por ejemplo, el archivo contiene algunas instrucciones que el programa realizará en nombre de ese usuario). Por lo general, este no es un diseño seguro, porque incluso si Bill creó un archivo que contiene instrucciones sintácticamente correctas, es posible que no haya tenido la intención de ejecutarlas en este momento en particular. Sin embargo, permitir que Alice cree un archivo con contenido arbitrario y lo tome como entrada de Bill solo puede empeorar las cosas.
terdon
fuente
Gracias @slhck Revisé la manpágina y no pude encontrar una mención explícita de esto, respuesta actualizada.
terdon
¡Excelente! ahora muy claro ... ¿y si minime es parte del grupo www-data?
@SandroDzneladze no, debe tener la misma ID de usuario que el usuario al que desea pertenecer.
terdon