¿Puedo ordenar los archivos / etc / group y / etc / passwd?

33

My /etc/groupha crecido agregando nuevos usuarios, así como instalando programas que han agregado su propio usuario y / o grupo. Lo mismo es cierto para /etc/passwd. La edición ahora se ha vuelto un poco engorrosa debido a la falta de estructura.

¿Puedo ordenar estos archivos (por ejemplo, por identificación numérica o alfabética por nombre) sin efectos negativos en el sistema y / o los administradores de paquetes?

Supongo que eso no importa, pero solo para estar seguro de que me gustaría obtener una segunda opinión. ¿Quizás rootdeba ser la primera línea o dentro de las primeras 1k líneas o algo así?

Lo mismo vale para /etc/*shadow.

Ned64
fuente
77
"La edición se ha vuelto un poco engorrosa debido a la falta de estructura" ¿Por qué está editando esos archivos a mano?
Kevin
¿Cómo ayuda la clasificación del archivo con la edición? ¿Es porque desea agrupar cuentas relacionadas y luego hacer cambios similares en un rango de filas? ¿Pero la cuenta relacionada será adyacente si ordena por uid o nombre?
Barmar
@Barmar Ha ayudado principalmente porque las cuentas de usuario están agrupadas por rangos y separadas de las cuentas del sistema (cuando se ordena por UID). Por lo tanto, es más fácil, por ejemplo, detectar la línea correcta para examinar o cambiar al editar con vi.
Ned64

Respuestas:

50

Debería estar bien haciendo esto : de hecho, de acuerdo con el artículo y la lectura de la documentación, puede ordenar /etc/passwdy /etc/grouppor UID / GID con pwck -sy grpck -s, respectivamente.

ErikF
fuente
3
@Menasheh Los colores de este sitio no hacen que se destaquen tanto como en otros sitios, pero "Aceptar hacer esto" en esta respuesta es un hipervínculo.
hvd
2
OK, está bien, pero ... En general, ¿hay razones válidas para editar manualmente / etc / passwd y archivos similares? ¿No se considera mejor acceder a estos a través de las herramientas diseñadas para crearlos y modificarlos?
mickeyf_supports_Monica
@mickeyf He visto a personas editar manualmente /etc/passwdcuando realizan cambios por lotes, como cambiar el campo GECOS para todos los usuarios debido a la mudanza / reestructuración (cambios en la sala global o en el número de teléfono, etc.) Ya no es común, pero son específicos razones que surgen de vez en cuando.
ErikF
44

Aunque ErikF tiene razón en que esto debería estar bien en general, quiero señalar un problema potencial:

Se le permite asignar diferentes nombres de usuario al mismo UID. Si utiliza esto, las herramientas que asignan un UID a un nombre de usuario generalmente elegirán el primer nombre de usuario que encuentren para ese UID /etc/passwd. La clasificación puede hacer que un nombre de usuario diferente aparezca primero. Para fines de visualización (por ejemplo, ls -lsalida), cualquiera de los nombres de usuario debería funcionar, pero es posible que haya configurado algún programa para aceptar solicitudes del nombre de usuario A, donde negará esas solicitudes si las ve venir del nombre de usuario B, incluso si A y B son el mismo usuario

hvd
fuente
Gracias, sé que puedes, solía tener un usuario con tcsh y uid 0 en Solaris hace unas décadas. Sin embargo, un sistema Linux no creará esta situación por sí mismo; necesitaría crear manualmente dicho usuario para tener problemas con esa situación.
Ned64
2

Tener root en la primera línea ha sido un "estándar" de facto desde hace mucho tiempo y es muy conveniente si alguna vez tiene que arreglar su shell o eliminar la contraseña, cuando se trata de problemas o se recuperan sistemas.

Del mismo modo, prefiero tener usuarios de demonios / utilidades en el medio y usuarios estándar al final de ambos passwdy shadow.

hvd La respuesta también es muy buena para alterar el orden de los usuarios, especialmente en sistemas con muchos usuarios mantenidos a mano.

Si logras ordenar los archivos, por ejemplo, solo para usuarios estándar, sería más sensato que cambiar el orden de todos los usuarios, imo.

Rui F Ribeiro
fuente
1
Si ordena numéricamente por UID, debe obtener su pedido preferido. La raíz es siempre 0, y los demonios convencionalmente tienen UID menores de 100.
Barmar
@Barmar Si está ordenando por UID y no por nombre, de hecho, gracias por recordar.
Rui F Ribeiro
0

Aquí hay un poco de código bash algo peludo para ordenar de manera similar los archivos shadow / gshadow de forma segura (usando vipw -s/ vigr -s) y en el lugar desde la línea de comandos:

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

NOTA:

  1. vi -cpasa el comando al editor vim que está asignado para ser el editor para vipw/ vigrpor la EDITORvariable
  2. El código awk ordena shadowpor passwd(y gshadowpor group)
  3. Las barras invertidas son solo los múltiples niveles de escape necesarios correspondientes a los niveles de cotización.
  4. El segundo comando (-c \ "wq! \") Fuerza escribir y cierra el archivo ordenado. La fuerza es necesaria ya que shadow / gshadow a menudo están en modo 000 (es decir, no se pueden escribir). Tenga en cuenta el espacio entre '!' y '\' es necesario para evitar que el intérprete interprete que '! \' hace referencia a un evento bash.
puterboy
fuente