Posts Tagged ‘terminal linux’

h1

Capítulo V: Primeras tareas de administración desde la consola Linux

16 junio 2008

Seguimos en este capítulo tratando, a modo de puente, el tema del intérprete de comandos, para enlazar con las primeras ordenes de administración desde una consola o terminal.

Como ya hemos visto anteriormente, el intérprete de comandos será ese terminal donde un administrador de sistemas Linux pasará la mayor parte del su tiempo de trabajo, así que, merece la pena volver a hablar de él.

El intérprete de comandos es el equivalente al MS-DOS de Microsoft, aunque en realidad, es bastante más potente, pero creados con la misma finalidad. Existen diferentes intérpretes de comandos en Linux, los más conocidos son: bash y sh.

Recordemos que al abrir un intérprete de comandos, nos encontraremos con un prompt (solicitud) parecido al siguiente:

[albertux@debian]$

Por lo general, el intérprete de comandos aparecerá de la siguiente forma: nombre_usuario@nombre_máquina, seguido de $ o #.

El símbolo $ significa que soy un usuario final (sin privilegios), mientras que el símbolo # nos avisa de que tenemos abierta una sesión como ‘root’.

Para pasar de usuario normal a ‘root’, basta con teclear la palabra ‘su’ y hacer intro para introducir la clave de administrador. Para salir teclearemos la palabra ‘exit’ y para cambiar a cualquier otro usuario del sistema escribiremos ‘su nombre_del_usuario’.

[albertux@debian]$ su
contraseña:

Nota: Los sistemas Unix/Linux son case sensitive, es decir, diferencian ente mayúsculas y minúsculas, por lo que no será lo mismo teclear ‘su’ que ‘SU’.

5.1 Personalizando nuestro bash:

Vamos a utilizar bash como nuestro intérprete de comandos a usar. Podremos personalizar este intérprete de comandos, del modo que más útil nos sea.

Ejecutando el comando ‘alias -p‘, veremos cómo lo tenemos definido.

[albertux@debian]$ alias -p
alias l = ‘ls -CF’
alias la = ‘la -A’

alias ll = ‘ls -l’
alias ls = ‘ls –color=auto’

El archivo donde configurar nuestro bash se llama ‘bashrc’ y está oculto en cada /home de usuario. Podemos editarlo con cualquier editor de textos.

[albertux@debian]$ nano /home/usuario/.bashrc

Si nos fijamos, existen definidos cierto alias que hacen referencia a una orden concreta. Según la configuración anterior, si tecleo en mi intérprete de comandos la orden ‘la‘, este alias ejecutará el comando ‘ls -A‘, cuyo ejecución provoca un listado de todos los archivos y directorios, incluido los ocultos.

Según esto, nosotros podremos incluir alias a nuestro antojo, y según nuestras necesidades.

Un ejemplo curioso podría ser el crearnos un alias que nos mostrara todos los procesos que están ejecutándose en mi sistema. Para ello, editaremos este archivo y crearemos el alias ‘procesos‘ el cuál realizará la orden: ‘ps aux

alias procesos = ‘ps aux’

Únicamente bastará con reiniciar mi consola o terminal para ver el resultado.

5.2 Colección de comandos I:

Una vez estamos algo más familiarizados con nuestro intérprete de comandos, es buen momento para comenzar a conocer algunos comandos básicos que me permitan administrar mi máquina.

El comando por excelencia y más importante de todos es el comando ‘man‘. Este comando es la base y guía del resto de comandos, ya que nos ayudará a conocer la sintaxis correcta y opciones de cualquier otro comando.

Anteriormente hemos usado en nuestro alias el comando ‘ps‘. Si queremos conocer la sintaxis y el resto de opciones para este comando haremos:

[albertux@debian]$ man ps

Un intérprete de comandos no tiene sentido si no sabemos sacarle su “jugo”, es decir, nos interesa conocer una serie de comandos básicos para darle funcionalidad.

Fuente: www.tiraecol.net

5.2.1 Los relativos a directorios y archivos:

Recordemos antes un poco, cómo es el árbol de directorios de Linux:

Como vemos, todo pasa por el directorio raíz, el directorio /. La orden para movernos de un directorio a a otro será: cdy su sintaxis básica es la siguiente:

cd /ruta/del/directorio

Podemos usar la ruta absoluta (partiendo del directorio raíz) o la ruta relativa. Imaginemos que estamos en el directorio /home y queremos llegar a un subdirectorio llamado usuario1.

