3 oct. 2008

Trucos en Linux que debes saber


  • Tuberías
  • Es posible en linux, que dos programas trabajen a la vez, mediante tuberías. Las tuberías se escriben en la línea de comandos con el carácter ''. En el ejemplo anterior hemos visto como generar una lista ordenada con redireccionamientos, pero dependíamos de un fichero temporal. Ese fichero nos lo podemos ahorrar con las tuberías de ésta manera: ls sort.
    Ejemplos habituales del uso de tuberías:

    $ dmesg tail
    $ history grep comando
    $ ls -l less

  • Evitar sobreescritura de archivos
  • Este tip es para proteger los archivos cuando se redirecciona la salida estándar de Unix stdout para evitar que se sobreescriban los archivos que
    ya tenemos.

    $set -o noclobber De ésta manera activamos la protección de sobreescritura.
    $set +o noclobber Así volveríamos a dejarlo como estaba.

    Ejemplo:

    $ls
    lista1 lista2
    $set -o noclobber
    $ls > lista1
    bash: lista1: cannot overwrite existing file

  • Caracteres especiales
  • * * -> Se sustituye por cualquier cadena de texto.
    * ? -> Se sustituye por cualquier carácter.
    * [] -> Su contenido define una lista de caracteres por los cuales se puede sustituir.
    * \ -> Deshabilita las funciones de los otros carácteres especiales.
    * 'cadena' -> En la cadena de texo encerrada entre comillas simples, no se tienen en cuenta los carácteres especiales ni el espacio.
    * `cadena` -> La cadena de texto encerrada entre acentos graves se utiliza como argumento de una línea de comandos.
  • Proteger archivos contra el borrado
  • Existe un comando en linux para crear ciertos atributos de inmunidad sobre algunos archivos o todos los archivos que uno quiera proteger. Si se desea proteger un archivo contra borrarlo o ante ataques se utilizará el siguiente comando:

    chattr +i nombrearchivo

    Así solamente el superusuario puede evitar que se borren archivos, lo cual puede ser importantísimo para archivos de configuración como apache, entre otros. Para desactivar esa inmunidad en el archivo escribimos:

    chattr -i nombrearchivo

  • Aumentar espacio de Linux sin tocar la tabla de particiones
  • Linux trata los dispositivos como si fueran ficheros, por lo que podemos aprovechar esa ventaja. Así pues, lo que voy a hacer es explicar cómo crear un sistema de ficheros en un fichero (que, naturalmente, colocaremos en la partición del otro sistema operativo). El ejemplo lo pongo con windows, ya que es lo más utilizado. Bien, lo primero es ir donde tengamos montada nuestra partición Windows, por ejemplo,/mnt/windows. Ahí es donde crearemos el fichero en cuestión, de la siguiente manera:

    dd if=/dev/zero of=nueva_particion count=tamaño

    Hay que sustituir tamaño por un número, que será igual a la cantidad de espacio deseado en MB multiplicado por 2048 (por ejemplo, si queremos 100MB, 100*2048=204800).

    Una vez hecho ésto, obtenemos un fichero llamado nueva_particion del tamaño deseado. Ahora toca crear el sistema de ficheros:

    mkfs.ext3 /mnt/windows/nueva_particion

    Por último procedemos a montarlo:

    mount -o loop /mnt/windows/nueva_particion /mnt/nueva_particion

    Si se desea, también se puede añadir una línea a /etc/fstab:

    /mnt/aux/nuevo /mnt/nueva_particion ext3 loop,rw,auto 0 2

    Parece una tontería, pero es útil, ya que que los sistemas de ficheros vfat no soportan ni usuarios, ni permisos, ni enlaces. Además, ésta nueva partición la podemos montar, por ejemplo, en /home/usuario/Documentos, que si montásemos ahí la vfat, nos montaría todo el sistema de ficheros. Ya tenemos nuestra nueva partición lista para usar, por si no es evidente, para hacer ésto necesitamos tener montada la partición windows con posibilidad de escritura.

  • Combinaciones de teclas a la hora de tipear en consola
  • Retroceso o Ctrl-H (^H) Borra el caracter anterior y traslada el cursor a la posición del carácter anterior
    Ctrl-U (^U) Borra toda la línea actual y traslada el cursor al principio de la línea actual
    Ctrl-C (^C) Acaba la orden actual y traslada el cursor al principio de la linea siguiente
    Ctrl-S (^S) Detiene el desplazamiento de la salida en pantalla ( o en la ventana de consolas).
    Esta combinación ya no es frecuente pero siempre conviene tenerla en cuenta.
    Ctrl-Q (^Q) Reanudar el desplazamiento de la salida en pantalla. Se utiliza junto con ^S.
  • Puntos a tener en cuenta para la seguridad(muy útil por ejemplo en el caso de un servidor Linux).
  • 1. No crees archivos que tengan permiso de escritura para todo el mundo. Para esto es importante que observen que su valor de umask sea lo más grande posible. Afortunadamente el valor por defecto en linux es 0022 lo cual crea archivos con todos los permisos menos el de escritura menos para el dueño.

    2. Busca archivos con permisos de escritura:

    find . -perm -2 -print

    Así podrás evaluar el riesgo de los archivos más vulnerables en su sistema de archivos.

    3. Buscar archivos que tienen permisos suid, es decir, que se pueden ejecutar como root porque tienen activado el bit correspondiente.
    Introducimos esta opción como root y miramos los resultados para evaluar los binarios qué permisos tienen. Esto es importante porque se pueden vulnerar comandos básicos que por ejemplo en un crontab pueden acabar con la estabilidad del sistema si el binario ha sido modificado.

    find / -type f -perm +6000 -ls

    Muy pendientes a los resultados y sobre todo a los binarios que le dan a cualquier usuario permisos de root. Este punto es especialmente importante.

    4. Es importante que en los dispositivos los usuarios extraños no tengan ningún acceso de escritura así que vigilaremos este aspecto buscando
    dispositivos vulnerables con:

    find /dev -perm -2 -print

    Esta es tal vez la vulnearbilidad más temida de linux debido a que los dispositivos son tratados como carpetas y cualquier descuido puede desconfigurar una unidad de backup etc.

  • Copiar archivos de un servidor a otro usando la shell
  • scp archivo_origen usuaio_destino@servidor_destino:/directorio/destino/archivo_destino

No hay comentarios: