===== 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 , 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