Podemos utilizar la ruta absoluta:

[albertux@debian]$ cd /home/usuario1

o utilizar la ruta relativa: (en el caso de estar ya en /home sería):

[albertux@debian]$ cd usuario1

Al estar ya situados en el directorio /home, no es necesario pasar antes por el directorio raíz (/), ni por home, directamente apuntaremos al directorio de destino.

Sería un error estando en ‘/home’ escribir ‘cd /usuario1′, ya que estamos intentando llegar a un directorio llamado ‘usuario1’ que no cuelga del directorio raíz ‘/’, sino del directorio ‘home’.

Nota: En caso de no saber exactamente en qué directorio estamos es más recomendable utilizar siempre la ruta absoluta.

Dentro de todo directorio existen dos directorios especiales que son ‘.‘ y ‘..‘.

El primero hace referencia al directorio actual, es decir, si haces ‘cd .‘ te quedas donde estás (el directorio especial ‘.’ ).

El segundo hace referencia al directorio padre, o sea, si estamos en /home/usuario1 y hacemos ‘cd ..‘ terminaremos en /home.

[albertux@debian]$ cd .
[albertux@debian]$ cd ..

Si nos hemos perdido por movernos entre tantos directorios… ¡¡que no cunda el pánico!!, tenemos el maravilloso comando “pwd” que nos “chiva” donde estamos situados.

[albertux@debian]$ pwd

[albertux@debian]$ /home/usuario1/documentos

Algunos comandos básicos para comenzar a manejar nuestro intérprete de comandos pueden ser:

COMANDO

ACCIÓN

ls

Igual que el dir. Listado de archivos y directorios.

Ej.: ls -la (muestra los ocultos y con detalles)

cp

Copia archivos. Con -R copia en modo recursivo los directorios:

Ej.: cp -R /home/usuario1 /home/usuario2

mv

Mueve directorios y archivos:

Ej.: mv /home/usuario1 /tmp

rm

Elimina archivos. Con -R elimina directorios de modo recursivo:

Ej.: rm -R /tmp/directorio

mkdir

Crea un directorio nuevo:

Ej.: mkdir mi_directorio

df

Nos indica la cantidad de espacio de disco ocupado:

Ej.: df -h

Como ya hemos dicho antes, TODOS los comandos pueden apoyarse en el comando ‘man‘ para obtener su ayuda.

5.2.2 Los relativos a procesos, usuarios y grupos:

Podemos utilizar diferentes comandos de manera útil con diferentes finalidades.

Por ejemplo el comando ‘cat nos da la posibilidad de pasar a un archivo el contenido de una salida.

[albertux@debian]$ cat > compra-para-barbacoa.txt
patatas fritas
vino
cervezas
cocacola
panceta
pan

Esto nos guardará en el archivo ‘compra-para-barbacoa.txt’ toda la lista anteriormente escrita.

Para verlo:

[albertux@debian]$ cat compra-para-barbacoa.txt

O cualquier otro editor de textos bajo terminal, por ejemplo:

[albertux@debian]$ nano compra-para-barbacoa.txt

Utilizaremos la opción ‘>>‘ para sobrescribir sobre lo anterior sin borrar nada.

Se nos olvidaba lo básico…

[albertux@debian]$ cat compra-para-barbacoa.txt
carbón

PROCESOS:

Interesante también es el uso del comando ‘ps‘, que nos mostrará los procesos que están corriendo en nuestro sistema. Para saber más:

[albertux@debian]$ man ps

Así vemos que con ‘ps aux‘ nos muestra todos los procesos y sus PID (Identificador de Procesos). Si recordamos este comando es el que utilizamos en el alias ‘procesos’ anteriormente.

Si queremos guardar este listado de procesos en un archivo de texto ‘procesos.txt‘, ya sabemos como hacerlo:

[albertux@debian]$ ps aux > procesos.txt

Recordando más…

Para renombrarlo:

[albertux@debian]$ mv procesos.txt procesos-activos.txt

Para borrarlo:

[albertux@debian]$ rm procesos.txt

Otro comando interesante es el comando ‘grep‘ que nos ayudará en muchas ocasiones para filtrar y buscar una cadena determinada.

Imaginemos que quiero buscar el proceso que está ejecutando mi navegador web mozilla (iceweasel). Para ello combinaremos ‘ps y ‘grep‘ con las famosas tuberías (|) de este modo:

