You are on page 1of 7

Laboratorio N 10 LPI 102

Bash Scripting
Seguridad bsica
Considerar lo siguiente sobre el tipo de fuente del documento:
Texto escrito con esta fuente corresponde a ttulos y descripcin del taller
Texto escrito con esta fuente corresponde a ejecucin de comandos
en la shell
Texto escrito con esta fuente corresponde a contenido de archivos de configuracin
1. Bash Scripting
1.1. Definir la variable PS1 de diferentes formas y comprobar cmo cambia el prompt de
la sell:
$ export PS1='shell: '
$ export PS1='\u@\h>\$ '
$ export PS1='\u@\h \!"\$ '
$ export PS1='\t \u@\h \!"\$ '
1.!. Definir la variable PS! de diferentes formas y comprobar cmo cambia el prompt de
la subsell:
$ free \
> #m
$ export PS$='%%% '
$ ps \
... ax & \
... 'rep \
... init
$ export PS$='=> '
$ dmes' & \
=> 'rep #i \
=> dma & \
=> sort
1.". Crear sentencias personali#adas para e$ecutarse cada ve# %ue se inicie sesin
editando el arcivo &'.bas(profile agregando al final del mismo un contenido como el
siguiente:
...
...
alias netstat='netstat -tunlp'
export PATH=$PATH:/opt/in T!"#T=$%
echo &'(ecutando )/.ash*profile ...&
)uego de guardar los cambios cerrar la sesin del usuario actual y volver a iniciarla
nuevamente comprobando %ue se aya e$ecutado el arcivo editado.
* Estas sentencias son propias por cada usuario segn edite su archivo ~/.bash_profile. Si se desea
ejecutar sentencias de manera genrica para todos los usuarios entonces el administrador debe
editar en su lugar el archivo /etc/profile
1.*. Crear sentencias personali#adas para e$ecutarse cada ve# %ue se e$ecute la sell
+,S- editando el arcivo &'.basrc agregando al final del mismo un contenido como el
siguiente:
...
...
alias ls='ls +color'
set ,o histor-
set -o nocloer
echo &'(ecutando )/.ashrc ...&
Para comprobar %ue el arcivo se e$ecuta al iniciar +,S- cada ve#. invocar una nueva
sesin de /ste:
$ (ash
Comprobar %ue se a e$ecutado el arcivo &'.basrc y no el arcivo &'.bas(profile
1.0. Crear un arcivo de script llamado script1.s con un contenido como el siguiente:
.//in/ash
. 0efini1os la funcion funcion2
funcion234 5
echo &'sta1os dentro de la funcin funcion2&
6
. 0efini1os la funcion funcion2
funcion734 5
echo &'sta1os dentro de la funcin funcion7&
6
. '(ecuta1os la funcion2
funcion2
. '(ecuta1os la funcion7
funcion7
* Todos los comentarios pueden ser omitirse si se desea ecepto el primero !"#/bin/bash$
)uego de guardar los cambios dar permiso de e$ecucin al arcivo script1.s y e$ecutarlo
desde la misma ubicacin del arcivo comprobando su funcionamiento correcto:
$ chmod )x script1%sh
$ %*script1%sh
1.1. 2odificar el arcivo script1.s como sigue:
.//in/ash
. 0efini1os la funcion funcion2
funcion234 5
echo &'sta1os dentro de la funcin funcion2&
echo &8e reciio $. para1etros&
echo &2er. para1etro: $2&
echo &7do. para1etro: $7&
echo -e &9er. para1etro: $9:n&
6
. 0efini1os la funcion funcion2
funcion734 5
echo &'sta1os dentro de la funcin funcion7&
echo &'l script en e(ecucion es $%&
6
. '(ecuta1os la funcion2
funcion2 $;
. '(ecuta1os la funcion7
funcion7
)uego de guardar los cambios e$ecutar el script y comprobar la correcta e$ecucin del
script pas3ndole algunos par3metros:
$ %*script1%sh uno dos tres cuatro cinco
1.4. Crear el arcivo script!.s con un contenido como el siguiente:
.//in/ash
. 0efinir la variale <A=
<A==&>uan ?ope@&
echo &0efiniendo la variale <A=&
)uego de guardar los cambios dar permiso de e$ecucin al arcivo y asegurarse %ue la
variable 5,6 no exista:
$ chmod )x script$%sh
$ unset +,-
$ echo $+,-
7$ecutar el script de las diferentes formas posibles e%uivalentes como sigue:
$ %*script$%sh
$ (ash script$%sh
7n ninguna de las dos %ueda declarada la variable 5,6 en nuestra sesin de sell pues
al e$ecutar echo $VAR se obtiene un resultado nulo.
)as dos formas siguientes tambi/n e%uivalentes e$ecutan el script pero una ve# culminada
su e$ecucin comprobar si existe o no la variable 5,6 en nuestra sesin de S-7)):
$ % %*script$%sh
$ echo $+,-
$ unset +,-
$ source script$%sh
$ echo $+,-
$ unset +,-
1.8. Crear el arcivo script".s con un contenido como el siguiente:
.//in/ash
echo -n &Angrese un 2er. nu1ero: &
read A
echo -n &Angrese un 7do. nu1ero: &
read B
echo -n &Angrese un 9er. nu1ero: &
read C
. Calculando la su1a de A - B
let 8#!A=$A,$B
. 8u1ar ahora C
8#!A=$3expr $8#!A , $C4
. Calcular el triple de la su1a
T=AP?'=$33$8#!A;944
echo &?a su1a de los 9 nu1eros es: $8#!A&
echo &'l triple de la su1a es: $T=AP?'&
)uego de guardar los cambios dar permiso de e$ecucin al arcivo y e$ecutarlo
comparando los resultados con el contenido del script:
$ chmod )x script.%sh
$ %*script.%sh
1.9. Crear el arcivo script*.s con un contenido como el siguiente:
.//in/ash
. Co1proar si se paso la ruta de un fichero co1o para1etro sino pedirlo al usuario
if test -@ &$2&
then
echo &Angrese la ruta de un archivo o directorio: &
read A=CHA<"
else
A=CHA<"=$2
fi
. Co1proar Due el no1re de fichero no sea nulo - Due ade1as exista
if E -@ &$A=CHA<"& F GG E / -e &$A=CHA<"& F
then
echo &Archivo invalido&
exit 2
fi
. <erificar su per1iso de lectura por nosotros
if test -r &$A=CHA<"&
then
echo &$A=CHA<" es leile por #d.&
else
echo &$A=CHA<" no es leile por #d.&
fi
)uego de guardar los cambios dar permiso de e$ecucin al arcivo y e$ecutarlo
comparando los resultados con el contenido del script:
$ chmod )x script/%sh
$ %*script/%sh
$ %*script/%sh *etc*fsta(
$ %*script/%sh *usr*share*doc
1.1:. Crear el arcivo script0.s con un contenido como el siguiente:
.//in/ash
. A1pri1ir los 2% pri1eros nu1eros naturales
i=2
Hhile E $i -le 2% FI
do
echo $i
let i=$i,2
done
)uego de guardar los cambios dar permiso de e$ecucin al arcivo y e$ecutarlo
comparando los resultados con el contenido del script:
$ chmod )x script0%sh
$ %*script0%sh
1.11. Crear el arcivo script1.s con un contenido como el siguiente:
.//in/ash
. 8alir del script si no se paso ningun para1etro al 1is1o
E -n $2 F GG exit 2
. A1pri1ir en pantalla todos los para1etros Due fueron pasados al script separados por
. espacios en lanco
for i in $;I
do
echo $i
done
. A1pri1ir cada uno de los co1ponentes de la variale PATH separados por :
AJ8=&:&
for i in $PATHI
do
echo $i
done
)uego de guardar los cambios dar permiso de e$ecucin al arcivo y e$ecutarlo
comparando los resultados con el contenido del script:
$ chmod )x script1%sh
$ %*script1%sh uno dos tres cuatro cinco seis
1.1!. Crear el arcivo script4.s con un contenido como el siguiente:
.//in/ash
. 8alir del script si no se paso ningun para1etro al 1is1o
E -n $2 F GG 5 echo &Para1etros insuficientes& I exit 2 I 6
. A1pri1ir un 1ensa(e Due depende del texto ingresado
case $2 in
dia4
echo &'sta1os de dia&
II
noche4
echo &'sta1os de noche&
II
;4
echo &'rror: AndiDue :&dia:& o :&noche:&& K /dev/stderr
esac
)uego de guardar los cambios dar permiso de e$ecucin al arcivo y e$ecutarlo
comparando los resultados con el contenido del script:
$ chmod )x script2%sh
$ %*script2%sh dia
$ %*script2%sh noche
$ %*script2%sh tarde
1.1". Crear el arcivo script8.s con un contenido como el siguiente:
.//in/ash
. Hacer una seleccin de ele1entos
select <A= in 0esa-uno Al1uer@o CenaI
do
if E -@ $<A= FI then
echo &"pcion invalida&
else
echo &#d. escogio la opcion $='P?L: $<A=&
exit %
fi
done
)uego de guardar los cambios dar permiso de e$ecucin al arcivo y e$ecutarlo
comparando los resultados con el contenido del script:
$ chmod )x script3%sh
$ %*script3%sh
2. Seguridad bsica
!.1. Desabilitar el acceso de root en las consolas tty editando el arcivo 'etc'securetty
como sigue:
. 8tandard consoles
#tty1
#tty2
#tty3
#tty4
#tty5
#tty6
#tty7
#tty8
#tty9
...
!.!. )imitar los usuarios %ue tienen acceso a iniciar sesin en el sistema en el arcivo
'etc'security'access.conf agregando una entrada como la siguiente:
-:A?? 'MC'PT root ad1in:A??
-abilitar el soporte de P,2 para poder leer el arcivo anterior editando el arcivo
'etc'pam.d'login como sigue:
account reDuired pa1*access.so
)uego intentar iniciar sesin con un usuario distinto de root o admin en las consolas.

You might also like