/home/blaster [ Blaster's blog ]

java,programacion,codigos,programas,como programar,netbeans,manual netbeans,bajar netbeans,java,jdk,jdbc

Archive for the ‘Linux’ Category

Un poco sobre permisos en sistemas Unix/Linux

Lunes, Junio 9th, 2008

En los sistemas basados en Unix los archivos poseen importantes atributos que rigen su comportamiento con respecto a los usuarios, los permisos. Estos se dividen en 3 niveles, permisos de propietario, permisos de grupo y permisos para el resto del mundo. Dentro de cada nivel hay 3 tipos de permisos: lectura, escritura y ejecución.

Los permisos de lectura controlan si un usuario puede visualizar un archivo, los permisos de escritura determinan si un usuario puede realizar cambios en un archivo y los permisos de ejecución controlan si un usuario puede iniciar o ejecutar un archivo. Cuando se aplican a un directorio, si el permiso de ejecución está desactivado significa que no se puede ejecutar el comando cd sobre el mismo, no se puede visualizar el contenido y no se pueden realizar cambios, si el permiso de lectura está desactivado, se puede crear y leer archivos pero no se puede obtener un listado del contenido del mismo y si el permiso de escritura está desactivado se puede visualizar un listado del contenido y leer archivos, pero no se pueden crear nuevos archivos.

Para ver los permisos de los arhivos podemos usar el comando ls -l esto nos proporcionará un listado en el que se asocian permisos con archivos. En cada archivo encontraremos una cadena del estilo siguiente:

-rw-rwx-r–
drwxrwxr–

El primer caracter determina si es un archivo ‘-’ o un directorio ‘d’, los primeros 3 son los permisos del propietario, los 3 siguientes del grupo y los 3 últimos del resto del mundo.

Para modificar los permisos de un archivo tenemos el comando chmod. Este comando tiene dos modos de uso a los que llamaremos implícito y explícito:


Modo Explícito

Este modo lo he denominado así debido a que su sintaxis expresa de manera clara los cambios que se realizan en los archivos. Tiene el siguiente formato:

chmod “nivel” “acción” “permiso” “nombre de archivo” “nombre de archivo”

Niveles

Propietario - ‘u’
Grupo - ‘g’
Resto - ‘o’
Todos - ‘a’

Acciones

Conceder un permiso -’+’
Retirar un permiso - ‘-’

Permisos

Lectura - ‘r’
Escritura - ‘w’
Ejecución - ‘x’

Así por ejemplo si queremos añadirle permisos de lectura y ejecución a los 3 niveles de un archivo hariamos lo siguiente:

chmod a+rx archivo


Si quisieramos quitarle a un archivo el permiso de lectura al resto del mundo haríamos lo siguiente:

chmod o-r archivo


Modo Implícito

Este método consiste en modificar la máscara de bits que controla realmente los permisos. En esta máscara se asignan 3 bits a cada nivel, cada bit corresponde a un permiso (rwx), con lo cual cada terna funcionará del siguiente modo:

Lectura - 100 = 4
Escritura - 010 =2
Ejecución - 001 = 1

La combinación de estos permisos equivale a un número decimal, luego a la hora de asignar permisos hay que hacer la suma total que nos daría el valor exacto de permisos que tendrá cada nivel. Funcionaría de la siguiente manera:

chmod “valor propietario”"valor grupo”"valor resto” “archivo”

De este modo si quisieramos activar los permisos de lectura y escritura del propietario, los de ejecución del grupo y desactivar todos del resto haríamos lo siguiente:

chmod 610 archivo

Con lo que la salida del ls sería la siguiente:

-rw—x—

Cuando se usa el modo implícito hay que tener en cuenta que estamos modificando todos los permisos de cada nivel así que hay poner correctamente el número para no desactivar permisos sin darnos cuenta.

Introducción al editor de textos más usado en UNIX (vi)

Miércoles, Mayo 21st, 2008

vi es un EDITOR, no un PROCESADOR DE TEXTOS. Está hecho para escribir y modificar ficheros de texto sencillos, programas, etc. No permite justificar párrafos, utilizar distintos tipos de letra, escribir a varias columnas, insertar gráficos, etc. No hay ningún programa de estas características que se proporcione con UNIX. Normalmente, es necesario adquirirlos por separado.

El editor vi es el más utilizado en ordenadores que utilizen el sistema operativo UNIX. Los usuarios no informáticos lo consideran demasidao complicado, sobre todo acostumbrados a los editores del sistema operativo DOS. Por eso se tiende a considerarlo muy atrasado, sin embargo es realmente potente. Su dificultad de manejo se justifica por las características de los terminales que había cuando fue diseñado y porque un objetivo primordial de su diseñador fue que pudiera ser utilizado en casi cualquier tipo de terminal por lo que no requiere el uso de teclas especiales, como las de movimiento del cursor o las de función (aunque en la mayoría de los terminales, las teclas de flechas sí se pueden utilizar, si se desea). Claro, esto es a costa de su sencillez de manejo. Es más sencillo para un usuario pulsar, por ejemplo, la tecla F10 para grabar el fichero que :w.

Comandos e introducción de texto

Por tanto, queda claro que no se pueden usar las teclas de función. En el vi a muchas funciones (como grabar fichero, borrar líneas, etc) se accede de dos formas posibles:

Usando la tecla Ctrl
Pulsar esa tecla (también llamada Control) junto con otra tecla alfabética. Por ejemplo, si dejo pulsada la tecla Ctrl mientras pulso f, avanzaré una página en mi documento. Hay que hacer notar que esto es posible porque todos los terminales generan el mismo código numérico al pulsar Ctrl junto con una letra, por tanto no hay problema de incompatibilidad entre fabricantes,

Usando comandos compuestos de teclas normales
Estos ultimos requieren una explicación. A base de utilizar sólo comandos compuestos por la tecla Ctrl y otra letra alfabética, tengo sólo 26 posibilidades (a…z) ya que Ctrl-a genera el mismo código que Ctrl-A (aquí no hay diferencia entre minúsculas y mayúsculas). Si no puedo usar las teclas de función ni otras especiales (por incompatibilidad entre fabricantes), ¿cómo puedo accder a las muchas funciones que tiene el editor? Pues mediante teclas normales. Pero si me dicen que el símbolo $ significa ir al final de la línea, esto no parece lógico, porque si pulso ese carácter, aparecerá en la pantalla tal como lo escribo.

Por eso el vi tiene dos modos de funcionamiento, entre los cuales el usuario debe alternar continuamente durante una sesión de edición:

Modo edición
Todo lo que escribo, aparece en pantalla, como es habitual en todos los editores.

Modo comando
Lo que escribo estando en este modo (al cual se accede pulsando la tecla ESC, llamada también escape), las teclas tienen un significado especial. Por ejemplo, $ mueve el cursor hasta el final de la línea, j lo mueve una línea hacia abajo, :w graba el fichero, :q es para salir del editor.

Del modo edición se pasa al modo comando usando la tecla ESC. Del modo comando se pasa al modo edición con alguna de las siguientes teclas: i,I,a,A,o,O (y alguna otra).

Hay que tener presente que al entrar en el editor vi, el modo inicial es el MODO COMANDO.

Entrada al editor vi

Si estamos en un terminal trabajando con un ordenador central que funcione con el sistema operativo UNIX (en cualquiera de sus muchas variantes), usaremos el programa vi para editar un fichero con el siguiente comando:

vi fichero

Tras ejecutar ese comando, se borra la pantalla y, si el fichero ya existía previemente, aparece su contenido. Si no existía, quedan todas las líneas de la pantalla vacías pero con una tilde (~) al principio. Con esa tilde representa el vi las líneas que están vacías.

Si no ocurre de esta forma y la pantalla queda desencajada, el problema puede estar relacionado con la variable TERM. Véase Manejo de terminales en UNIX para saber cómo solucionarlo.

Como dijimos antes, nada más entrar en el vi, estamos en el MODO COMANDO. Podemos usar aquí cualquiera de los comandos que veremos más adelante aplicables en este modo (y que están resumidos al final de este documento). Si queremos escribir algo en el fichero, iremos (en el modo comando) al lugar donde deseamos empezar a escribir y pulsaremos una de las teclas que nos pasan al MODO EDICION. En ese momento, todo lo que escribamos aparecerá en la pantalla.

Una cosa que hay que tener en cuenta en el manejo del vi es que conviene estar el máximo tiempo posible en el modo COMANDO, pues así las modificaciones no deseadas en el texto son menores. En cuanto terminemos de escribir, debemos pulsar ESC para ir al modo comando. Si queremos editar en otra parte del fichero, iremos a esa parte en este modo y en ahí pasaremos de nuevo al modo edición.

Primeros comandos

Antes que nada, tendremos que empezar a escribir algo en un fichero. Si vamos a llamar a este con el nombre primero, ejecutamos desde UNIX:

vi primero

Al pulsar la tecla INTRO aparece la pantalla vacía con una tilde al principio de cada línea. Estamos en modo comando, por lo que para comenzar a escribir hay que pasar al modo edición. La forma más habitual de hacer esto es con el comando i. Al pulsar esa letra, no ocurre nada, no vemos ningún cambio en la pantalla, pero el modo a cambiado al de EDICION.

Comenzamos ahora a escribir y el texto va apareciendo en la pantalla. Si escribimos más letras de las que caben en el ancho de la misma (normalmente 80 caracteres), continuarán por la línea siguiente.

Si nos equivocamos en una letra, podemos usar la tecla de borrado (normalmente tiene la inscripción <- o Backspace) para eliminar la última letra escrita. Si seguimos pulsando la tecla, borraremos las letras anteriores. Pero sólo podemos borrar así las últimas que hayamos escrito. Si escribimos un texto, luego pasamos al modo comando para hacer algo, y luego otra vez al modo edición, la tecla de borrado no me sirve para borrar lo que escribí antes. Habrá que moverse al sitio donde quiero borrar y usar el comando para ello. Algunos de los comandos que usaremos para estas operaciones (todos ellos se utilizan en MODO COMANDO) son (atención a la diferencia entre mayúsculas y minúsculas):

i Pasar a modo EDICION (ya se ha explicado)
h Desplaza el cursor una posición a la izquierda
j Idem a la línea inferior
k Idem a la línea superior
l Idem una posición a la derecha
^f Desplaza el cursor una pántalla hacia adelante (unas 24 líneas)
^b Idem hacia atrás
^g Nos informa del nombre del fichero que estamos editando, del número de la línea en la que estamos, y del número total de líneas del fichero.
G Ir al final del fichero.
1G Ir al principio del fichero.
x Borra el carácter sobre el que está el cursor
dd Borra la línea sobre la que está el cursor
^ Desplaza el cursor al principio de la línea actual
$ Idem al final de la línea
:w! Graba el fichero (y seguimos dentro del vi)
:q! Salir del editor, sin grabarlo previamente
:wq! Salir del editor, grabando previamente el fichero

En la mayoría de terminales, se pueden usar las teclas de flechas en lugar de h, j, k, l. Hay que aclarar dos cosas en esta lista:

En primer lugar, usaremos la nomenclatura ^f para indicar que se mantiene pulsada la tecla Ctrl mientras pulsamos f.

En segundo lugar, el comando 1G es especial porque lleva un número al comienzo. Cuando ocurre esto, se considera como si dijéramos ejecuta el comando G con el argumento 1. Casi todos los comandos pueden llevar un número delante. En el caso del comando G, el número indica a qué línea del fichero queremos ir. Así, 1G significa ir a la línea 1, 20G es ir a la línea 20. Una sóla G indica ir a la última línea.

En la mayoría de los comandos, un número precediendo al comando significa ejecuta n veces este comando. Así, si dd significa borrar una línea, 5dd significa borrar 5 líneas (la actual y las cuatro siguientes).

Los comandos que se ejecutan en modo comando no aparecen por pantalla, a excepción de los que empiezan por /,? o :

Otros comandos para pasar al modo edición

Ya hemos mencionado que para entrar en el modo edición se usa el comando i (de insertar). Al pulsarlo, lo que escribamos se añade justo donde está el cursor. A veces, debemos usar otro comando. Este es el caso de tener que añadir texto al final de una línea. Si tenemos una línea tal como la siguiente:

En un lugar de la Mancha

Si nos desplazamos al final para añadir lo que falta, el cursor no pasará más allá de la última a (nunca se puede mover el cursor después del último carácter de una línea). Si ahora pulsamos i y escribimos un texo, éste se insertará entra la h y la a. Lo que queremos en este caso no es INSERTAR, sino AÑADIR. Para ello se usa el comando a. Al introducirlo, el cursor -que estaba, recordemos, encima de la o- se sitúa después de esta letra, permitiéndonos escribir ahí.

Otro caso que se puede presentar es la nedesidad de escribir texto ANTES de la primera línea. ¿Cómo podemos hacerlo?. Si pulsamo i, insertamos texto en la línea actual. Se podría hacer lo siguiente:

  • Situar el cursor al principio de la primera línea
  • Pulsar i para insertar
  • Pulsar INTRO para insertar una línea en blanco
  • Pulsar ESC para pasar al modo comando
  • Pulsar k (o flecha arriba) para subir a la línea anterior
  • Pulsar i para insertar

Ya hemos abierto una línea y podemos escribir. Pulsando INTRO podemos abrir más líneas si queremos. Para evitar esa secuencia tan tediosa, hay otro comando significa abrir una línea antes de la que está el cursor y pasar en ella al modo edición. Este comando es O (o mayúscula).

Un comando relacionado es o (o minúscula) que significa abrir una línea después de la actual y pasar en ella al modo edición. La usaremos por ejemplo para añadi líneas al final del fichero.

Resumimos los comandos para pasar al modo edición (hay alguno más pero estos son los más habituales):

i Insertar texo delante de donde está el cursor
a Añadir texto a continuación de donde está el cursor
O Abrir una línea antes de la actual y editar en ella
o Abrir una línea después de la actual y editar en ella

Practiquemos con un ejemplo. Tenemos el texto:

Con diez cañones por banda,
No cruza el mar sino vuela,
un velero bergantín.

Evidentemente, falta el segundo verso. Si queremos escribirlo ahora, vamos a indicar tres formas de hacerlo (suponemos que estamos en modo comando):

Forma 1
  1. Ir a la primera línea.
  2. Ir al final de ella (con $ o pulsando l hasta llegar al final)
  3. Pulsar a para añadir
  4. Pulsar INTRO. Esto inserta un salto de línea, o sea, una línea nueva y deja el cursor al principio de la misma. Ya podemos escribir
Forma 2
  1. Ir a la primera línea
  2. Pulsa o. Esto inserta una línea debajo y pone el cursor en ella. Ya podemos escribir.
Forma 3
  1. Ir a la segunda línea
  2. Pulsar O. Esto inserta una línea encima de la actual y pone el cursor en ella. Ya podemos escribir.

Borrar y copiar

En cualquier editor, las operaciones de borrado y copiado de texto son muy importantes, pues se usan muy a menudo. Ya mencionamos en el apartado 3 algunos comandos para borrar. Damos aquí una lista más amplia:

x Borra el carácter sobre el que está el cursor.
dd Borra la línea en la que está el cursor.
d$ Borra desde el cursor hasta el final de la línea.
J Une, al final de la línea actual, la siguiente (borra la separación entre ambas).
:1,10d Borra las líneas 1 a la 10.
:10,$d Borra las líneas desde la número 10 hasta la última.
:,$d Borra las líneas comprendidas entre la actual y la última.

Para copiar texto de un sitio del fichero a otro, primero hay que marcar el texto que vamos a copiar, luego ir al sitio donde queremos copiarlo, y dar la orden de copia. Esta orden de copia es el comando p. Hay varia formas de marcar el texto que queremos copiar. Por ejemplo:

Y Marca la línea actual.
3Y Marca tres líneas (la actual y las dos siguientes).
:1,y Marca desde la primera línea hasta la actual.
:,$y Marca desde la línea actual hasta el final.

Por ejemplo, si tenemos el texto:

Con diez cañones por banda,
viento an popa a toda vela.
No cruza el mar sino vuela,
un velero bergantin.

Queremos copiar las dos primeras líneas al final del texto. Para ello, situamos el cursor en la primera línea (se supone que estamos en modo comando; para asegurarnos, no está de más pulsa la tecla ESC) y usamos el comando 2Y (marcar dos líneas). A continuación, movemos el cursor hasta la última línea y usamos el comando p (este comando añade las líneas marcadas en la línea SIGUIENTE a la que está el cursor).

Si queremos copiar de la línea actual sólo lo que hay desde el cursor hasta el final, marcamos eso con y$. Para marcar desde el principio de la línea hasta el cursor: y^. Luego vamos al sitio donde queramos pegarlo y usamos el comando p.

Rangos de líneas

En algunos comandos, como vimos por ejemplo en el caso de dd, podemos indicar el rango de líneas en que hay que aplicarlo. Por ejemplo, 10dd significa borrar 10 líneas (la actual y las 9 siguientes). ¿Y si queremos borrar todas las líneas desde donde estamos hasta el final del fichero? No es necesario contar cuántas son, pues podemos hacer :,$d

El comando :d también sive para borrar líneas. A la mayoría de los comandos que comienzan por :,/,? podemos aplicar un rango de líneas a las que queremos aplicar el comando. Ese rango puede ser o un número de línea o un par de ellas separadas por coma. Si dejamos una sin número, indica la línea actual. Un signo $ indica la última línea. Ejemplos:

:1,d Borra desde la primera línea hasta la actual
:1,$d Borra todo el fichero
:,$d Borra desde la línea actual al final
:1,10d Borra las 10 primeras líneas

Puede haber un problema si queremos borrar un tango de líneas pero no sabemos cuáles son sus números. Para ello el vi tiene un comando que hace que todas las líneas aparezcan en pantalla numeradas:

:set number

vi tiene unos cuantos comandos para activar y desactivar determinadas características. Una lista exhaustiva se da al final de este manual. Si se desea usar siempre el vi con las líneas numeradas, en vez de escribi siempre el comando, se puede añadir esa línea al fichero .exrc de nuestro directorio actual.

Hemos visto cómo referirnos a la primera línea, a la última, la actual y a cualquier línea por su número. También podemos indicar líneas por su posición relativa a la actual:

:,+5d Borrar la línea actual y las cinco siguientes.
:-2,+2y Marca desde dos líneas antes de la actual hasta dos después

Búsqueda y sustitución

El editor vi es bastante potente en lo que se refiere a búsqueda y sustitución de texto, pues no se limita a palabras exactas, sino que puede tratar con patrones. Podemos pedirle, por ejemplo, que busque las líneas que comienzan por un número, o las palabras que tienen 7 caracteres, etc. La sintaxis de estos patrones es algo complicada, pero no está de más aprenderla si se va a trabajar frecuentemente con UNIX, pues muchos otros programas utilizan una sintaxis muy semejante. Los comandos para buscar son:

/ Buscar hacia adelante (desde el cursor hasta el final del fichero)
? Buscar hacia atrás (desde el cursor al principio del fichero)

Al usar cualquiera de estos comandos, aparece en la última línea de la pantalla dicho comando (sea / o ?) y el cursor a continuación. Ahí debemos introducir lo que queremos buscar, e INTRO a continuación. Si el texto o patrón es encontrado, el cursor se posicionará en él. Pulsando sucesivamente / o ? seguidos de INTRO (es decir, sin introducir texto de búsqueda), se localizará la siguiente (en caso de /) o anterior (en caso de ?) ocurrencia del texto buscado.

La explicación de los patrones de búsqueda está más allá de este texto (está explicada en la página de manual UNIX del comando ed; se puede ver con la orden orden man ed), pero debemos explicar algunas cosas. Por ejemplo, el patrón

 ^[0-9]:

buscará las líneas que comienzen (esto se indica con ^) por un dígito (indicado por [0-9]) y luego el carácter :. otro ejemplo:

 ^.. ...$

Busca las líneas compuestas unicamente por dos caracteres, un espacio y 3 caracteres más. El carácter ^ indica el comienzo de línea; el $ indica el final de línea y el punto un carácter cualquiera. Así estamos indicando que entre el principio y el final sólo debe haber dos caracteres cualesquiera, un espacio y otros tres caracteres.

El problema que se plantea es cuando queremos buscar el texto

 100$

Si lo buscamos con /100$, el signo $ se interpretará como fin de línea. Nosotros no queremos que sea así, sino buscar en el texto ese carácter. El mismo problema tenemos con los signos que tienen un sentido especial (como ^,[,],.). Estos caracteres deben ir con el signo [bsol ] delante para que se tomen literalmente, sin su sentido especial. Así para buscar 100$

sería:

/100\$

Esto se aplica a los siguientes caracteres:

     ^ $ . [ ] / \

Para SUSTITUIR texto, se usa el comando:

 :s/texto a buscar/texto sustituto/

Al introducir :s, el cursor va a la última línea de la pantalla y ahí escribimos el resto del comando. Eso sustituirá en la línea actual el texto a buscar por texto sustituido. Si queremos hacer esta operación en todo el fichero, haremos:

 :1,$s/texto a buscar/texto sustituto/

Vemos que entre el carácter :y la letra s podemos indicar el rango de líneas.

El comando s sustituye, como hemos dicho, un texto por otro, pero sólo la primera vez que aparezca el texto a buscar en cada línea. Si queremos sustituir todas las veces que aparezca, añadimos al final g:

 :1,$s/texto a buscar/texto sustituto/g

Como ya hemos dicho, en la página del manual del comando ed se explica todo esto en más profundidad.

Otras posibilidades

Algunas de las muchas posibilidades adicionales que permite el vi, pero que no vamos a detallar son:

Registros
Los registros son como zonas de memoria donde podemos guardar trozos de texto para pegarlos en otros lugares. Ya vimos cómo hacer esto con los comandos Y, y y p, pero sólo con un trozo a la vez.

Marcar lugares del texto
Podemos marcar puntos determinados del texto y movernos de unos a otros de forma sencilla.

Macros
Si hay secuencias de teclas que repetimos muy a menudo, podemos definir un comando especial que realice todos ellos con sólo dar ese comando.

Por último, en la siguiente table mencionamos algunos comandos útiles (atención a la mayúsculas y minúsculas, ya que al no ser comandos que se usan con la tecla Ctrl esto es importante):

. Repite el último comando.
u Deshacer el último cambio (undo).
J Pega la línea siguiente al final de la actual.
% Si usamos este comando cuando el cursor está situado sobre alguno de estos caracteres: (,{,[ o sus correspondiente cerrados, el cursor se va hacia el lugar del documento donde esté el que lo cierra (o abre). Esto es muy interesante cuando se están editando programas.
:efichero Abandonar el documento actual y cargar el otro fichero. Si no hemos grabado el actual, no nos lo permitirá a menos que usemos el comando :e! fichero.
:rfichero Carga el contenido del fichero en el lugar del documento actual donde esté el cursor.
:w fichero Grabar el documento con el nombre fichero (que puede no coincidir con el nombre de que estamos editando).
:,$w fichero Grabar desde la línea actual hasta el final en el fichero.
:n Si hemos ejecutado el vi con varios nombres, por ejemplo: vi *.c, con este comando abandonamos el actual y pasamos a editar el siguiente. Si no hemos grabado el actual no nos lo permitirá a menos que usemos :n!.
^l Si aparecen mensajes por la pantalla o ésta se queda desajustada, con este comando la refrescamos.
c$ Cambiar hasta el final de la línea. Tras escribir este comando, todo lo que escribamos a continuación hasta que pulsemos ESC sustituirá a lo que había desde el cursor hasta el final de la línea.
c^ Lo mismo pero sustituirá a lo que hay desde el principio de la línea hasta el cursor.
cw Lo mismo pero sustituirá a la palabra sobre la que está el cursor.
:!sh Ejecutar una subshell donde podemos escribir comandos del sistema operativo. Cuando la abandonemos (con exit) volvemos al vi.

Para terminar, admitir que a pesar de su potencia es difícil dominar todo lo que hemos visto, y difícil es explicarlo, pero creo que se entiende facilmente la lógica de sus comandos, y a veces aunque no se sepa qué comando existe para hacer algo, se puede deducir. Por ejemplo, ¿ cómo marco la palabra actual y las tres siguientes para pegarlas en otro lado? No es difícil pensar que será el mismo comando para marcar una palabra, yw repetida tres veces, por tanto: 3yw.

Como gravar video tutoriales en linux ( ubuntu)

Viernes, Abril 18th, 2008

he probado toda clase de sistemas para hacerlo y nunca me funcionó alguno, pero por fin encontré una solución que me funcionó. Se llama RecordMyDesktop y se instala muy fácilmente con dpkg -i archivo.deb o con gdebi haciendo doble click sobre él.

Hay que bajar los siguientes 2 archivos e instalarlos en orden para no tener problemas de dependencias:
RecordMyDesktop
gtk-RecordMyDesktop

Y listo… instalados, luego para ejecutarlo nos vamos a Inicio/Sonido y Video/gtk-recordmydesktop.

Lista de Comandos Linux más frecuentes

Martes, Marzo 18th, 2008

Comandos de administración

  • rpm -Uvh –force *.rpm Fuerza la reinstalación de todos los rpm que tengas en el directorio.
  • su Te conviertes en administrador(root) despues de introducir la clave de acceso. Ideal para realizar alguna tarea de administración sin necesidad de salir del sistema y entrar de nuevo como root.
  • su - Lo mismo en modo real.
  • /usr/sbin/adduser usuario Registra y crea una cuenta de usuario.
  • /usr/sbin/userdel usuario Borra la cuenta de usuario usuario.
  • passwd Cambia la clave de acceso para el usuario actual. Root puede cambiar la clave de cualquier usuario passwd usuario.
  • /usr/sbin/groupadd grupo Crea un nuevo grupo.
  • /usr/sbin/groupdel grupo Borra un grupo.
  • more /etc/passwd Muestra el fichero de claves del sistema. (Si no se usa shadow password).
  • more /etc/group Muestra los grupos registrados en el sistema.
  • shutdown -t3 -r now Reinizializa el sistema.
  • shutdown -t3 -h now Apaga el sistema.

Programas de interés

  • pine Cliente correo electrónico.
  • pico Editor de texto
  • vi Otro editor de texto

Compirimir y descomprimir con tar

  • tar -cf archivo.tar origen Crea el fichero archivo.tar
  • tar -tvf archivo.tar Muestra el contenido de archivo.tar
  • tar -xf archivo.tar Extrae los ficheros de archivo.tar

Comandos sobre ficheros y directorios

  • chmod permisos fichero/directorio Cambia los permisos de ficheros/directorios
  • cp fichero1 fichero2 Copia fichero1 como fichero2
  • rm fichero Borra fichero
  • rm -R directorio Borra el contenido completo (ficheros/subdirectorios) de directorio
  • mv fichero1 fichero2 Cambia el nombre de fichero1 a fichero2
  • mkdir directorio Crea un directorio
  • rmdir directorio Borra un directorio
  • find Busca ficheros/directorios. Ej: find /home -name “index.*”

Comandos sobre información del sistema

  • ifconfig Muestra información sobre nuestras tarjetas de red.
  • route Muestra información sobre nuestras configuración de red.
  • hostname Devuelve el nombre de la máquina.
  • uptime Devuelve la cantidad de tiempo trascurrido desde la ultima vez que se arranco el sistema, la cantidad de usuarios trabajando en el sistema y el load average (carga del sistema).
  • uname -a Información sobre el sistema operativo de la maquina.
  • uname -r Devuelve la versión del Kernel
  • dmesg|more Imprime el “ring buffer” del kernel.
  • free -tm Información sobre la cantidad de memoria disponible y usada.
  • df -h Información sobre todo los dispositivos montados en la máquina.
  • du -bh /|more Información sobre el espacio ocupado por cada subdirectorio, comenzando en el directorio raiz /.
  • ps Información sobre los procesos del actual usuario, que se estan ejecutando.
  • ps aux Información sobre todos los procesos que se estan ejecutando en la máquina.
  • top Información sobre el uso de cpu y memoria de los procesos del sistema.
  • cat /proc/cpuinfo Información sobre el microprocesador.
  • cat /proc/interrupts Información sobre las interrupciones en uso.
  • cat /proc/dma Información sobre dma en uso.
  • cat /proc/filesystems Información sobre los sistemas de archivos que se pueden utilizar (compilados en el kernel).
  • /sbin/lsmod Información sobre los modulos en uso.
  • finger usuario Información sobre el usuario usuario.
  • who Información sobre los usuarios usando el sistema.
  • id usuario Información sobre UID, GID y GROUPS del usuario usuario
  • last Información sobre los ultimos usuarios que han usado el sistema.
  • set|more Información sobre el entorno de usuario actual.
  • ping maquina Para comprobar si tenemos contacto con la máquina maquina (maquina: nombre o IP)
  • /sbin/route Tabla de enrutamiento de nuestro sistema.
  • /sbin/ifconfig Información sobre los distintos dispositivos de red
  • netstat Información valiosa sobre la conexión de red (Este comando tiene muchas posibilidades, ejecutar man netstat
  • tail -f /var/log/maillog Muestra el movimiento del correo electrónico.
  • /sbin/iptables -L -n Muestra las reglas establecidas en IpTables.
  • vmstat Muestra información sobre memoria, swap, buffer etc…
  • nslookup Muestra información sobre el dominio consultado Ej: nslookup microsoft.com
  • dig Muestra mucho más detallada sobre el dominio consultado Ej: dig microsoft.com

tips para asegurar tu servidor linux

Domingo, Marzo 16th, 2008

1. En tu cortafuegos (tienes uno, ¿verdad?) confirma que el puerto MySQL para entrantes es el 3306 y ciérralo. Si este puerto se queda abierto se expone tanto a un abuso de servicio y una amenaza de seguridad ya que no sólo los hackers pueden irrumpir en MySQL, sino que cualquier usuario puede almacenar su base SQL en tu servidor y acceder desde cualquier equipo, y así (ab)usar los recursos de tu servidor.

2. Chequea los permisos de /tmp. Deberían estar en chmod 1777

3. Chequea el propietario de /tmp. Debería pertenecer a root:root

4. Chequea /etc/cron.daily/logrotate. Debido a un bug en logrotate, si se monta /tmp con la opción noexec, necesitas que logrotate use un directorio temporal diferente. Si no lo haces, este syslog puede no reiniciarse correctamente y escribirá sobre archivos antiguos/incorrectos.

5. Chequea los permisos de /var/tmp. Debería estar en chmod 1777

6. Chequea el propietario de /var/tmp. Debería pertenecer a root:root

7. Chequea que /var/tmp está montado como sistema de archivos. No debería estar enlazado (ln -s) a /tmp o montado como un sistema de archivos.

8. Chequea que /var/tmp está montado con noexec,nosuid. Normalmente no tiene estas opciones, con lo que deberías considerar agregar un punto de montaje en /etc/fstab con esas opciones.

9. Chequea los permisos de /usr/tmp. Deberia estar en chmod 1777

10. Chequea el propietario de /usr/tmp. Deberia pertenecer a root:root

11. Chequea que /usr/tmp está montado como sistema de archivos o es un enlace simbólico (ln -s) de /tmp.

12. Chequea /etc/resolv.conf . No deberías especificar como nombre de servidor (nameserver) a 127.0.0.1 o a localhost. Usa la IP principal de los servidores en su lugar. Chequea

12b. Chequea /etc/named.conf por las restricciones de recursividad . Si tienes un servidor DNS local ejecutándose pero no tienes restricciones de recursividad establecidas, es un riesgo de seguridad y de rendimiento tan buenos como ataques DDoS contra tu sistema, con lo que deberías establecerlo sólo para las direcciones IP locales.

13. Chequea el runlevel del servidor. Para un entorno seguro deberías ejecutar el servidor sólo a nivel 3. Puedes solucinarlo editando /etc/inittab y cambiando la linea de “initdefault” a como sigue: id:3:initdefault y luego reiniciar el servidor.

14. Chequea el cron del usuario “nobody”. Tienes un registro de nobody que deberías chequear si no ha sido creado por un exploit.

15. Chequea el soporte del Sistema Operativo. Asegírante que tu versión aún tiene soporte del fabricante y que las actualizaciones aún siguen disponibles.

16. Chequea si SSHv1 está desactivado. Deberías, editando /etc/ssh/sshd:config y configurando: Protocol 2 (eliminando la almohadilla del principio de linea y editando donde pone “1.1″)

17. Chequea si SSH está en un puerto no-estándar. Mover SSH a un puerto no-estándar evita escaneos básicos de puertos SSH. Edita /etc/ssh/sshd_config y configura Port nnnn, donde nnnn es un puerto a tu elección. ¡No olvides abrir el puerto en el cortafuegos antes!

18. Chequea en SSH “PasswordAuthentication”. Para la seguridad definitiva de SSH, puedes considerar desactivar esta opción y permitir acceso sólo usando “PubKeyAuthentication”.

19. Chequea que el puerto 23 de telnet no está en uso. Cierra este puerto en tu cortafuegos. Telnet es un protocolo inseguro y deberías desactivar el servicio telnet si está ejecutándose.

20. Chequea los límites de recursos de la shell. Deberías activarlos para prevenir que los usuarios de shell consuman recursos de servidor (exploits de DoS, mayormente). Si estás usando cPanel/WHM activa “Shell Fork Bomb Protection”.

21. Desactiva todas las instancias de IRC - BitchX, bnc, eggdrop, sniffers genéricos, servicios guardianes, ircd, psyBNC, ptlink. Si estás usando WHM puedes hacerlo en “Background Process Killer”.

22. Chequea el modulo mod_security en apache. Debería estar instalado.

23. Chequea el modulo mod_evasive en apache- Deberías instalarlo desde el código fuente para evitar ataques DoS contra apache. Cuidado porque este módulo se carga la funcionalidad de FrontPage.

24. Chequea el valor RLimitCPU de apache. Deberías establecer un valor para evitar scripts que consuman recursos de servidor (exploits de DoS).

25. Igualmente para el valor RLimitMEM.

26. Chequea el valor de enable_dl en php. Deberías modificar /usr/local/lib/php.ini y configurar enable_dl = off. Esto previene a los usuarios de ejecutar modulos php que afecten a cualquiera en el servidor. Nota que si se usan librerías dinámicas, como ioncube, deberás cargarlas directamente en php.ini

27. Chequea el valor de disable_functions en php. Deberías modificar /usr/local/lib/php.ini y desactivar las funciones más comúnmente atacadas. Por ejemplo:disable_functions = show_resource, system, shell_exec, passthru, exec, phpinfo, popen, proc_open. Algunos scripts de clientes web pueden fallar con algunas de estas funciones desactivadas, así que tendrás que quitarlas de esta lista.

28. Chequea phpsuexec. Para reducir el riesgo de que hackers accedan a todos los sitios del servidor desde un script web, deberías activar phpsuexec cuando construyes apache/php. Nota que hay efectos laterales cuando se activa phpsuexec en un servidor y debes tenerlos en cuenta antes de activarlos.

Traducción libre de http://kevin.hatfieldfamilysite.com/?p=147:
Fuente: http://www.albianlinux.com/davidp/