[albertux@debian]$ ps aux | grep iceweasel
usuario1 1787 0.0 3332 760 pts/0 R+ 12:02 0:00 grep iceweasel

Vemos que el PID de su proceso es el 1787. Imaginemos que como administrador vemos que este proceso nos ha fallado o nos está dando problemas. Podemos matarlo con la orden ‘kill‘.

[albertux@debian]$ kill 1787

Otros comandos muy útiles para un administrador de Linux son los relativos a la gestión de permisos, usuarios y grupos de archivos y directorios:

COMANDO:

ACCIÓN:

chmod

Cambia los permisos de un archivo. Con ‘-R’ los hará de modo recursivo a los directorios.

Ej.: chmod -R 755 procesos.txt

chown

Cambia de propietario a un archivo. Con ‘-R’ lo aplica de modo recursivo a los directorios.

Ej.: chown -R alberto /home/alberto

chgrp

Cambia de grupo a un archivo. Con ‘-R’ lo aplica de modo recursivo a los directorios.

Ej.: chgrp -R www-data /home/alberto

adduser

Añade un nuevo usuario.

deluser

Elimina un usuario existente.

addgroup

Añade un nuevo grupo de usuarios.

delgroup

Elimina un grupo de usuarios ya existente.

En sucesivos capítulos trataremos con más profundidad la administración de usuarios, grupos y permisos para mantener una política de seguridad precisa en nuestros equipos.

Esta obra está protegida por la Licencia Creative Commons, bajo las condiciones de: Reconocimiento – No comercial – Compartir igual: El material creado por un artista puede ser distribuido, copiado y exhibido por terceros si se muestra en los créditos. No se puede obtener ningún beneficio comercial y las obras derivadas tienen que estar bajo los mismos términos de licencia que el trabajo original.

ReconocimientoReconocimiento (Attribution): El material creado por un artista puede ser distribuido, copiado y exhibido por terceras personas si se muestra en los créditos.

No comercialNo Comercial (Non commercial): El material original y los trabajos derivados pueden ser distribuidos, copiados y exhibidos mientras su uso no sea comercial.

Compartir IgualCompartir Igual (Share alike): El material creado por un artista puede ser modificado y distribuido pero bajo la misma licencia que el material original.

Podéis descargar este capítulo en formato PDF, desde aquí.
Para ver los capítulos anteriores: pincha aquí.
Resto de Posts de estos capítulos: http://albertux.es/?s=capitulo

Versión: 1.0
Autor: Alberto Reynolds Moreno.
alberto.reynolds[@]gmail.com
Revisión: Isabel Rueda Rodríguez
rueda.isabel[@]gmail.com

h1

Capítulo IV: La consola y el árbol de directorios de Linux

3 junio 2008

Seguimos con la guía de administración de Linux, esta vez hablaremos de la consola de Linux y de su árbol de directorios, pero antes de comenzar a profundizar en el árbol de directorios, es buen momento para, a modo de prólogo, hablar muy superficialmente de una de las herramientas que como administradores de sistemas Linux vamos a utilizar a diario, se trata de la consola o terminal.

4.1 La consola, nuestra herramienta de trabajo:

Como ya hemos repetido varias veces, un buen administrador de Linux trabajará, la mayor parte de su tiempo, con una terminal de texto o consola desde donde ejecutará las órdenes y comandos necesarios para una buena administración del equipo.

La consola o terminal, será esa “pantalla negra” que nos aparecerá con un intérprete de comandos cuando no tenemos entorno gráfico o aquella ventana que, aún teniendo entorno gráfico, abriremos para ejecutar comandos.

La consola por defecto presenta una apariencia similar a la siguiente:

[albertux@debian]$

La información que nos ofrece esta terminal y su intérprete de comandos es la siguiente:

  • Nombre del usuario con el que se ha logeado: en este caso “albertux”.

  • Nombre del host que le hemos dado durante la instalación al equipo en el que estamos trabajando: en este caso “debian”.

  • El símbolo $ que indica que estamos trabajando como un usuario final sin privilegios de administración.

Nota: cuando estemos trabajando como administrador, el símbolo $ pasará a ser una #.

De este modo sabremos si somos administrador o no desde una terminal.

Tras el símbolo $ o #, tenemos preparado y paradeando nuestro intérprete de comandos, a través del cual, comenzaremos a pasarle los comandos y órdenes que necesitemos.

