meta data de esta página
Control de usuarios en Linux
En linux no hay ningún comando para saber el número de usuarios activos en el sistema. Pero dicha información la podemos sacar mirando cierto ficheros como /etc/passwd
Para sacar un listado de usuarios
cat /etc/passwd | grep -v nologin
También para entornos con LDAP podemos usar
getent passwd |egrep -v ‘nologin|false’
También podemos ejecutar el siguiente script para ver cuales son usuarios creados por el sistema
#!/bin/bash # Name: listusers.bash # Purpose: List all normal user and system accounts in the system. Tested on RHEL / Debian Linux # Author: Vivek Gite <www.cyberciti.biz>, under GPL v2.0+ # ----------------------------------------------------------------------------------- _l="/etc/login.defs" _p="/etc/passwd" ## get mini UID limit ## l=$(grep "^UID_MIN" $_l) ## get max UID limit ## l1=$(grep "^UID_MAX" $_l) ## use awk to print if UID >= $MIN and UID <= $MAX and shell is not /sbin/nologin ## echo "----------[ Normal User Accounts ]---------------" awk -F':' -v "min=${l##UID_MIN}" -v "max=${l1##UID_MAX}" '{ if ( $3 >= min && $3 <= max && $7 != "/sbin/nologin" ) print $0 }' "$_p" echo "" echo "----------[ System User Accounts ]---------------" awk -F':' -v "min=${l##UID_MIN}" -v "max=${l1##UID_MAX}" '{ if ( !($3 >= min && $3 <= max && $7 != "/sbin/nologin")) print $0 }' "$_p"
Listado tipo tabla
#!/bin/bash # Name: listusers.bash # Purpose: List all normal user and system accounts in the system. Tested on RHEL / Debian Linux # Author: Vivek Gite , under GPL v2.0+ # http://www.cyberciti.biz/faq/linux-list-users-command/ # ———————————————————————————– _l=”/etc/login.defs” _p=”/etc/passwd” ## get mini UID limit ## l=$(grep “^UID_MIN” $_l) ## get max UID limit ## l1=$(grep “^UID_MAX” $_l) ## use awk to print if UID >= $MIN and UID = min && $3 = min && $3 <= max && $7 != "/sbin/nologin" ) printf "%-15s %-5s %-5s %-25s %-10sn", $1, $3, $4, $6, $7 }' "$_p" echo " " ## use awk to print if UID $MAX ## echo “—————————-[ System User Accounts ]—————————” printf “%-15s %-5s %-5s %-25s %-10sn” “Login” “UID” “GID” “Home” “Shell” echo “——————————————————————————-” awk -F':’ -v “min=${l##UID_MIN}” -v “max=${l1##UID_MAX}” ‘{ if ( !( $3 >= min && $3 = min && $3 <= max && $7 != "/sbin/nologin" ) ) printf "%-15s %-5s %-5s %-25s %-10sn", $1, $3, $4, $6, $7 }' "$_p"
Listado de grupos
#!/bin/bash # Name: listgroups.bash # Purpose: List all normal user and system groups in the system. Tested on RHEL / Debian Linux # Author: Vivek Gite , under GPL v2.0+ # http://www.cyberciti.biz/faq/linux-list-users-command/ # ———————————————————————————– _l=”/etc/login.defs” _g=”/etc/group” ## get mini GID limit ## l=$(grep “^GID_MIN” $_l) ## get max GID limit ## l1=$(grep “^GID_MAX” $_l) ## use awk to print if GID >= $MIN and GID = min && $3 = min && $3 <= max ) printf "%-15s %-5s %-10sn", $1, $3, $4 }' "$_g" echo " " ## use awk to print if GID $MAX ## echo “—————————–[ System User Groups ]—————————-” printf “%-15s %-5s %-10sn” “Group” “GID” “Logins” echo “——————————————————————————-” awk -F':’ -v “min=${l##GID_MIN}” -v “max=${l1##GID_MAX}” ‘{ if ( !( $3 >= min && $3 = min && $3 <= max ) ) printf "%-15s %-5s %-10sn", $1, $3, $4 }' "$_g"
Listado de los usuarios que han iniciado sesión
last
Lista de usuarios con inicios de sesión fallidos
lastb
Listado de la última vez que iniciaron sesión
lastlog