GNU/Linux >> Tutoriales Linux >  >> Linux

Linux:¿por qué está restringida la edición de Core_pattern?

Esta pregunta está asociada con ¿Dónde está instalado el archivo central con abrt-hook-cpp? .

Mientras intentaba generar un archivo central para un programa que fallaba intencionalmente, al principio, abrt-ccpp parecía obstaculizar la generación del archivo central. Así que traté de editar manualmente /proc/sys/kernel/core_pattern con vim:

> sudo vim /proc/sys/kernel/core_pattern

Cuando traté de guardar el archivo, vim informó este error:

"/proc/sys/kernel/core_pattern" E667: Fsync failed

Pensé que se trataba de un problema de permisos, así que intenté cambiar los permisos:

> sudo chmod 666 /proc/sys/kernel/core_pattern
chmod: changing permissions of '/proc/sys/kernel/core_pattern': Operation not permitted

Finalmente, basándome en esta publicación, probé esto:

>sudo bash -c 'echo /home/user/foo/core.%e.%p > /proc/sys/kernel/core_pattern'

Esto funcionó.

Basado en la solución de trabajo, también probé estos, que fallaron:

> echo "/home/user/foo/core.%e.%p" > /proc/sys/kernel/core_pattern
-bash: /proc/sys/kernel/core_pattern: Permission denied
>
> sudo echo "/home/user/foo/core.%e.%p" > /proc/sys/kernel/core_pattern
-bash: /proc/sys/kernel/core_pattern: Permission denied

Pregunta :

¿Por qué la edición, chmod ing y redirigir echo salida al archivo /proc/sys/kernel/core_pattern todos fallaron, y solo la invocación anotada de sudo bash... pudo sobrescribir/editar el archivo?

Pregunta :

Específicamente, escriba los intentos de invocar sudo en los intentos fallidos anteriores:¿por qué fracasaron? Pensé sudo ejecutó el siguiente comando con privilegios de root, que pensé que te permitía hacer cualquier cosa en Linux.

Respuesta aceptada:

Las entradas en procfs son administradas por código ad hoc. El código que establecería los permisos y la propiedad de los archivos en /proc/sys (proc_sys_setattr ) rechaza cambios de permisos y titularidad con EPERM. Por lo tanto, no es posible cambiar los permisos o la propiedad de estos archivos, punto final. Dichos cambios no están implementados, por lo que ser root no ayuda.

Cuando intenta escribir como usuario no root, obtiene un error de permiso. Incluso con sudo echo "/home/user/foo/core.%e.%p" > /proc/sys/kernel/core_pattern , está intentando escribir como usuario no root:sudo ejecuta echo como root, pero la redirección ocurre en el shell desde el que sudo se ejecuta, y ese shell no tiene privilegios elevados. Con sudo bash -c '… >…' , la redirección se realiza en la instancia de bash que se inicia mediante sudo y que se ejecuta como root, por lo que la escritura se realiza correctamente.

La razón por la que solo se debe permitir que root configure el kernel.core_pattern sysctl es que permite especificar un comando y, dado que esta es una configuración global, este comando podría ser ejecutado por cualquier usuario. De hecho, este es el caso de todas las configuraciones de sysctl en varios grados:todas son configuraciones globales, por lo que solo la raíz puede cambiarlas. kernel.core_pattern es solo un caso particularmente peligroso.

Relacionado:Debian:¿Obtener el gcc más nuevo para Debian?
Linux
  1. ¿Cómo maneja Linux múltiples separadores de rutas consecutivas (/home////username///file)?

  2. Linux – ¿Configurar /proc/sys/vm/drop_caches para borrar el caché?

  3. Linux – ¿Vincular /proc/mnt a /proc/mounts?

  4. Linux:¿la diferencia entre /sys/block/sda1/stat y /sys/block/xvda1/stat?

  5. Linux – ¿Fusionar /usr/bin y /usr/sbin en /bin (gnu/linux)?

Archivos /proc/cpuinfo y /proc/meminfo en Linux

Comprender los archivos /proc/mounts, /etc/mtab y /proc/partitions

montar dev, proc, sys en un entorno chroot?

¿Dónde están documentados los contenidos de /proc del kernel de Linux?

/sys/ documentación?

¿Por qué está restringida la edición de core_pattern?