A lo largo de los capítulos iremos viendo algunos de los comandos fundamentales para poder administrar nuestra máquina Linux, lógicamente no servirá cualquier entrada en el intérprete:

[albertux@debian]$ hola

bash: hola: command not found

En el ejemplo anterior, la consola nos muestra la salida provocada al ejecutar el comando ‘hola’ sobre nuestro intérprete de comandos bash: ‘command not found’ (veremos más adelante que existen diferentes intérpretes de comandos).

Con esto tenemos una primera idea de lo que puede ser una consola o terminal y para qué vamos a utilizarla.

Nota: durante los sucesivos capítulos de este howto, indicaremos con el color verde la respuesta del intérprete de comandos al ejecutar una orden y con el color blanco el intérprete de comandos y la orden o comando a ejecutar.


4.2 Los principales directorios en Linux:

Si somos usuarios noveles de Linux, quizás esta jerarquía de árbol de directorios nos pueda resultar algo confusa o desordenada, pero nada más lejos de la realidad, nos daremos cuenta a lo largo de este howto que cada elemento está perfectamente ubicado en un directorio concreto.

Fuente:www.tiraecol.net

Como hemos comentado, la estructura de árbol de directorios que ofrece Linux, puede ser, a primera vista, algo confusa; pero presume de ser de las estructuras de directorios más organizadas que se conocen.

Los principales directorios en Linux son:

DIRECTORIO

DESCRIPCIÓN

/

Es el directorio RAÍZ, la base del resto de directorios y por donde debe comenzar cualquier ruta.

/boot

Contiene los archivos del kernel y archivos de configuración del ARRANQUE del sistema.

/bin

Son los archivos EJECUTABLES ESENCIALES por todos los usuarios.

/dev

Directorio donde se encuentran los DISPOSITIVOS.

/etc

Directorio que contiene los archivos de CONFIGURACIÓN.

/etc/rc.d

Archivos de configuración de INICIALIZACIÓN.

/home

Directorio de los USUARIOS.

/lib

LIBRERÍAS esenciales y módulos del kernel.

/mnt

Directorio donde “MONTAR” los distintos dispositivos y/o particiones.

/mnt/cdrom

Directorio donde se monta el CD-ROM.

/mnt/floppy

Directorio donde monta la DISQUETERA.

/mnt/usb

Directorio donde monta un USB.

/proc

Información sobre partes del sistema (PROCESOS)

/root

Directorio del ROOT.

/sbin

Directorio que contiene los EJECUTABLES DEL ROOT.

/tmp

Directorio TEMPORAL

/usr

PROGRAMAS, documentación, fuentes… de los usuarios del sistema.

/var

Archivo de VARIABLES, logs…


Como se puede apreciar, la raíz del árbol es llamada con “/”, en Linux no existe c:, d:, a: …

Otro tema a tener en cuenta, es que si disponemos de distintos discos duros podremos “montar” los distintos directorios en el disco que queramos, es decir, podremos instalar la mayoría de estos directorios en un primer disco duro maestro y, por ejemplo, los datos de usuario (directorio HOME) y el directorio de VAR en un segundo disco duro, como medida de seguridad para no perder estos datos en caso de pérdida del Sistema.

Este reparto será siempre transparente para la jerarquía de directorios. No deberemos indicar en que disco duro está el archivo o directorio al que quiero llegar como sucede en Windows (con C: o D:), sino que bastará con indicar simplemente la ruta; ej.: cd /home/usuario

Como usuario final, únicamente tendremos acceso y permisos, dentro de nuestro directorio personal ubicado en /home.

Si somos administrador (root), seremos responsables de la política de seguridad y mantenimiento del resto de directorios.

Recordatorio: como administrador (root) tendremos acceso y permisos para configurar y manipular cualquier directorio y archivo del sistema.

Un usuario que se valide como usuario final, sólo podrá “jugar” dentro de su directorio /home.

Lo realmente atractivo de Linux es ser ese administrador (root). Este Howto trata de la figura del administrador, así que estamos de suerte 😉


4.3 Tipos de archivos en Linux:

En Linux, existen cuatro tipo diferentes de archivos: archivos normales, especiales, directorios y enlaces.

  • Archivos normales: pueden contener texto, código fuente en C, archivos de orden shell (programas, interpretados), programas binarios ejecutables…

  • Archivos especiales: son archivos con una función especial en el sistema. Suelen hacer referencia a los dispositivos.

  • Los directorios: incluyen en su interior otros archivos y subdirectorios. Los ficheros son identificados por el sistema por su número de inodo, el cuál es el único identificador del fichero para el sistema de ficheros.

