Permiso denegado cuando se inicia el servicio systemd-sysctl e intenta escribir en un archivo en /proc/sys/user/

Permiso denegado cuando se inicia el servicio systemd-sysctl e intenta escribir en un archivo en /proc/sys/user/

Estoy intentando habilitarespacios de nombres de usuario en Docker. Por supuesto, esto requiere que los espacios de nombres de usuario estén habilitados en el kernel.

Uno de los pasos para habilitar espacios de nombres de usuario en RHEL/CentOS es:

echo "user.max_user_namespaces=15000" >> /etc/sysctl.conf

Porque max_user_namespaces es 0 de forma predeterminada. Después de esto, debe reiniciar o simplemente ejecutar sysctl -ppara cargar la configuración de sysctl en sysctl.conf. Una vez cargada la configuración, /proc/sys/user/max_user_namespacesdebe contener 15000. Esto funciona bien en RHEL 7.4 (kernel: 3.10.0-957.10.1.el7.x86_64).

Y también funciona en CentOS 7.4 (kernel: 3.10.0-693.10.1.el7.x86_64) cuando ejecuto sysctl -p. Pero si reinicio, max_user_namespaces vuelve a establecerse en 0.
Verifiqué el estado del servicio systemd-sysctl y descubrí que tenía un active (exited)estado:

● systemd-sysctl.service - Apply Kernel Variables
  Loaded: loaded (/usr/lib/systemd/system/systemd-sysctl.service; static; vendor preset: disabled)
  Active: active (exited) since Wed 2019-04-03 16:15:34 WEST; 16s ago
    Docs: man:systemd-sysctl.service(8)
          man:sysctl.d(5)
 Process: 2786 ExecStart=/usr/lib/systemd/systemd-sysctl (code=exited, status=0/SUCCESS)
Main PID: 2786 (code=exited, status=0/SUCCESS)

Apr 03 16:15:34 localhost.localdomain systemd[1]: Starting Apply Kernel Variables...
Apr 03 16:15:34 localhost.localdomain systemd[1]: Started Apply Kernel Variables.

Tras una inspección más cercana, descubrí que cada vez que se inicia el servicio systemd-sysctl, falla debido a un error de "Permiso denegado" cuando intenta escribir en /proc/sys/user/max_user_namespaces:

$ journalctl -xn
[...]
Apr 03 16:15:34 localhost.localdomain sudo[2779]:     user : TTY=tty1 ; PWD=/home/user ; USER=root ; COMMAND=/bin/systemctl start systemd-sysctl
Apr 03 16:15:34 localhost.localdomain polkitd[763]: Registered Authentication Agent for unix-process:2780:7181831 (system bus name :1.51 [/usr/bin/pkttyagent --notify-fd 5 --fallback], object path /org/freedesktop/PolicyKit1/AuthenticationAgent, locale en_US.UTF-8)
Apr 03 16:15:34 localhost.localdomain systemd[1]: Starting Apply Kernel Variables...
-- Subject: Unit systemd-sysctl.service has begun start-up
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
-- 
-- Unit systemd-sysctl.service has begun starting up.
Apr 03 16:15:34 localhost.localdomain systemd-sysctl[2786]: Failed to write '15000' to '/proc/sys/user/max_user_namespaces': Permission denied
Apr 03 16:15:34 localhost.localdomain systemd[1]: Started Apply Kernel Variables.
-- Subject: Unit systemd-sysctl.service has finished start-up
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
-- 
-- Unit systemd-sysctl.service has finished starting up.
-- 
-- The start-up result is done.
Apr 03 16:15:34 localhost.localdomain polkitd[763]: Unregistered Authentication Agent for unix-process:2780:7181831 (system bus name :1.51, object path /org/freedesktop/PolicyKit1/AuthenticationAgent, locale en_US.UTF-8) (disconnected from bus)

Estos son los permisos del archivo (tanto en RHEL como en CentOS):

$ ls -l /proc/sys/user/max_user_namespaces
-rw-r--r--. 1 root root 0 Apr  3 10:10 /proc/sys/user/max_user_namespaces

Como dije, puedo cambiarlo sysctl -po editarlo directamente usando sudo. ¿Por qué el servicio systemd-sysctl no puede escribirle?

Tenga en cuenta que exactamente lo mismo funciona en RHEL... No tengo idea de cuál es el problema y no pude encontrar una respuesta en ninguna parte. Hayestepregunta, pero aún no tiene respuesta.

¿Algunas ideas?

información relacionada