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.