Iniciar sesión

Ver la versión completa : [Linux] [Shell-scripting] El script cabroncete - no has dicho la palabra mágica



dardo
02/03/2008, 02:46
Como despedida de mis "apañeros" de trabajo le e editado ligeramente el profile del usuario que solemos utilizar para entrar en una máquina de QA en la que solemos operar diariamente.

Les he hecho este shell-script apañadete para que no se olviden de mi, o para que se acuerden de mi cada vez que vayan al baño.
UID=0 y GID=0 (entre otros), aunque no puede tocar los archivos de la gente seguridad lógica porque están protegidos mediante listas de acceso puede cambiar a root o a cualquier otro usuario sin necesidad de contraseña.

En mi caso se trataba de ser elegante sin ser muy bestia, porque se me puede ir la olla y cargarme alguna tabla de alguna base de datos rebotar la máquina o cualquier otra cosa semejante.



#/bin/sh
#atrapamos las señales 1(SIGHUP),2(SIGINT),3(SIGQUIT),9(SIGKILL),15(SIGTE RM),18(SIGTSTP)
trap '' 1 2 3 9 15 18
clear
stty -echo
p_magica=magica
echo " ( "
echo " /\ _)"
echo " _ _\/_ _( "
echo " ( \_.'\"\"\"\"'._.'/ "
echo " ')|''-------'/ "
echo " '\__ __.' "
echo " /___\ "
echo
echo "Escribe la palabra mágica: "
read intento
echo " "
while [ "$p_magica" != "$intento" ]
do
clear
echo " ( "
echo " /\ _)"
echo " _ _\/_ _( "
echo " ( \_.'\"\"\"\"'._.'/ "
echo " ')|''-------'/ "
echo " '\__ __.' "
echo " /___\ "
echo
echo "Escribe la palabra mágica: "
read intento
done
clear
echo "¡Has adivinado la palabra mágica!"
echo
echo "¡Que list@ eres!"
echo
stty echo


Creo que es bastante autoexplicativo. No he encontrado la manera de que sea inm une al ^Z pero el kill -9 y el ^C se la pelan bastante.

Solo quedaba darle al fichero un nombre normal...

# ls -l adivina*
-rwx------ 1 operador staff 87 Mar 1 20:16 adivina.sh

# mv adivina.sh PRUEBA2_SYBASE.LOG
# ls -la PRUE*
-rwx------ 1 operador staff 87 Mar 1 20:16 PRUEBA2_BACKUP_SYBASE.LOG
-rw-rw-r-- 1 syba1200 grpsyba 2357 Feb 16 18:23 PRUEBA3_BACKUP_SYBASE.LOG

... ponerle un usuario y grupo que no de el cante...

# chown syba1200:grpsyba PRUEBA2_BACKUP_SYBASE.LOG
# ls -l PRUEBA*

-rwx------ 1 syba1200 grpsyba 87 Mar 1 20:16 PRUEBA2_BACKUP_SYBASE.LOG
-rw-rw-r-- 1 syba1200 grpsyba 2357 Feb 16 18:23 PRUEBA3_BACKUP_SYBASE.LOG

... ponerle permisos de ejecución ...

# chmod 711 PRUEBA2_BACKUP_SYBASE.LOG
# ls -l PRUEBA2*
-rwx--x--x 1 syba1200 grpsyba 87 Mar 1 20:16 PRUEBA2_BACKUP_SYBASE.LOG
Si, lo se, un fichero cuyo nombre acaba en .LOG con permisos impares, eso da casi más el cante que si no le hubiera cambiado el nombre.

... añadirlo al .profile que está en el home del usuario ...

