Estoy tratando de copiar todo el /
directorio a alguna otra ubicación. Al hacer cp recursivamente, falla en algunos archivos como:-
/ # ls -lrt /sys/module/nf_conntrack_ipv4/uevent
--w------- 1 root root 4096 Mar 7 06:29 /sys/module/nf_conntrack_ipv4/uevent
/ #
/ # cat /sys/module/nf_conntrack_ipv4/uevent
cat: can't open '/sys/module/nf_conntrack_ipv4/uevent': Permission denied
/ # cp /sys/module/nf_conntrack_ipv4/uevent /tmp
cp: can't open '/sys/module/nf_conntrack_ipv4/uevent': Permission denied
Si creo algún archivo con solo w
permisos e intente copiarlo/catarlo, no pude ver ningún problema allí. Sin embargo, para algunos archivos como el mencionado anteriormente, no puedo copiarlo ni catearlo aunque lo estoy intentando como usuario root. Además, lo extraño es que el tamaño del archivo mencionado anteriormente se menciona como 4096, que es similar al que tenemos para el directorio. ¿Es este un archivo especial?
Supongo que me estoy perdiendo algo aquí y necesito información para saber más sobre tales archivos o comportamientos. Por favor, ayúdenme a comprender por qué no se me permite catear el contenido de dichos archivos.
Respuesta aceptada:
En un sistema de archivos normal, p. ext4
, si solo tiene w
permiso en un archivo, no podrá leer (cat
), necesita leer (r
) poco por eso. Tenga en cuenta que, root
puede leer cualquier archivo independientemente de los bits de permiso.
Ahora, /sys
es un punto de montaje de sysfs
especial proporcionado por el kernel de Linux, que en realidad es un sistema de archivos virtual y funciona de manera diferente a los sistemas de archivos normales. /sys
contiene información relacionada con el dispositivo del sistema.
Modificando algo en /sys
alteraría directamente la estructura de datos internos del kernel, por lo que depende del kernel lo que permitiría o denegaría.
Para /sys/module/nf_conntrack_ipv4/uevent
, solo tienes w
bit establecido para el propietario (root
), incluso si agrega r
bit para root
(que es una muy mala idea ), al leer el archivo obtendría un error de E/S porque, por diseño, el kernel no permitiría que nadie leyera los eventos para el nf_conntrack_ipv4
módulo.