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.

tshepang
la source

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é.

Gilles 'SO- arrête d'être méchant'
la source
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é!

Malvineous
la source
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