GNU/Linux >> Tutoriales Linux >  >> Linux

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

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 bajo /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 cual 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 para 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.


En Ubuntu 18.04 puedo actualizar el patrón con:

sudo bash -c 'echo "/data/app_crash/%t.%e.core.%p" > /proc/sys/kernel/core_pattern'

También puedo actualizar /etc/sysctl.conf y agregue la línea:

kernel.core_pattern = /data/app_crash/%t.%e.core.%p

Sin embargo, aunque no hay otras líneas configurando kernel.core_pattern en /etc/sysctl.conf o /etc/sysctl.d/* , después de reiniciar, el patrón vuelve a establecerse en el valor predeterminado:

$ sudo sysctl -a | grep kernel.core_pattern
kernel.core_pattern = |/usr/share/apport/apport %p %s %c %d %P

Resultó que apport estaba sobreescribiendo cualquier cambio que hice. Desinstalé apport con sudo apt-get remove apport y luego se usaron mis cambios.


Linux
  1. ¿Por qué el usuario raíz necesita permiso de Sudo?

  2. ¿Por qué Sudo ignora los alias?

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

  4. Linux:¿por qué el kernel no puede ejecutar Init?

  5. Guarde el archivo como root después de editarlo como no root

Cómo instalar el kernel de Liquorix en Ubuntu 20.04

Instale Linux Kernel 5.17 en Fedora Linux 35

¿Por qué no se encuentra el comando sudo:bundle?

En el kernel de Linux 2.6.26, encontré #define atomic_read(v) ((v)->counter + 0), ¿por qué +0?

¿Por qué debería uno usar sudo?

¿Por qué la memoria compartida del kernel es 0 en Ubuntu 12.04?