Comment le package Debian devrait créer des counts d'users?

Le package qqq.deb installe le programme qqq qui devrait s'exécuter à partir du count user uqqq . Le packageage se compose du programme qqq , du file de configuration qqq.conf et de /etc/init.d/qqq initscript.

Comment le package doit-il gérer la création de l'user uqqq ? Y a-t-il des meilleures pratiques ou des directives officielles à ce sujet?

  1. Il suffit de créer l'user automatiquement uqqq dans postinst;
  2. Créer l'user automatiquement au premier démarrage du script /etc/init.d/qqq ;
  3. Créer l'user automatiquement au premier démarrage du programme qqq (sans arguments)
  4. Ne créez pas de count d'user, refusez de démarrer à less que l'user ne soit explicitement créé par l'administrateur (par exemple, en utilisant qqq --create-user );
  5. Ne créez aucun count d'user, exécutez de manière non sécurisée à partir de root par défaut;
  6. Demander de manière interactive dans postinst, script init.d ou le qqq lui-même s'il faut créer un user.

Le package doit-il supprimer le count d'user lorsqu'il est désinstallé?

Le wiki Debian contient des directives plus complètes et plus spécifiques que le manuel de la politique Debian déjà mentionné. Voir AccountHandlingInMaintainerScripts :

Le programme adduser fait la bonne chose s'il est appelé avec l'option –system. Il est donc généralement nécessaire d'appeler

adduser –system $ USERNAME

dans votre postinst pour créer le count avec les connections désactivées, un groupe principal de nogroup et un directory personnel sous / home. Si vous voulez d'autres options, ajoutez-les comme vous le souhaitez.

Il ne devrait normalement pas être nécessaire de vérifier avec getent si un count existe déjà depuis que adduser –system fait généralement la bonne chose. Sinon, veuillez signaler un bogue contre adduser pour garder vos scripts de maintenance simples.

Les conseils qu'il fournit sur la suppression des counts ne sont pas concluants. Cependant, je noterai que le conseil correspondant pour fedora n'équivoque pas.

Ne supprimez pas les users ou les groupes Nous ne supprimons jamais les users ou les groupes créés par les packages. Il n'y a aucune façon saine de vérifier si les files appartenant à ces users / groupes sont laissés de côté (et même s'ils le feraient, que ferions-nous avec eux?) Et laisser les personnes qui se dirigent vers des users / groupes inexistants lorsqu'un user / groupe sémantiquement indépendant est créé ultérieurement et réutilise l'UID / GID. De même, dans certaines configurations, la suppression de l'user / groupe peut ne pas être possible ou souhaitable (par exemple, lors de l'utilisation d'une database partagée / user distante). Le nettoyage des users / groupes inutilisés est laissé aux administrateurs système pour qu'ils s'en occupent s'ils le désirent.

En tant qu'administrateur installant des packageages, je m'attendrais à ce que mes packages créent automatiquement les users dont ils ont besoin dans pré ou postinst, de sorte que tous les files qui doivent être possédés par l'user peuvent être faits avant que le programme soit exécuté.

Votre programme ne doit s'exécuter en tant que root que s'il le faut (par exemple, lier au port privilégié) et devrait idéalement abandonner ses privilèges une fois qu'il a fini de faire ce qui est requirejs.

Vous pouvez regarder comment les autres packages (installés) ont géré ceci en utilisant

 grep -l adduser /var/lib/dpkg/info/*postinst /var/lib/dpkg/info/*preinst 

et en lisant les files listés (la plupart prennent plus d'une ligne d'options).

Assez curieusement, tous les packages installés, à l'exception d'un seul, qui créent un user utilisent adduser pour append des users, mais le package adduser n'est pas un package requirejs, donc votre packageage devra être construit pour en dépendre. Le programme useradd est utilisé par le packageage libuuid1 et fait partie du packageage passwd qui est un packageage requirejs.

Section 10.9. Autorisations et propriétaires dans le manuel des politiques Debian a ce que vous searchz (à partir de la «version 3.9.5.0, 2013-10-28»):

Si vous avez besoin de créer un nouvel user ou un groupe pour votre package, il y a deux possibilités. Tout d'abord, vous devrez peut-être faire en sorte que certains files du packageage binary appartiennent à cet user ou groupe, ou vous devrez comstackr l'identifiant de l'user ou du groupe (plutôt que le nom) dans le file binary. possible, car dans ce cas vous avez besoin d'un identifiant statique).

Si vous avez besoin d'un ID alloué statiquement, vous devez requestr un identifiant d'user ou de groupe à partir du responsable de base-passwd' maintainer, and must not release the package until you have been allocated one. Once you have been allocated one you must either make the package depend on a version of the base-passwd' maintainer, and must not release the package until you have been allocated one. Once you have been allocated one you must either make the package depend on a version of the package base-passwd avec l'ID présent dans /etc/passwd' or / etc / group', soit organiser votre packageage pour créer l'user ou se regrouper avec l'identifiant correct (using adduser') in its preinst' ou postinst'. (Doing it in the postinst'. (Doing it in the postinst 'doit être préféré si c'est possible, sinon une pré-dépendance sera nécessaire sur le package `adduser').

Note: La list debian-devel est assez active et répond également à de telles questions (bien que cet exemple date de 2003).