Cada sistema operativo proporciona una característica de múltiples cuentas de usuario. Los sistemas operativos basados en Linux tienen algunos comandos o funcionalidades para verificar los detalles de las cuentas de los usuarios y cambiarlos. Esta capacidad es utilizada principalmente por el usuario de la cuenta de administrador que es el usuario raíz, para proporcionar permisos y acceso a diferentes usuarios. El administrador también puede verificar cuántos usuarios están conectados actualmente, cuántos están desconectados y la hora de inicio de sesión. Aquí, en este artículo, exploraremos todas estas formas y también escribiremos un script de shell para completar estas tareas de manera eficiente.
Comandos para obtener información relacionada con el usuario:
1. id: El comando id se utiliza para imprimir la información de usuario y grupo para el USUARIO especificado.
-a ignore, for compatibility with other versions -Z, --context print only the security context of the process -g, --group print only the effective group ID -G, --groups print all group IDs -n, --name print a name instead of a number, for -ugG -r, --real print the real ID instead of the effective ID, with -ugG -u, --user print only the effective user ID -z, --zero delimit entries with NUL characters, not whitespace
Este comando id ha producido todos los identificadores de usuario, identificadores de grupo y grupos. Si solo desea un identificador de grupo, use el siguiente comando.
id -G
2. grupos: Esto imprimirá el grupo al que pertenece el usuario especificado. Si no se proporciona un nombre de usuario específico, buscará a los usuarios actuales. Use el siguiente comando para el usuario actual.
3. getent: este comando muestra las entradas de las bases de datos.
-i, --no-idn disable IDN encoding -s, --service=CONFIG Service configuration to be used -?, --help Give this help list --usage Give a short usage message -V, --version Print program version
Veamos la versión del programa getent presente en nuestro sistema.
getent -V
4. lslogins: para ver todos los nombres de usuario e identificaciones de usuario. Esto proporciona una lista de varias características como UID, USUARIO, ÚLTIMO INICIO DE SESIÓN, etc.
-a, --acc-expiration display info about passwords expiration -c, --colon-separate display data in a format similar to /etc/passwd -e, --export display in an export-able output format -f, --failed display data about the users' last failed logins -G, --supp-groups display information about groups -g, --groups=<groups> display users belonging to a group in <groups> -L, --last show info about the users' last login sessions -l, --logins=<logins> display only users from <logins> -n, --newline display each piece of information on a new line --noheadings don't print headings --notruncate don't truncate output
5. usuarios: este comando imprimirá los nombres de usuario de los que iniciaron sesión en el host actual.
users
Este es el único usuario conectado actualmente.
6. who: para mostrar quién está conectado. Esto enumera los usuarios con identificación y la hora y fecha de inicio de sesión del usuario.
-a, --all same as –b, -d, --login, -p, -r, -t, -T, -u -b, --boot time of last system boot -d, --dead print dead processes -H, --heading print line of column headings -l, --login print system login processes --lookup attempt to canonicalize hostnames via DNS -m only hostname and user associated with stdin -p, --process print active processes spawned by init -q, --count all login names and number of users logged on
7. w: el comando w muestra las cuentas de usuario que han iniciado sesión y también muestra lo que están haciendo.
-h, --no-header do not print header -u, --no-current ignore current process username -s, --short short format -f, --from show remote hostname field -o, --old-style old style output -i, --ip-addr display IP address instead of hostname (if possible)
Esto tiene algunas características y columnas más que who, para brindar información más detallada sobre los usuarios.
w
8. último o últimob: los comandos último y últimob muestran una lista de los últimos usuarios que iniciaron sesión
-<number> how many lines to show -a, --hostlast display hostnames in the last column -d, --dns translate the IP number back into a hostname -f, --file <file> use a specific file instead of /var/log/wtmp -F, --fulltimes print full login and logout times and dates -i, --ip display IP numbers in numbers-and-dots notation -n, --limit <number> how many lines to show -R, --nohostname don't display the hostname field -s, --since <time> display the lines since the specified time -t, --until <time> display the lines until the specified time -p, --present <time> display who were present at the specified time
Esto proporciona todos los detalles de inicio de sesión de varios usuarios según la fecha y la hora.
last
9. lastlog: esto producirá un informe de todos los usuarios de inicio de sesión recientes. Esto también puede crear un informe de usuario único si se especifica.
-b, --before DAYS print only lastlog records older than DAYS -C, --clear clear lastlog record of a user (usable only with -u) -h, --help display this help message and exit -R, --root CHROOT_DIR directory to chroot into -S, --set set lastlog record to the current time (usable only with -u) -t, --time DAYS print only lastlog records more recent than DAYS -u, --user LOGIN print lastlog record of the specified LOGIN
Esto informa sobre el último registro de los usuarios.
lastlog
Guión de concha
Ahora crearemos un script de shell usando algunos de los comandos mencionados anteriormente para obtener los detalles del usuario. Nos estamos acercando a la solución de una manera en que se le pide al usuario que aporte sugerencias dadas. Esa entrada se usará para verificar los casos disponibles, y luego se permitirá que se ejecute el caso coincidente.
Abra el archivo gedit:
Abra cualquier editor según sus preferencias, hemos utilizado el editor gedit debido a su interfaz de usuario simple y la combinación de colores presente.
gedit userAccounts.sh
Código:
Aquí, en userAccounts.sh, escribiremos nuestro código y usaremos casos de cambio para comparar la entrada del usuario. Hemos utilizado comandos como lslogins, who, groups, etc. que nos ayudarán a satisfacer los requisitos de los usuarios. Puede encontrar el uso de estos comandos más extendido arriba. Entonces, comencemos el guión.
#!/bin/bash #here we are you going to develope a script for various options on user accounts echo -e "\n [ 1 ] for listing all the user accounts name \n [ 2 ] for counting the number of logged-in user accounts \n [ 3 ] for listing the names of currently logged-in users\n [ 4 ] for checking the groups to which the current user belong \n" #Now take user input read userInput #Now we will use switch cases for various input operations case $userInput in 1) #syntax lslogins <option[=output field]> lslogins -o USER ;; 2) #syntax who <option> <user optional> #grep used to filter who --count | grep users ;; 3) #-q option is to count the number of users and print the logged-in users. # instead of -q, --count can also be used. # -v is used to exclude any pattern who -q | grep -v users ;; 4) #syntax groups <option> [USERNAME] groups ;; *) echo -e "Please Enter Correct Input \n" ;; esac
Otorgar permisos ejecutables
Se deben otorgar permisos ejecutables a los archivos para que se ejecuten o se ejecuten en el sistema. También podríamos usar «777» en lugar de «+x» en el comando chmod. También ejecute el script como root para
# chmod +x userAccounts.sh
Ejecutar el script
./userAccounts.sh
Ejemplo 1:
./userAccounts.sh 1
Ejemplo 2:
./userAccounts.sh 2
Ejemplo 3:
./userAccounts.sh 3
Por lo tanto, pudimos encontrar varios resultados relacionados con el inicio de sesión utilizando nuestro script de shell.
Publicación traducida automáticamente
Artículo escrito por hemusharma196 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA