CENTOS8 COMANDOS UTILES
Listar todos los usuarios
Listar usuarios es un primer paso para administrarlos. De esta forma conoceremos cuantos usuarios hay y quienes son. En Linux, casi todo puede ser hecho de varias formas y esto no es una excepción.
Para listar todos los usuarios, usted puede utilizar el comando cat:
$ cat /etc/passwd
2- Luego, una representación de la contraseña encriptada (los caracteres x). la contraseña encriptada es almacenada en /etc/shadow file.
3- El UID o el ID del usuario.
4- El próximo campo se refiere a el grupo primario de usuarios.
5- Luego, muestra la información de la ID del usuario como la dirección, correo electrónico, etc.
6- Luego de esto, usted observara el directorio principal del usuario.
7- El ultimo campo es la Shell utilizada por ese usuario.
Sin embargo, aunque la información es bastante útil, pero si solo quiere listar el nombre de los usuarios en una forma básica, usted puede utilizar este comando:
$ cut -d: -f1 /etc/passwd
Listar & ordenar usuarios por nombre
El comando anterior sirve al propósito de listar usuarios en Linux. Pero y ¿que para listar los usuarios en orden alfabético?
Para hacer esto, utilizaremos los comandos previos, pero agregaremos el comando ordenar.
Por lo que el comando será como este:
$ cut -d: -f1 /etc/passwd | sort
Listas de usuarios Linux sin contraseña
Es importante conocer los usuarios que no tienen contraseña y tomar las acciones apropiadas. Para listar los usuarios que no tienen contraseña, solo utilice el siguiente comando:
$ sudo getent shadow | grep -Po '^[^:]*(?=:.?:)'
Listas de usuarios por uso de disco
Si usted tiene un gran directorio y quiere conocer cual usuario está inundándolo, usted puede utilizar el comando du para obtener el uso de disco.
Con esto, puede detectar cuál de estos usuarios está utilizando de forma incorrecta el espacio de disco.
Para ello, es suficiente con utilizar el siguiente comando:
$ sudo du -smc /home/* | sort -n
Lista de los usuarios conectados actualmente
Para listar a los usuarios conectados actualmente, tenemos varias formas de hacerlo. Para el primer método podemos utilizar el comando usuarios:
$ users
Listará los usuarios con una sesión abierta en el sistema.
Pero esta información es un poco básica, sin embargo, tenemos otro comando que da más detalles. El comando es simplemente w.
$ w
Con este comando, podemos tener más información como el tiempo exacto cuando la sesión fue iniciada y la sesión terminal que tiene disponible.
Finalmente, existe un comando llamado who. Está disponible para toda la familia Unix. Por lo que puede utilizarlo en otro sistema como FreeBSD.
$ who
Con el comando who, también tenemos alguna información acerca de los usuarios conectados actualmente. Por supuesto, podemos agregar la opción -a y mostrar todos los detalles.
$ who -a
Lista Linux de usuarios recientemente conectados en el sistema
Vimos cómo obtener los usuarios conectados actualmente, pero ¿qué acerca de listar el historial de conexión de los usuarios?
Usted puede utilizar el comando last para obtener más información acerca de los inicios de sesión que tuvieron lugar:
$ last
O los inicios de sesión de un usuario en particular
$ last [username]
Listas de inicios de sesión de usuarios en una hora o día especifico
¿Qué hay de listar los inicios de sesión de los usuarios en una fecha u hora específica? Para ello utilizamos el último comando, pero con el parámetro -t:
$ last -t YYMMDDHHMMSS
Por ejemplo:
$ last -t 20190926110509
Lista de todos los usuarios en un grupo
Existen 2 tipos formas para listar los miembros de un grupo en Linux, la forma más fácil y más directa de obtener los usuarios del archivo /etc/group de esta manera:
$ cat /etc/group | grep likegeeks
Este comando listará a los usuarios en el grupo likegeeks.
La otra forma es utilizando comandos como los comandos members en distros basados en Debian. Sin embargo, no está instalado por defecto en las distribuciones Linux.
Para instalar en Ubuntu/ Linux Mint19, solo utilice APT:
$ sudo apt install members
O en caso de CentOS:
$ sudo dnf install members
Una vez instalado, usted puede correr el comando luego el nombre del grupo de que quiere listar los usuarios:
$ members [group_name]
Por ejemplo:
$ members avahi
De esta forma puede listar usuarios de un grupo en un distro basado en Debian. ¿Que hay sobre un Redhat basado en distro como CentOS?
Puede utilizar el siguiente comando:
$ getent group likegeeks
Listar usuario con UID
En sistemas Unix, cada usuario tiene un identificador de usuario o ID. El sirve para manjar y administrar cuentas internamente en el sistema operativo.
Generalmente, UIDs de o a 1000 son para usuarios de sistemas. Y de allí en adelante para usuarios regulares. Siempre en sistemas Unix, UID cero pertenece a los usuarios raíz (puede tener más de un usuario con UID cero).
Por lo que, ahora listaremos los usuarios con sus respectivos UID utilizando awk.
El comando que realiza la tarea es el siguiente:
$ awk -F: '{printf "%s:%s\n",$1,$3}' /etc/passwd
Como puede ver, cada usuario con su UID
Lista de usuarios raíz
En un sistema como Unix como Linux, existe usualmente un usuario raíz. Si existen varios, ¿cómo listarlos?
Para hacer esto, podemos utilizar este comando:
$ grep 'x:0:' /etc/passwd
Aquí estamos filtrando el archivo para obtener usuarios con UID de cero (usuarios raíz).
Otra forma de hacerlo es comprobando el archivo /etc/group:
$ grep root /etc/group
Aquí estamos obteniendo usuarios en el grupo raíz desde el archivo /etc/group.
También, puede verificar si algún usuario puede ejecutar comandos como raíz al chequear el archivo /etc/sudoers:
$ cat /etc/sudoers
Obtener el número total de usuarios
Para obtener el número total de usuarios en Linux, usted puede contar las líneas en el archivo /etc/passwd utilizando el comando wc de esta manera:
$ cut -d: -f1 /etc/passwd | wc -l
¡Grandioso! 43 usuarios. Pero esto incluye usuarios del sistema y regulares. ¿Que hay sobre obtener el número de usuarios regulares solamente?
¡Fácil! Ya que conocemos de arriba que los usuarios regulares tienen UID de 1000 en adelante, podemos utilizar awk para obtenerlos:
$ awk -F: '$3 >= 1000 {print $1}' /etc/passwd
¡Genial!
Lista de usuarios sudo
Los sistemas Linux tiene una utilidad llamada sudo que le permite ejecutar comandos como si fuera otro usuario quien usualmente es el usuario raíz.
Esto debería ser manejado con cuidado en un ambiente profesional.
También, es muy importante conocer cual usuarios puede correr el comando sudo. Para esto, es suficiente listar los usuarios que pertenecen al grupo sudo.
$ members sudo
Los usuarios en este grupo pueden ejecutar comandos como super usuarios.
Listas de usuarios que tienen acceso SSH
SSH permite a los usuarios acceder a computadoras remotas en una red. Esto es bastante seguro y nació como un reemplazo para Telnet.
En Linux por defecto, todos los usuarios regulares pueden iniciar sesión y usar SSH. Si usted quiere limitar esto, puede utilizar el archivo de configuración de SSH (/etc/ssh/ssh_config) y agregar la siguiente directiva:
AllowUsers user1 user2 user3
También, puede permitir grupos en lugar de permitir solo usuarios utilizando la directiva AlloeGroups:
AllowGroups group1 group2 group3
Estas directivas definen quien puede acceder el servicio. No olvide reiniciar el servicio SSH.
Lista de usuarios que tienen permiso a un archivo o directorio
Podemos dar más de un permiso para acceder o modificar archivos y directorios de dos formas.
El primer método es agregando usuarios al grupo del archivo o del directorio.
De esta forma, podemos listar el grupo de miembros utilizando la utilidad members como se mostró arriba.
Está bien, pero ¿que si solo queremos los usuarios que tienen acceso a un archivo en específico? (no todos los permisos del grupo)
Aquí podemos definir la ACL para este archivo utilizando el comando setfacl de esta forma:
$ setfacl -m u:newuser:rwx myfile
Aquí damos al usuario llamado newuser el permiso para el archivo llamado myfile, permisos para leer, escribir y ejecutar.
Ahora el archivo puede ser accedido y modificado por el dueño y el usuario newuser. ¿Así que ahora como los listamos?
Podemos listarlos utilizando el comando getfacl de esta manera:
$ getfacl myfile
Este comando listará todos los usuarios que tienen permiso para el archivo con su permiso correspondiente.
Listar usuarios bloqueados (deshabilitados)
En Linux, como medida de seguridad, podemos bloquear usuarios. Esto como precaución si se sospecha que el usuario está haciendo cosas malas y usted no quiere eliminarlo completamente y solo quiere bloquearlo para investigación.
Para bloquear un usuario, puede utilizar el siguiente comando:
$ usermod -L myuser
Ahora el usuario llamado myuser no será capaz de iniciar sesión o utilizar el sistema.
Para listar todos los usuarios bloqueados del sistema, solo utilice el siguiente comando:
$ cat /etc/passwd | cut -d : -f 1 | awk '{ system("passwd -S " $0) }' | grep locked
Esto imprimirá todos los usuarios bloqueados incluyendo los usuarios del sistema. ¿Pero cómo se hace para listar los usuarios regulares solamente?
Como vimos anteriormente, usando awk podemos obtener los usuarios regulares bloqueados de esta forma:
$ awk -F: '$3 >= 1000 {print $1}' /etc/passwd | cut -d : -f 1 | awk '{ system("passwd -S " $0) }' | grep locked
Listar usuarios remotos (LDAP)
Okay, ahora podemos listar todos los usuarios del sistema (usuarios locales), pero, como listar los usuarios remotos o usuarios LDAP? Bueno podemos utilizar una herramienta como ldapsearch, pero ¿existe otra forma?
¡Afortunadamente si! Usted puede listar usuarios locales y remotos con un comando llamado getent
$ getent passwd
Este comando, lista tanto a los usuarios de sistema locales como a los remotos y a los usuarios LADP o NIS o los usuarios de cualquier otra red.
Puede canalizar los resultados de este comando a cualquiera de los comandos mencionados anteriormente de la misma manera.
También, el comando getent puede listar cuentas de grupo de esta manera:
$ getent group
Puede revisar la página principal del comando para conocer las otras bases de datos en las cuales el comando puede buscar.