Des soucis avec l'utilisation de numéros UID élevés (3000+) sur RHEL5 +?

Les systèmes hérités ont des numéros UID jusqu'à la fin des années 2000. Dans la mise en œuvre d'un nouveau système de gestion des users, je cherche des options pour éviter les collisions UID.

Une option consiste simplement à avoir une list d'UID qui ne peuvent pas être réatsortingbués. Je suis en train d'étudier cela.

Une autre option beaucoup plus facile serait d'utiliser une gamme plus élevée (3000+). Toute préoccupation que je devrais garder à l'esprit?

Ce serait sur RHEL5, RHEL6 et RHEL7.

Tous les systèmes Unix ont au less 16 ID user, qui peuvent prendre des valeurs de 0 (réservé pour root) à 65535 (réservé comme valeur invalide). Beaucoup d'arômes modernes (y compris Linux) prennent en charge des valeurs plus importantes, mais dans un réseau mixte, vous devez les éviter sauf si vous êtes sûr que tous les systèmes d'exploitation, filesystems et protocoles réseau les prennent en charge. Il existe une convention générale dans le monde Unix selon laquelle les «petites» valeurs sont pour le système et les «grandes» valeurs pour l'administrateur. "Petit" et "grand" ne sont pas définis avec précision; le seuil est généralement de 100, 1000 ou quelque part entre les deux. En outre, 65534 est par convention l'user nobody , qui ne possède aucun file et n'exécute aucun service système (il est utilisé pour les tâches qui ne devraient pas avoir de privilèges, comme locate implémentations qui n'indexent que des files accessibles au monde).

Le résultat est que toute valeur comprise entre 1000 et 65533 est sûre. Cela vaut aussi pour les ID de groupe.

Dans les réseaux, il est courant d'utiliser une faible partie de cette plage pour les counts spécifiques à la machine, et une partie élevée pour les counts à l'échelle du réseau. Si plusieurs autorités créent des counts d'users, elles peuvent utiliser des plages différentes, par exemple 10000-19999 et 20000-29999. Dans votre cas, il est bon de décider que, par exemple, la gamme 1000-2999 est pour le système existant et 3000-4999 pour le nouveau système. Ou que 1000-9999 est pour le système existant et 10000-19999 pour le nouveau système.

Le kernel Linux 2.6 et supérieur prend en charge les entiers 32 bits non signés comme UID et GID. Cela signifie que l'UID maximum doit être 4294967294 (4294967295 est réservé) pour RHEL4 + mais cela peut dépendre des parameters du système et des utilitaires installés, en particulier les shadow-utils. Vous pouvez le tester en essayant un grand UID, la seule chose qui pourrait arriver est de le rejeter (essayez n'importe quoi entre 65536 et 4294967294 sur RHEL5). Sur RHEL6 tout ce qui dépasse 4294967294 sera rejeté:

 # useradd -u 4294967295 test useradd: invalid user ID '4294967295' 

RHEL6 et RHEL7 supportent certainement 32 bits avec leurs utilitaires. Je ne peux pas parler pour RHEL5 parce que je n'ai pas de boîtes qui sont encore sur RHEL5.

Donc, si votre objective est d'éviter tout conflit possible, vous pouvez commencer avec quelque chose comme 100000.

Juste des informations supplémentaires: avec les versions les plus récentes du kernel, l'utilisation de 4 milliards d'UID n'est pas extraite à cause des namespaces des users et des conteneurs non privilégiés (docker de reference, openvz et lxc). Pour autant que je sache, RHEL ne prend pas encore en charge les namespaces des users, mais ils avaient annoncé qu'ils prévoyaient de le faire avec RHEL7. J'imagine donc que cela sera reporté dans un futur proche.