Quels sont les noms de groupe autorisés pour groupadd?


13

J'ai suivi ces instructions pour construire Shadow, qui fournit la groupaddcommande. Je reçois maintenant une erreur en essayant ceci:

$ groupadd automake1.10
groupadd: 'automake1.10' is not a valid group name

J'ai vérifié les noms alphanumériques et ils fonctionnent bien.

Réponses:


20

Voir le code source, en particulier libmisc/chkname.c. Shadow est assez conservateur: les noms doivent correspondre à l'expression rationnelle [_a-z][-0-9_a-z]*\$?et peuvent contenir au maximum des GROUP_NAME_MAX_LENGTHcaractères (option de configuration, 16 par défaut; les noms d'utilisateur peuvent généralement aller jusqu'à 32 caractères, sous réserve de la détermination au moment de la compilation).

Debian assouplit beaucoup le contrôle. À compter de la compression, tout sauf les espaces et :est autorisé. Voir bug # 264879 et bug # 377844 .

POSIX nécessite d'autoriser les lettres des deux cas, des chiffres et ._-( comme dans les noms de fichiers ). POSIX ne définit aucune restriction si vous ne vous souciez pas de la portabilité. Un certain nombre de restrictions recommandées proviennent de l'utilisation:

  • Les deux-points, les retours à la ligne et les valeurs nulles sont tout de suite sortis; vous ne pouvez tout simplement pas les utiliser dans /etc/passwdou /etc/group.
  • Un nom composé uniquement de chiffres est une mauvaise idée - chownet chgrpsont censés traiter une séquence de chiffres comme un nom si elle se trouve dans la base de données d'utilisateurs / groupes, mais d'autres applications peuvent traiter n'importe quel nombre comme un identifiant numérique.
  • Une initiale -ou un .dans un nom d'utilisateur est fortement déconseillé, car de nombreuses applications s'attendent à pouvoir passer $user.$groupà un utilitaire externe (par exemple chown $user.$group /path/to/file) ¹. Un .nom de groupe devrait causer moins de problèmes, mais je le déconseille toujours.
  • / est également susceptible de causer des problèmes, car certains programmes s'attendent à pouvoir utiliser des noms d'utilisateur dans les noms de fichiers.
  • Tout personnage que le shell élargirait est probablement risqué.
  • Les caractères non ASCII devraient être corrects si vous ne vous souciez pas du partage avec des systèmes qui peuvent utiliser différents encodages.

¹ Toutes les implémentations modernes attendent chown $user:$group, mais prennent en charge la chown $user.$groupcompatibilité descendante, et il y a trop d'applications qui passent un point pour supprimer cette prise en charge de compatibilité.


Re chownargument: la syntaxe actuelle, au moins dans les coreutils GNU, est user:group, avec un point accepté uniquement pour des raisons de compatibilité. On peut utiliser j.smith:j.smith.
user1686

1
@grawity: Ce n'est pas seulement GNU coreutils, mais le problème n'est pas chownlui-même, ce sont les scripts existants et d'autres programmes qui appellent à la chown $user.$groupplace de chown $user:$group- même si l' chownimplémentation essaie de faire la bonne chose, certains cas sont intrinsèquement ambigus.
Gilles 'SO- arrête d'être méchant'

1

Si vous vous sentez aventureux, vous pouvez modifier /etc/groupdirectement et saisir le nom de groupe que vous souhaitez. De plus, cela a l'avantage supplémentaire que lorsque vous rencontrez l'un des problèmes mentionnés par @ Gilles, vous ne pourrez peut-être pas charger un éditeur pour résoudre le problème, ou même vous connecter du tout - vous donnant une expérience précieuse dans la récupération d'un système cassé!


5
N'oubliez pas de modifier /etc/gshadowlors de l'ajout de groupes. Aussi, utilisez vigr(8)plutôt que de modifier directement les fichiers.
camh
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.