From 1147f641f2f269260039b574ae8c29e110977839 Mon Sep 17 00:00:00 2001 From: "github-classroom[bot]" <66690702+github-classroom[bot]@users.noreply.github.com> Date: Mon, 11 Nov 2024 13:03:22 +0000 Subject: [PATCH 1/9] GitHub Classroom Feedback --- .github/.keep | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 .github/.keep diff --git a/.github/.keep b/.github/.keep new file mode 100644 index 0000000..e69de29 From b6e09d3a307f409d46ded4f245a3aec300b230be Mon Sep 17 00:00:00 2001 From: "github-classroom[bot]" <66690702+github-classroom[bot]@users.noreply.github.com> Date: Mon, 11 Nov 2024 13:03:22 +0000 Subject: [PATCH 2/9] Setting up GitHub Classroom Feedback From fc67e1ba6a640895300162e25facd318180aaadb Mon Sep 17 00:00:00 2001 From: "github-classroom[bot]" <66690702+github-classroom[bot]@users.noreply.github.com> Date: Mon, 11 Nov 2024 13:03:25 +0000 Subject: [PATCH 3/9] add deadline --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 65fd13d..15e5a23 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,4 @@ +[![Review Assignment Due Date](https://classroom.github.com/assets/deadline-readme-button-22041afd0340ce965d47ae6ef1cefeee28c7c493a6346c4f15d667ab976d596c.svg)](https://classroom.github.com/a/G6KlMxd-) # Ejercicios de linux para iniciarse en el Mundo de DevOps ¡Bienvenido/a al ejercicio final de linux para iniciarse en el mundo de DevOps! From 0a32af436964b6bc3c7717818be9f53fd45bbf64 Mon Sep 17 00:00:00 2001 From: Sheila Lara Garcia <78981628+sheilalg10@users.noreply.github.com> Date: Tue, 12 Nov 2024 14:46:30 +0100 Subject: [PATCH 4/9] Create Solucion.md --- soluciones/Solucion.md | 1 + 1 file changed, 1 insertion(+) create mode 100644 soluciones/Solucion.md diff --git a/soluciones/Solucion.md b/soluciones/Solucion.md new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/soluciones/Solucion.md @@ -0,0 +1 @@ + From 0cd73979d83efdedb6ceebcdbb39daa09e782e26 Mon Sep 17 00:00:00 2001 From: Sheila Lara Garcia <78981628+sheilalg10@users.noreply.github.com> Date: Tue, 12 Nov 2024 14:46:53 +0100 Subject: [PATCH 5/9] Update Solucion.md --- soluciones/Solucion.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/soluciones/Solucion.md b/soluciones/Solucion.md index 8b13789..3ec3fe8 100644 --- a/soluciones/Solucion.md +++ b/soluciones/Solucion.md @@ -1 +1,3 @@ +# EJERCICIO SEMANAL + From e48e4457429f92173e50fc4fb596bd56352c6e25 Mon Sep 17 00:00:00 2001 From: Sheila Lara Garcia <78981628+sheilalg10@users.noreply.github.com> Date: Tue, 12 Nov 2024 14:53:57 +0100 Subject: [PATCH 6/9] Update Solucion.md --- soluciones/Solucion.md | 112 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 112 insertions(+) diff --git a/soluciones/Solucion.md b/soluciones/Solucion.md index 3ec3fe8..1ef8d8d 100644 --- a/soluciones/Solucion.md +++ b/soluciones/Solucion.md @@ -1,3 +1,115 @@ # EJERCICIO SEMANAL +## Enunciado: + +Una forma de determinar la validez de una cuenta de usuario en linux es verificar si es propietaria de archivos y si es así, ver cuál fue la última fecha de modificación. +Realiza un script capaz de obtener la siguiente información sobre las cuentas: + + ◦ No tengan archivos. + ◦ Los archivos hace 6 meses que no se modifican. + ◦ Los archivos hace 1 año que no se modifican. + ◦ Obtener las cuentas que cumplan el punto 1 o el 3. + +- Cada apartado debe estar definido como una función (cuatro en total) dentro del script. +- A la hora de llamar el script, se le introducirá como parámetro el nombre de la función que se desea ejecutar. +- El output por pantalla debe mostrarse separado por comas, como en el ejemplo. + +(Opcional) + +- El propio script detectará si no se le está pasando un parámetro válido y te devolverá la lista de parámetros válidos. +- El script necesitará permisos de sudo para ejecutarse. En caso de no dárselos en el momento de ejecutarlo, que sea el propio script el que se los otorgue. + +## Solución + +Para empezar crearemos un script `.sh` el cual contendra todo el siguiente código: + +### usuarioScript.sh + +```script +!/bin/bash + +# Comprobacion de sudo + +if [ "$EUID" -ne 0 ]; then + echo "Permisos de sudo no encontrados, ejecutando de nuevo con ellos." + exec sudo bash "$0" "$@" +fi + +# Funcion cuentas sin archivos + +sinarchivos() { + echo "Cuentas de usuarios sin archivos" + for user in $(cut -d: -f1 /etc/passwd); do + if ! find / -user $user -xdev > /dev/null 2>&1; then + echo -n "$user, " + fi + done + echo +} + +# Funcion cuentas con archivos que no se han modificado en 6 meses + +sinmodificar_6meses(){ + echo "Cuentas de usuarios sin modificar 6 meses" + for user in $(cut -d: -f1 /etc/passwd); do + if find / -user $user -xdev -mtime +180 -print | grep -q .;then + echo -n "$user, " + fi + done + echo +} + +# Funcion cuentas con archivos que no se han modificado en 1 año + +sinmodificar_1anio(){ + echo "Cuentas de usuarios sin modificar 1 año" + for user in $(cut -d: -f1 /etc/passwd); do + if find / -user $user -xdev -mtime +360 -print | grep -q .;then + echo -n "$user, " + fi + done + echo +} + +# Funcion de cuentas que no tienen archivos o no se han modificado en un año + +sinarchivos_sinmodificar1anio(){ + for user in $(cut -d: -f1 /etc/passwd);do + if ! find / -user $user -xdev > /dev/null 2>/dev/null || find / -user $user -xdev -mtime +360 -print | grep -q .;then + echo -n "$user, " + fi + done + echo +} + +# Ejecuta la función + +case "$1" in + "sinarchivos") + sinarchivos + ;; + "sinmodificar_6meses") + sinmodificar_6meses + ;; + "sinmodificar_1anio") + sinmodificar_1anio + ;; + "sinarchivos_sinmodificar1anio") + sinarchivos_sinmodificar1anio + ;; + *) + echo "Parametro invalido. Los parametros validos son: sinarchivos, sinmodificar_6meses, sinmodificar_1anio, sinarchivos_sinmodificar1anio" + exit 1 + ;; +esac +``` + + + + + + + + + From 113401dfbf6dcc85be3dc72c394ee235df6967df Mon Sep 17 00:00:00 2001 From: Sheila Lara Garcia <78981628+sheilalg10@users.noreply.github.com> Date: Tue, 12 Nov 2024 17:53:23 +0100 Subject: [PATCH 7/9] Update Solucion.md --- soluciones/Solucion.md | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/soluciones/Solucion.md b/soluciones/Solucion.md index 1ef8d8d..7fb2bd0 100644 --- a/soluciones/Solucion.md +++ b/soluciones/Solucion.md @@ -103,7 +103,17 @@ case "$1" in ;; esac ``` +Para ejecutar el script en la terminal prondremos el siguiente comando: +```bas +./scriptUsuarios.sh +``` + +### Capturas de pantalla + +#### Parametro invalido + +[![Captura-de-pantalla-2024-11-12-145207.png](https://i.postimg.cc/wvggSwnb/Captura-de-pantalla-2024-11-12-145207.png)](https://postimg.cc/QB427J8p) From 966d79ed307aef9d851239cb3062772f1107b622 Mon Sep 17 00:00:00 2001 From: Sheila Lara Garcia <78981628+sheilalg10@users.noreply.github.com> Date: Wed, 13 Nov 2024 12:08:44 +0100 Subject: [PATCH 8/9] Update Solucion.md --- soluciones/Solucion.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/soluciones/Solucion.md b/soluciones/Solucion.md index 7fb2bd0..91277b7 100644 --- a/soluciones/Solucion.md +++ b/soluciones/Solucion.md @@ -23,7 +23,7 @@ Realiza un script capaz de obtener la siguiente información sobre las cuentas: Para empezar crearemos un script `.sh` el cual contendra todo el siguiente código: -### usuarioScript.sh +### scriptUsuarios.sh ```script !/bin/bash From 615087665ec5791621e0252a2f714eb819a2990f Mon Sep 17 00:00:00 2001 From: Sheila Lara Garcia <78981628+sheilalg10@users.noreply.github.com> Date: Wed, 13 Nov 2024 12:51:54 +0100 Subject: [PATCH 9/9] Update Solucion.md --- soluciones/Solucion.md | 30 ++++++++++++++++++++++++------ 1 file changed, 24 insertions(+), 6 deletions(-) diff --git a/soluciones/Solucion.md b/soluciones/Solucion.md index 91277b7..2cc8685 100644 --- a/soluciones/Solucion.md +++ b/soluciones/Solucion.md @@ -26,7 +26,7 @@ Para empezar crearemos un script `.sh` el cual contendra todo el siguiente códi ### scriptUsuarios.sh ```script -!/bin/bash +#!/bin/bash # Comprobacion de sudo @@ -40,11 +40,15 @@ fi sinarchivos() { echo "Cuentas de usuarios sin archivos" for user in $(cut -d: -f1 /etc/passwd); do - if ! find / -user $user -xdev > /dev/null 2>&1; then + if [ -z "$(find / -user $user -xdev 2>/dev/null)" ]; then echo -n "$user, " + count=$((count + 1)) fi done echo + echo + echo "Hay un total de $count usuarios sin ficheros" + echo } # Funcion cuentas con archivos que no se han modificado en 6 meses @@ -52,11 +56,15 @@ sinarchivos() { sinmodificar_6meses(){ echo "Cuentas de usuarios sin modificar 6 meses" for user in $(cut -d: -f1 /etc/passwd); do - if find / -user $user -xdev -mtime +180 -print | grep -q .;then + if [ -z "$(find /-user $user -xdev -mtime +180 -print | grep -q .)" ];then echo -n "$user, " + count=$((count + 1)) fi done echo + echo + echo "Hay un total de $count usuarios sin modificar durante 6 meses" + echo } # Funcion cuentas con archivos que no se han modificado en 1 año @@ -64,22 +72,30 @@ sinmodificar_6meses(){ sinmodificar_1anio(){ echo "Cuentas de usuarios sin modificar 1 año" for user in $(cut -d: -f1 /etc/passwd); do - if find / -user $user -xdev -mtime +360 -print | grep -q .;then + if [ -z "$(find /-user $user -xdev -mtime +360 -print | grep -q .)" ];then echo -n "$user, " + count=$((count + 1)) fi done echo + echo + echo "Hay un total de $count usuarios sin modificar durante 1 año" + echo } # Funcion de cuentas que no tienen archivos o no se han modificado en un año sinarchivos_sinmodificar1anio(){ for user in $(cut -d: -f1 /etc/passwd);do - if ! find / -user $user -xdev > /dev/null 2>/dev/null || find / -user $user -xdev -mtime +360 -print | grep -q .;then + if [ -z "$(find /-user $user -xdev > /dev/null 2>/dev/null || find / -user $user -xdev -mtime +360 -print | grep -q .)" ];then echo -n "$user, " + count=$((count + 1)) fi done echo + echo + echo "Hay un total de $count usuarios sin archivos o sin modificar durante 1 año" + echo } # Ejecuta la función @@ -102,6 +118,7 @@ case "$1" in exit 1 ;; esac + ``` Para ejecutar el script en la terminal prondremos el siguiente comando: @@ -115,8 +132,9 @@ Para ejecutar el script en la terminal prondremos el siguiente comando: [![Captura-de-pantalla-2024-11-12-145207.png](https://i.postimg.cc/wvggSwnb/Captura-de-pantalla-2024-11-12-145207.png)](https://postimg.cc/QB427J8p) +#### Usuarios sin archivos - +[![Captura-de-pantalla-2024-11-13-125104.png](https://i.postimg.cc/xdShCf5Q/Captura-de-pantalla-2024-11-13-125104.png)](https://postimg.cc/nX00StNS)