centos - titeres - Permiso denegado al intentar actualizar las autorizadas_key de root con títeres
los titeres como estrategia pedagogica (1)
Estoy intentando agregar una clave a /root/.ssh/authorized_keys
(tiene chmod 600) usando títere. Yo uso el recurso ssh_authorized_key
para esto.
ssh_authorized_key { ''[email protected]'':
ensure => present,
user => ''root'',
type => ''ssh-rsa'',
key => ''myKey'',
}
Cuando ejecuto un puppet apply ...
como raíz por primera vez , arroja este error:
"Error: Puppet :: Util :: FileType :: FileTypeFlat no pudo escribir /root/.ssh/authorized_keys: Permiso denegado - /root/.ssh/authorized_keys",
Sin embargo, agrega la clave anterior a /root/.ssh/authorized_keys
pero elimina todas las claves existentes. Si lo ejecuto por segunda vez, se completa con éxito sin ningún error.
¿Qué puede causar un comportamiento tan extraño y cómo puedo solucionarlo? (Mi sistema operativo es CentOS 6)
Esa puppet
, que se ejecuta como raíz, no puede modificar el archivo pero puede eliminarlo, sugiere que los controles de acceso obligatorios (SELinux) están jugando un papel aquí. Si SELinux está habilitado en el modo de aplicación y el contexto de ejecución de SELinux de puppet
no está habilitado para modificar los archivos etiquetados como /root/.ssh/authorized_keys
está inicialmente etiquetado, entonces Puppet se le denegaría el permiso para escribir en ese archivo.
Pero eliminar el archivo original y escribir uno nuevo en su lugar solo requiere que el títere pueda modificar el directorio , y es plausible que el títere tenga suficiente privilegio para eso. El nuevo archivo lleva una etiqueta que le permite a la marioneta modificarlo, por lo tanto, las siguientes ejecuciones de títeres no sufrirán el mismo problema.
En pocas palabras: este es probablemente un problema relacionado con la configuración de su sistema y cómo está ejecutando Puppet, no es un problema inherente dentro de Puppet. Si lo he caracterizado correctamente, entonces puede evitar el problema ejecutando su comando de puppet apply
en un contexto de seguridad que tiene el acceso necesario a todos los archivos que desea que pueda modificar, ya sea reetiquetando los archivos para que sean accesibles en el contexto lo estás usando ahora o eligiendo un contexto diferente. Los detalles, si los necesita, se buscarían de forma más adecuada en un foro diferente, como Super User o Unix & Linux SE .