Ocurre que hay ocasiones en que un usuario me pide “Yo quiero tener un alias en sendmail que contenga a todos los usuarios de mi sistema, de forma tal que cuando escriba a [email protected], el mail llegue a toditos los usuarios de mi sistema”
Partamos de un hecho: Hasta CentOS-6, los usuarios del sistema son los que tienen un uid mayor o igual a 500.
¿Cómo puedo obtener una lista de ellos?
fácil:
cat /etc/passwd|awk -F: ‘$3 >= 500 { print $1; }’
En efecto, con esto obtenemos todos los usuarios con uid => 500.
El problema es que en el archvo /etc/aliases tu piensas que tienes que ponerle en este formato:
todos: usuario1, usuario2, usuario3, usuario4, usuario5
Te imaginas si fueran 300 usuarios? o más? Cómo hacer para mantener actualizada esta lista? Ok, con el primer comando de este post puedes obtener una lista, pero y cómo le insertas la coma? Y si luego un usuario desaparece cómo le eliminas de /etc/aliases? O si se pone uno nuevo o si se cambia?
Bueno, tranquilo, hay una forma, mira, yo en /etc/aliases pondré esto:
todos: :include:/etc/aliases.todos
include, lo que hace es agregar los usuarios (uno por línea) que estén en el archivo que he definido (/etc/aliases.todos).
fíjate que hay varios signos de :, hay 3 signos de :, uno después de la primera palabra, otro separado por uno o varios TABS e inmediatamente delante de include y otro al final de include e inmediatamente antes de /etc/aliases.todos.
Dentro de /etc/aliases.todos qué hago? Pues simplemente le viertes la salida del primer comando de este post:
cat /etc/passwd|awk -F: ‘$3 >= 500 { print $1; }’ > /etc/aliases.todos
sendmail -bi
y ya, en efecto con esto habremos logrado tener una lista de todos los usuarios.
Y si agrego, modifico, elimino usuarios? Pues vuelves a ejecutar estos dos últimos comandos.. si quieres le pones en un cron cada cierto tiempo, varias horas y ya.