Puis-je trier les fichiers / etc / group et / etc / passwd?

33

My /etc/groupa grandi en ajoutant de nouveaux utilisateurs et en installant des programmes qui ont ajouté leur propre utilisateur et / ou groupe. La même chose est vraie pour /etc/passwd. Le montage est devenu un peu lourd en raison du manque de structure.

Puis-je trier ces fichiers (par exemple, par identifiant numérique ou alphabétique par nom) sans que cela affecte le système et / ou les gestionnaires de packages?

Je suppose que cela n’a aucune importance, mais pour être sûr, j’aimerais avoir un deuxième avis. Peut-être rootdoit être la 1ère ligne ou dans les premières lignes 1k ou quelque chose?

La même chose vaut pour /etc/*shadow.

Ned64
la source
7
"Le montage est devenu un peu lourd en raison du manque de structure" Pourquoi éditez-vous ces fichiers à la main?
Kevin
Comment le tri du fichier aide-t-il à l'édition? Est-ce parce que vous souhaitez regrouper des comptes liés, puis effectuer des modifications similaires dans une plage de lignes? Mais le compte associé sera-t-il adjacent si vous triez par UID ou par nom?
Barmar
@Barmar Cela a aidé principalement parce que les comptes d'utilisateurs sont regroupés par plages et séparés des comptes système (lors du tri par UID). Par conséquent, il est plus facile, par exemple, de repérer la bonne ligne à examiner ou à modifier lors de l'édition avec vi.
Ned64

Réponses:

50

Vous devriez être OK faire cela : en effet, selon l'article et la lecture de la documentation, vous pouvez trier /etc/passwdet /etc/grouppar UID / GID pwck -set grpck -s, respectivement.

ErikF
la source
3
@Menasheh Les couleurs de ce site ne les font pas se démarquer autant que sur d'autres sites, mais "OK pour faire ça" dans cette réponse est un hyperlien.
hvd
2
OK, d'accord, mais ... En général, existe-t-il des raisons valables d'éditer manuellement les fichiers / etc / passwd et autres? N'est-il pas considéré comme préférable d'y accéder via les outils conçus pour les créer et les modifier?
mickeyf_supports_Monica
@ mickeyf J'ai vu des gens modifier manuellement /etc/passwdlorsqu'ils effectuaient des modifications par lots, comme le champ GECOS pour tous les utilisateurs en raison d'un déplacement / d'une restructuration (modifications de la salle ou du numéro de téléphone, etc.). Ce n'est plus courant, mais il existe des raisons qui reviennent de temps en temps.
ErikF
44

Bien qu'ErikF ait raison de dire que cela devrait généralement fonctionner, je souhaite signaler un problème potentiel:

Vous êtes autorisé à mapper différents noms d'utilisateur vers le même UID. Si vous l'utilisez, les outils qui mappent un UID en un nom d'utilisateur sélectionnent généralement le premier nom d'utilisateur trouvé pour cet UID /etc/passwd. Le tri peut provoquer l'apparition d'un nom d'utilisateur différent. À des fins d'affichage (par exemple, en ls -lsortie), l'un ou l'autre des noms d'utilisateur devrait fonctionner, mais il est possible que vous ayez configuré un programme pour accepter les demandes de nom d'utilisateur A, où il refusera ces demandes s'il les voit venir du nom d'utilisateur B, même si A et B sont le même utilisateur.

hvd
la source
Merci, je sais que vous pouvez déjà utiliser un utilisateur avec tcsh et uid 0 dans Solaris il y a quelques décennies. Cependant, un système Linux ne créera pas cette situation par lui-même - vous devrez créer manuellement un tel utilisateur pour avoir des problèmes avec cette situation.
Ned64
2

Avoir root à la première ligne a longtemps été un "standard" de facto et est très pratique si vous devez réparer leur shell ou supprimer le mot de passe lors de la résolution de problèmes ou de la récupération de systèmes.

De même, je préfère avoir les utilisateurs de démons / utils au milieu et les utilisateurs standard à la fin des deux passwdet shadow.

hvd La réponse est également très utile pour perturber l'ordre des utilisateurs, en particulier dans les systèmes avec de nombreux utilisateurs gérés manuellement.

Si vous parvenez un peu à trier les fichiers, par exemple, uniquement pour les utilisateurs standard, il serait plus judicieux de modifier l'ordre de tous les utilisateurs, imo.

Rui F Ribeiro
la source
1
Si vous triez numériquement par UID, vous devriez obtenir votre ordre préféré. La racine est toujours 0, et les démons ont conventionnellement des UID inférieurs à 100.
Barmar
@Barmar Si vous triez par UID et non par nom, merci de vous en souvenir.
Rui F Ribeiro
0

Voici un peu de code bash un peu poilu pour trier de la même façon les fichiers shadow / gshadow en toute sécurité (en utilisantvipw -s / vigr -s) et en place à partir de la ligne de commande:

EDITOR="/usr/bin/vi -c \"1,\\\$!awk 'BEGIN {FS = \\\":\\\"} FNR==NR {x2[\\\$1] = \\\$0; next} \\\$1 in x2 {print x2[\\\$1]}' - /etc/passwd\" -c \"wq! \" >/dev/null 2>&1" vipw -s

EDITOR="/usr/bin/vi -c \"1,\\\$!awk 'BEGIN {FS = \\\":\\\"} FNR==NR {x2[\\\$1] = \\\$0; next} \\\$1 in x2 {print x2[\\\$1]}' - /etc/group\" -c \"wq! \" >/dev/null 2>&1" vigr -s

REMARQUE:

  1. vi -cpasse la commande à l'éditeur vim qui est assigné à l'éditeur pour vipw/ vigrpar la EDITORvariable
  2. Le code awk trie shadowpar passwd(et gshadowpar group)
  3. Les barres obliques inverses ne sont que les multiples niveaux d'échappement nécessaires correspondant aux niveaux de cotation.
  4. La deuxième commande (-c \ "wq! \") Force l'écriture et ferme le fichier trié. La force est nécessaire car shadow / gshadow sont souvent en mode 000 (c'est-à-dire non-écrites). Notez l'espace entre '!' et '\' est nécessaire pour empêcher le shell d'interpréter en tant que '! \' qui fait référence à un événement bash.
puterboy
la source