|
CURSO DESDE 0 DE GNU/LINUX. Versión 2.
Entrega 37. Personalización del entorno (y III).
% ^How did the sex change^ operation go?
Modifier failed.
Seguimos con el PATH.
Otra utilidad que se puede hacer con la variable PATH es saltarnos './' para la ejecución de un ejecutable que no esté en la ruta. Para muestra:
|
matados2k@imperio:~$ cd curso/miscomandos/
matados2k@imperio:~/curso/miscomandos$ echo echo Hola Caracola > hola
matados2k@imperio:~/curso/miscomandos$ chmod +x hola
matados2k@imperio:~/curso/miscomandos$ echo $PATH
/usr/local/bin:/usr/bin:/bin:/usr/bin/X11:/usr/games
matados2k@imperio:~/curso/miscomandos$ hola
bash: hola: command not found
matados2k@imperio:~/curso/miscomandos$ PATH=$PATH:./
matados2k@imperio:~/curso/miscomandos$ hola
Hola Caracola
matados2k@imperio:~/curso/miscomandos$
|
Ahora hemos conseguido el comportamiento típico de ms-dos. De hecho, hay distribuciones que ya traen preparado esto. Pero personalmente, esto es algo que puede producir un agujero en la seguridad, en este caso puede que no, pero ahora veamos otro ejemplo:
|
matados2k@imperio:~/curso/miscomandos$ echo echo Eres marica y el culo te pica > ls
matados2k@imperio:~/curso/miscomandos$ chmod +x ls
matados2k@imperio:~/curso/miscomandos$ ls
hola lentejas ls
matados2k@imperio:~/curso/miscomandos$ PATH=./:$PATH
matados2k@imperio:~/curso/miscomandos$ ls
Eres marica y el culo te pica
matados2k@imperio:~/curso/miscomandos$
|
Aquí podemos observar cómo poniendo './' justo como el primero en la ruta podemos suplantar uno de los ejecutables más usados en GNU/Linux y en cualquier Unix. En este caso sólo nos han colado un mensaje muy molesto y bastante idiota.
Ahora supongamos que tenemos un scritpt que borre el disco duro desde el raíz y de forma silenciosa, probablemente si estamos desde un usuario sin permiso de root se produzca entre nada y poco daño al sistema, dado que necesita permisos.
Pero ahora supongamos que mejoras el script y lo primero que haces es comprobar si tiene permisos de root, si no es así, ejecuta 'ls' con los parámetros indicados pero si lo es hace el borrado desde '/' de forma silenciosa. Seguimos suponiendo, y supongamos que yo tengo un amigo llamado Manolito y éste tiene un ftp en el que yo puedo subir cosas, y Manolito dice que Ricky Martin es mejor que Los Mojinos Escozíos, como eso es una aberración me cabreo y le coloco el script en su ftp.
Resulta que Manolito entra en su máquina donde tiene el servidor de ftp y entra como root porque tiene que hacer tareas de mantenimiento, entra en mi directorio y ejecuta 'ls' para ver qué le he subido. Como Manolito es muy cómodo pero algo malo como administrador tenía el PATH como en el segundo ejemplo, y como resultado se ha comido un exploit que le ha borrado el disco duro de la manera más tonta posible, que es no reconocer que Los Mojinos son 'el mejón grupo' del mundo mundial.
Personalmente, y fuera de bromas, yo soy de los que prefieren './' fuera de cualquier parte de la variable PATH.
La variable PS1
Como es evidente, no voy a hablar de la Play Station, sino de una de las variables que nos van a permitir personalizar nuestro prompt para dejarla con la información que a nosotros nos guste.
Para ver la configuración que tenemos, la visualizamos:
|
matados2k@imperio:~$ echo $PS1
\u@\h:\w\$
matados2k@imperio:~$
|
Y ahora toca traducir qué es lo que hace eso, y para ello usamos la siguiente información:
-
\a carácter de campana ASCII (07)
-
\d la fecha en formato día mes día (p.ej., mar may 26)
-
\e caracter de escape ASCII (033)
-
\h el nombre del host hasta el primer «.»
-
\H el nombre del la máquina completo (FQDN)
-
\n caracter de nueva línea
-
\r retorno de carro
-
\s el nombre del shell, el nombre base de $0 (el fragmento que sigue a la última barra)
-
\t la hora actual en formato 24-horas HH:MM:SS
-
\T la hora actual en formato 12-horas HH:MM:SS
-
\@ la hora actual en formato 12-horas AM/PM
-
\u el nombre de usuario del usuario actual
-
\v la versión de bash (p.ej., 2.0)
-
\V la versión del paquete del bash, versión + patch-level (p.ej., 2.00.0)
-
\w el directorio actual de trabajo
-
\W el nombre base del directorio actual de trabajo
-
\! el número del comando actual en el histórico
-
# el número de comando del comando actual
-
\$ si el UID efectivo es 0, un #; en otro caso, $
-
\nnn el caracter correspondiente al número en octal nnn
-
\\ una contrabarra
-
\[ inicio de una secuencia de caracteres no imprimibles que pueden usarse para incrustar una secuencia de control del terminal en el prompt.
-
\] fin de una secuencia de caracteres no imprimibles
|
Lo primero es saber que todos los símbolos con significado especial llevan el carácter de escape '\'. Mirando la tabla traducimos que primero debe poner el nombre del usuario activo, seguido del símbolo @, el nombre del host que es el nombre de mi máquina, seguido de :, el nombre del directorio donde estoy y el símbolo final.
Ahora voy a crearme uno nuevo:
|
matados2k@imperio:~$ AUXILIAR=$PS1
matados2k@imperio:~$ PS1="El mejor es \u y son las \t\a :P "
El mejor es matados2k y son las 19:51:01 :P PS1=$AUXILIAR
matados2k@imperio:~$
|
Como veis podéis hacer muchas combinaciones y ponerlo a vuestro gusto.
La guinda del pastel
Por último vamos a ver un fichero más, ya que personalizando podríamos hacer muchas más entregas, así que decido poner fin con esto a esta serie de entregas.
Si os logueáis desde una consola sin ser bajo entorno gráfico veréis muchas veces mensajes de bienvenida parecidos a este:
|
Linux imperio 2.6.17-2-686 #1 SMP Wed Sep 13 16:34:10 UTC 2006 i686
The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.
Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
matados2k@imperio:~$
|
El fichero que contiene lo que va a mostrase como bienvenida es 'etc/motd', así que puedes poner lo que quieras y ver los cambios:
|
matados2k@imperio:~$ su
Password:
imperio:/home/matados2k# cd /etc
imperio:/etc# cp motd motd_copia
imperio:/etc# echo Vendo Ford Fiesta 1.1 > motd
imperio:/etc# echo En buen estado y de color rosa >> motd
imperio:/etc# echo Con resonador y ruedas de 205/35 15\" y mega alerón >> motd
imperio:/etc# echo Horteras al poder >> motd
imperio:/etc#
|
Y ojo, que esto lo verá cualquier usuario al entrar en la máquina, no solo tú, así que a todos les llegará mi bonito mensaje y de paso a ver si cuela:
|
Vendo Ford Fiesta 1.1
En buen estado y de color rosa
Con resonador y ruedas de 205/35 15" y mega aleron
matados2k@imperio:~$
|
Espero que si probáis a poner tonterías luego restauréis los ficheros como yo hago:
|
imperio:/etc# cp motd_copia motd
imperio:/etc# cat motd
Linux imperio 2.6.17-2-686 #1 SMP Wed Sep 13 16:34:10 UTC 2006 i686
The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.
Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
imperio:/etc#
|
Despedida.
Pues sin más me despido hasta la próxima semana, donde ya veremos si empiezo a explicar la programación de shell script. No me falléis.
Agradecimientos:
· Revisión del documento: karuchi (Carolina García).
Página oficial y dominio de mi propiedad http://matados2k.es
Matados'2k Usuario y moderador de foro.noticias3d.com
Matados'2k Usuario y moderador de www.sinuh.org
,
matados2k (arroba) gmail (punto) com
|
Este documento está sometido a la licencia de creative commons en su variante “Reconocimiento-NoComercial-SinObraDerivada 2.1 España” . Es de agradecer que se comunique al autor el uso de este documento en otro medio y se debe incluir de forma obligatoria este recuadro y los agradecimientos.
|
Sólo los usuarios registrados pueden escribir comentarios. Por favor valídate o regístrate. Powered by AkoComment 2.0! |