
Estoy intentando crear un único comando que muestre el shell predeterminado de cada usuario. Al investigar, puedo encontrar principalmente comandos para cambiar el shell predeterminado, como chsh -s /bin/ksh
pero no para realizar la tarea en cuestión.
¿Alguien sabe cómo se puede lograr esto en CentOS?
Respuesta1
Otra forma de hacerlo
getent passwd | cut -d: -f1,7
Respuesta2
Puede analizar el /etc/passwd
archivo, que contiene el nombre de usuario y la lista del shell de inicio de sesión junto con otra información relevante sobre todas las cuentas de usuario del sistema.
El nombre de usuario se almacena en :
el primer campo separado y el shell de inicio de sesión en el séptimo (último) campo.
Por lo tanto, puede utilizar awk
para imprimir los campos con un poco de formato intermedio para que queden bonitos:
awk -F':' '{ print $1 " " FS " " $NF }' /etc/passwd
Si usa servicios como ldap
ese que no usan el sistema de archivos local, puede usar getent passwd
seguir nsswitch
para obtener la información y luego usarlo awk
sobre eso:
getent passwd | awk -F':' '{ print $1 " " FS " " $NF }'
Ejemplo:
% awk -F':' '{ print $1 " " FS " " $NF }' /etc/passwd
root : /bin/bash
daemon : /usr/sbin/nologin
bin : /usr/sbin/nologin
sys : /usr/sbin/nologin
sync : /bin/sync
games : /usr/sbin/nologin
man : /usr/sbin/nologin
lp : /usr/sbin/nologin
mail : /usr/sbin/nologin
Respuesta3
Esa información se almacena en /etc/passwd:
cut -d: -f1,7 /etc/passwd