J'ai reçu une spécification RPM partiellement complète pour un service que nous écrivons. Il va jusqu'à créer les répertoires requis, copier des fichiers, définir des autorisations, etc., mais il ne crée pas le compte système requis sous lequel le service s'exécutera. On m'a dit qu'il était préférable que le RPM s'en occupe, alors j'ai ajouté
Requires(pre): /usr/sbin/useradd
%pre
useradd -r -d /path/to/program -s /bin/false myservice
Cela réussit à créer le compte d'utilisateur (et le groupe associé), donc plus tard lorsqu'il essaie de définir la propriété / les autorisations sur les fichiers du service, cela réussit également.
Mon problème actuel est: a) si le compte d'utilisateur existe déjà, l'installation de RPM échoue car useradd
échoue (car l'utilisateur existe déjà); et b) Je ne sais pas comment rpm -e myservice
supprimer également l'utilisateur et le groupe associés.
la source
Réponses:
En fait, j'ai résolu cela indépendamment, en examinant d'autres spécifications RPM qui ont fait des choses similaires. Si vous souhaitez simplement ajouter un utilisateur (conditionnellement), utilisez le lien Ignacio. J'ai fait ça:
Cela garantit que le RPM "se nettoie après lui-même" mais offre toujours la possibilité d'installer même si le compte existe déjà.
la source
L'une ou l'autre des deux réponses précédentes est prête pour la production car ces méthodes supprimeront l'utilisateur si le package est mis à niveau. Yum installe le nouveau package puis supprime l'ancien package. Cela vous laissera sans utilisateur. Pas cool!
Utilisez plutôt cette méthode:
la source
La réponse de Coderer est bonne mais la deuxième pré-commande me donne une erreur sur Centos 7. Le groupe doit être spécifié.
J'ai également ajouté une redirection vers / dev / null pour ignorer les échos indésirables.
la source