echo ./PRUEBA2_BACKUP_ORACLE.LOG >> .profile
(ojo que hay que usar dos > (>>) y no un solo > pues nos cepillaríamos el .profile del usuario y ahí tenemos muchos alias y variables de entorno útiles.

... y comprobar que está añadido

tail -8 PRUEBA2_BACKUP_ORACLE.LOG
(En este caso mostramos las últimas ocho líneas, pero pueden ser más o menos)
Y ahí lo tienes, cuando alguien haga un su al usuario o entre a pelo con él tendrá que aguantar una lámpara maravillosa que le solicitara la palabra mágica y si introduce una no válida seguirá insistiendo, para colmo no podrá abortar el proceso ni interrumpirlo, aunque lo puede mandar a dormir (con ^Z) o puede ser abortado por violación de segmento (eso si sabía evitarlo pero no era plan).

Hasta el siguiente capítulo de bricolinux.

Locke
02/03/2008, 03:22
xDDDDD

Que cabronazo!! A mi no creo que se me hubiera ocurrido la palabra si te soy sincero xD

Aiken
02/03/2008, 03:55
xDDDDD
Que cabronazo!! A mi no creo que se me hubiera ocurrido la palabra si te soy sincero xD

pues lo dice bien clarito :D



Escribe la palabra mágica


si es que no sabemos leer :D

Aiken

pakoito
02/03/2008, 04:02
El problema es que:

p_magica=magica

Por lo que

Escribe la palabra mágica
debería ser

Escribe la palabra magica
ó

p_magica=mágica

dardo
02/03/2008, 04:07
El problema es que:

(texto de la cita suprimido por rollo)


Tu suposición es correcta, el caso es que la final prescindí de todas las tildes, pues en casa lo porbé en Bash y en la máquina del trabajo la shell que uso es Korn y el echo -n y las tildes no las pilla bien, supongo que será cosa de alguna variable de entorno, pero no me apetecía revisarlas todas..

pakoito
02/03/2008, 04:11
#/bin/sh
#atrapamos las señales 1(SIGHUP),2(SIGINT),3(SIGQUIT),9(SIGKILL),15(SIGTE RM),18(SIGTSTP)
trap '' 1 2 3 9 15 18
clear
stty -echo
p_magica=magica
intento=hey
echo " "
while [ "$p_magica" != "$intento" ]
do
clear
echo " ( "
echo " /\ _)"
echo " _ _\/_ _( "
echo " ( \_.'\"\"\"\"'._.'/ "
echo " ')|''-------'/ "
echo " '\__ __.' "
echo " /___\ "
echo
echo "Escribe la palabra mágica: "
read intento
done
clear
echo "¡Has adivinado la palabra mágica!"
echo
echo "¡Que list@ eres!"
echo
stty echoMe la juego y te intento optimizar el código xDDD

Locke
02/03/2008, 04:26
#/bin/sh
#atrapamos las señales 1(SIGHUP),2(SIGINT),3(SIGQUIT),9(SIGKILL),15(SIGTE RM),18(SIGTSTP)
trap '' 1 2 3 9 15 18
clear
stty -echo
p_magica=magica
intento=hey
echo " "
while [ "$p_magica" != "$intento" ]
do
clear
echo " ( "
echo " /\ _)"
echo " _ _\/_ _( "
echo " ( \_.'\"\"\"\"'._.'/ "
echo " ')|''-------'/ "
echo " '\__ __.' "
echo " /___\ "
echo
echo "Escribe la palabra mágica: "
read intento
done
clear
echo "¡Has adivinado la palabra mágica!"
echo
echo "¡Que list@ eres!"
echo
stty echo

La lampara me gusta mas sin optimizar :(

pakoito
02/03/2008, 04:29
La lampara me gusta mas sin optimizar :(
Cambio las etiquetas y fuera. Más que optimizar estoy preguntando si así el shell estaría bien, de novato a BOFH.

Locke
02/03/2008, 04:35
No edites, que si no mi post pierde el sentido xDD

Pos hala postquoteao xD

dardo
02/03/2008, 15:04
#/bin/sh
#atrapamos las señales 1(SIGHUP),2(SIGINT),3(SIGQUIT),9(SIGKILL),15(SIGTE RM),18(SIGTSTP)
trap '' 1 2 3 9 15 18
clear
stty -echo
p_magica=magica
intento=hey
echo " "
while [ "$p_magica" != "$intento" ]
do
clear
echo " ( "
echo " /\ _)"
echo " _ _\/_ _( "
echo " ( \_.'\"\"\"\"'._.'/ "
echo " ')|''-------'/ "
echo " '\__ __.' "
echo " /___\ "
echo
echo "Escribe la palabra mágica: "
read intento
done
clear
echo "¡Has adivinado la palabra mágica!"
echo
echo "¡Que list@ eres!"
echo
stty echoMe la juego y te intento optimizar el código xDDD

Esta bien, lo único es que no quería dar un valor a la variable intento para la primera pasada, puesto que no quería que entrara en el bucle si no era imprescindible (es decir, es equivoca en el primer intento.

Esta así porque el script es recicaldo de otro en el que en lugar de fijar una contraseña se te pregunta (por duplicado) cual va ser la contraseña esta vez y así lo puedes usar para bloquear la sesion cuando vas a mear.

WinterN
02/03/2008, 16:04
Espero que en tu próximo curro no te pidan referencias >_<

dardo
02/03/2008, 17:40
Espero que en tu próximo curro no te pidan referencias >_<

¿Por que? De hecho empiezo el lunes.

otto_xd
02/03/2008, 17:58
El control^z es insalvable, siempre es atendido, pero el resto de capturas te hace un ser retorcido y maligno. De mayor quiero ser como tu xDD

De todas formas, como consigues gid y uid 0 si no pertenece ni es lanzado por root, lo lanzas desde init???

Como vas a hacer para que lo lancen?

Quiero aprender xDD

Saludos

hardyx
03/03/2008, 00:38
Este script me recuerda al programita que sal&#237;a en Parque Jur&#225;sico en el ordenador del programador del parque (Nedry) cuando intentaban entrar los protagonistas.

- "&#161;Ja, ja, ja! &#161;No has dicho la palabra m&#225;gica!"
- "Maldita sea. C&#243;mo odio esas man&#237;as de los inform&#225;ticos..." :quepalmo:

dardo
03/03/2008, 22:40
El control^z es insalvable, siempre es atendido, pero el resto de capturas te hace un ser retorcido y maligno. De mayor quiero ser como tu xDD

De todas formas, como consigues gid y uid 0 si no pertenece ni es lanzado por root, lo lanzas desde init???

Como vas a hacer para que lo lancen?

Quiero aprender xDD

Saludos

Normalmente ben operación usamos un usuario que perteneca a una docena de grupos con los permisos de media docena de usuarios del sistema (root, admin, daemon) y grupos (root, admin, staff, etc...)

Así que se lanza desde el .profile, que no es más que un script que se ejecuta cuando se entra con el usuario. Alguien más maligno que yo lo hubiera lanzado con exec y si finaliza correcto, con la palabra mágica pues que a su vez lance otra vez la shell pero pasándole como parámetro otro fichero distinto que sea identico pero sin la llamada la script cabroncete, así cuando se hace ^Z se sale al getty o bien al usuario anterior.

JoJo_ReloadeD
03/03/2008, 22:55
Juas, como mola :)

otto_xd
03/03/2008, 22:58
Fale, que lo pones en el profile del usuario xDDD

eres malo malo xDD