Devolver el shell predeterminado de cada usuario

Devolver el shell predeterminado de cada usuario

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/kshpero 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/passwdarchivo, 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 awkpara 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 ldapese que no usan el sistema de archivos local, puede usar getent passwdseguir nsswitchpara obtener la información y luego usarlo awksobre 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

información relacionada