Un directorio es una lista de números de inodo con sus correspondientes nombres de fichero. Cada nombre de fichero en un directorio es un enlace a un inodo particular.

  • Los enlaces: existen dos tipos de enlaces, enlaces duros y enlaces simbólicos.

4.3.1 Intérprete de comandos I:

Visto lo anterior, comencemos a utilizar nuestro intérprete de comandos para realizar estas tareas.

Por ejemplo, supongamos que tenemos un fichero ‘hola.txt‘ en un directorio. Usando el comando ‘ls -i‘, desde una terminal, veremos el número de inodo para ese fichero.

[albertux@debian]$ ls -i hola.txt

22192 hola.txt

En este ejemplo, el fichero ‘hola.txt‘ tiene el número de inodo ‘22192′ en el sistema de ficheros.

Los enlaces duros: son un tipo de enlace que nos permite crear una especie de ‘acceso directo’ entre un archivo o directorio original y otro, llamado enlace.

Mediante la orden ‘ln’ ejecutada en nuestro intérprete de comandos desde una consola, podremos crear múltiples enlaces para un fichero.

Supongamos que queremos crear un archivo, al que llamaremos ‘hola2.txt’ que será un enlace (‘acceso directo’) a ‘hola.txt’:

[albertux@debian]$ ln hola.txt hola2.txt


Con ‘ls -i’ veremos que los dos ficheros tienen el mismo inodo:

[albertux@debian]$ ls -i hola.txt hola2.txt

22192 hola.txt

22192 hola2.txt

Ahora, accediendo a uno o a otro accederemos al mismo fichero, ya que es el mismo inodo. Si haces cambios en ‘hola.txt‘, estos cambios también serán efectuados en ‘hola2.txt‘ puesto que, a todos los efectos, son el mismo fichero.

Nota: sólo podemos crear enlaces duros entre ficheros del mismo sistema de ficheros, no sucede lo mismo con los enlaces simbólicos.

Un fichero sólo está definitivamente borrado del sistema cuando no quedan referencias a él. Puedo borrar ‘hola.txt‘ y seguirá existiendo ‘hola2.txt‘.

Los enlaces simbólicos: los enlaces simbólicos son otro tipo de enlace, que es diferente al enlace duro. Un enlace simbólico permite dar a un fichero el nombre de otro, pero no enlaza el fichero con un inodo.

La orden ‘ln -s‘ crea un enlace simbólico a un fichero:

[albertux@debian]$ ln -s adios.txt adios2.txt

Crearemos un enlace simbólico ‘adios2.txt‘ apuntando al fichero ‘adios.txt‘. Si usamos ‘ls -i‘, veremos que los dos ficheros tienen inodos diferentes, en efecto:

[albertux@debian]$ ls -i adios.txt adios2.txt

22195 adios.txt

22341 adios2.txt

Si ahora borramos el original, ‘adios.txt‘, el contenido de ‘adios2.txt‘ se perderá, aunque seguirá existiendo el archivo ‘adios2.txt’ (vacío).

Esta obra está protegida por la Licencia Creative Commons, bajo las condiciones de: Reconocimiento – No comercial – Compartir igual: El material creado por un artista puede ser distribuido, copiado y exhibido por terceros si se muestra en los créditos. No se puede obtener ningún beneficio comercial y las obras derivadas tienen que estar bajo los mismos términos de licencia que el trabajo original.

ReconocimientoReconocimiento (Attribution): El material creado por un artista puede ser distribuido, copiado y exhibido por terceras personas si se muestra en los créditos.

No comercialNo Comercial (Non commercial): El material original y los trabajos derivados pueden ser distribuidos, copiados y exhibidos mientras su uso no sea comercial.

Compartir IgualCompartir Igual (Share alike): El material creado por un artista puede ser modificado y distribuido pero bajo la misma licencia que el material original.

Podéis descargar este capítulo en formato PDF, desde aquí.
Para ver los capítulos anteriores: pincha aquí.
Resto de Posts de estos capítulos: http://albertux.es/?s=capitulo

Versión: 1.0
Autor: Alberto Reynolds Moreno.
alberto.reynolds@gmail.com
Revisión: Isabel Rueda Rodríguez
rueda.isabel@gmail.com