web-dev-qa-db-fra.com

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

Ma /etc/group a augmenté en ajoutant de nouveaux utilisateurs ainsi qu'en installant des programmes qui ont ajouté leur propre utilisateur et/ou groupe. Il en va de même 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 effet négatif sur le système et/ou les gestionnaires de packages?

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

C'est la même chose pour /etc/*shadow.

33
Ned64

Vous devriez être OK pour le faire : en fait, selon l'article et la lecture de la documentation, vous pouvez trier /etc/passwd et /etc/group par UID/GID avec pwck -s et grpck -s, respectivement.

51
ErikF

Bien qu'ErikF ait raison de dire que cela devrait généralement être correct, je tiens à souligner un problème potentiel:

Vous êtes autorisé à mapper différents noms d'utilisateur vers le même UID. Si vous utilisez cela, les outils qui mappent un UID vers un nom d'utilisateur choisiront généralement le premier nom d'utilisateur qu'ils trouvent pour cet UID dans /etc/passwd. Le tri peut faire apparaître un nom d'utilisateur différent en premier. À des fins d'affichage (par exemple ls -l output), soit le nom d'utilisateur devrait fonctionner, mais il est possible que vous ayez configuré un programme pour accepter les demandes du nom d'utilisateur A, où il refusera ces demandes s'il les voit provenir du nom d'utilisateur B, même si A et B sont les mêmes utilisateur.

44
hvd

Le fait d'avoir root en première ligne a longtemps été "standard" de facto et est très pratique si vous devez réparer leur shell ou supprimer le mot de passe, lorsque vous traitez des problèmes ou récupérez des systèmes.

De même, je préfère avoir des utilisateurs daemons/utils au milieu et des utilisateurs standard à la fin de passwd et shadow.

hvd la réponse est également très bonne pour perturber l'ordre des utilisateurs, en particulier dans les systèmes avec de nombreux utilisateurs maintenus à la main.

Si vous parvenez à trier les fichiers, par exemple, uniquement pour les utilisateurs standard, ce serait plus judicieux que de changer l'ordre de tous les utilisateurs, imo.

2
Rui F Ribeiro

Voici un peu de code bash quelque peu velu pour trier de manière similaire les fichiers shadow/gshadow en toute sécurité (en utilisant vipw -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 -c passe la commande à l'éditeur vim qui est affecté à être l'éditeur de vipw/vigr par la variable EDITOR
  2. Le code awk trie shadow par passwd (et gshadow par 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 inscriptibles). Notez l'espace entre '!' et '\' est nécessaire pour empêcher l'interprétation par le shell comme '! \' qui fait référence à un événement bash.
0
puterboy