¿Cómo reparar el bug relativo al comportamiento del comando chown que hace que fallen algunas aplicaciones en algunas versiones del codigo que manejan xfs ?

 

Principal

 

En ciertas versiones del código que maneja el sistema de archivos XFS en linux hay un bug relativo al comportamiento del comando chown que hace que fallen algunas aplicaciones, como dpkg-buildpackage en debian.

El bug que aparece en la versión de XFS que está en el kernel 2.4.21-ck3 y en algunos kernels experimentales como 2.5.73-mm1 [1] establecen el restrict chowna falso en los sistemas de archivos XFS.

Esta opción, que debería estar a activada por defecto (es así como se comporta linux ahora) define el comportamiento de chown. De esta manera, si restrict chown está desactivado se puede cambiar el dueño de un fichero a otro, pero teniendo control sobre el mismo (se puede borrar aunque ya no sea tuyo). Si no está activado, no se puede cambiar el dueño del fichero.

Con restrict chown activado:

$ touch fichero

$ chown root:root fichero

chown: changing ownership of `fichero': Operation not permitted

 

y con restrict chown desactivado:

$ touch fichero

$ chown root:root fichero

$ ls -l fichero

-rw-r--r-- 1 root root 0 2009-04-15 21:00 fichero

$ echo 1 > fichero

bash: fichero: Permission denied

$ rm fichero

rm: remove write-protected regular empty file `fichero'? y

$ ls -l fichero

ls: fichero: No such file or directory

 

Esto hace que algunas aplicaciones como dpkg-buildpackage que utilizan fakeroot para simular root fallen al jugar con la propiedad de los ficheros. La manera de corregir esto es fácil, o bien se ejecuta el siguiente comando para activar el restrict chown:

echo 1 > /proc/sys/fs/xfs/restrict_chown

o

sysctl -w fs/xfs/restrict_chown=1

o modificar el fichero /etc/sysctl.conf para añadir la siguiente línea:

fs/xfs/restrict_chown=1

y reiniciar.

El por qué de este funcionamiento tiene que ver con el tema de las quotas en linux, ya que impidiendo que se cambien los propietarios de los ficheros se controlan mejor las quotas. Por ejemplo, si pudiese cambiar los propietarios de un fichero grande, se le podría acabar el espacio a ese usuario.