Me dieron una especificación RPM parcialmente completa para un servicio que estamos escribiendo. Llega tan lejos como hacer los directorios requeridos, copiar archivos, configurar permisos, etc., pero no establece la cuenta del sistema requerida bajo la cual se ejecutará el servicio. Me dijeron que es mejor que el RPM se encargue de esto, así que agregué
Requires(pre): /usr/sbin/useradd
%pre
useradd -r -d /path/to/program -s /bin/false myservice
Esto tiene éxito en crear la cuenta de usuario (y el grupo asociado), por lo que más adelante, cuando intenta establecer la propiedad / permisos en los archivos del servicio, también tiene éxito.
Mi problema actual es, a) si la cuenta de usuario ya existe, la instalación de RPM falla porque useradd
falla (porque el usuario ya existe); y b) No sé cómo rpm -e myservice
eliminar también el usuario y el grupo asociados.
fuente
Respuestas:
De hecho, resolví esto de forma independiente, mirando otras especificaciones de RPM que hicieron cosas similares. Si solo desea agregar un usuario (condicionalmente), use el enlace de Ignacio. Hice esto:
Esto asegura que el RPM "se limpia después de sí mismo", pero aún ofrece la posibilidad de instalar incluso si la cuenta ya existe.
fuente
Cualquiera de las dos respuestas anteriores está lista para producción, ya que esos métodos eliminarán al usuario si el paquete se actualiza. Yum instala el nuevo paquete y luego elimina el paquete anterior. Esto te dejará sin un usuario. ¡No es genial!
Use este método en su lugar:
fuente
La respuesta de Coderer es buena, pero el segundo comando previo me da un error en Centos 7. El grupo debe especificarse.
Agregué también redirigir a / dev / null para ignorar los ecos no deseados.
fuente