Introducción a Linux
Por Polanko2k



Guía de colores:

Comando

Ejemplo

Archivos y carpetas importantes


Un poco de historia:


Linux se basa en un proyecto llamado GNU creado en 1983 por Richard Stallman, basado en el software libre. Linus Torbals creo el primer Kernel basado en linux totalmente libre. Linux tiene distintas distribuciones, las más importantes son:


  1. Red hat: Pensada para servidores y escritorios

  2. Mandrake: Basada en Red hat y orientada a escritorio

  3. Caldera: Orientada tambien a escritorio

  4. Debian: Distribución pensada para el desarrollo de aplicaciones

  5. Corel: Basada en debian pero mas intuitiva para el usuario

  6. Suse: Orientada al escritorio y servidores

  7. Slackware



Instalación de red hat 8.0:


Hay varias formas de instalar red hat, mediante el CD de instalación, a través de la red con FTP, http…


Para la instalación a través de FTP hay que conseguir los discos de arranque de red y una utilidad para crear este disquete (Rawrite que se puede encontrar en la carpeta dosutils). Con rawrite podremos copiar una imagen a un disquete, pero también necesitamos la imagen, que en este caso es “bootnet.img”. Una vez tenemos estos dos archivos creamos el disquete ejecutando rawrite indicándole la imagen y el destino, reiniciamos el ordenador con este disquete.


Nos saldrá la pantalla de boot de red hat con distintas opciones, tenemos que continuar pulsando ENTER. Después de esto empezara la instalación.


La primera pantalla nos pide que elijamos un idioma para la instalación, a continuación el tipo de teclado y después elegiremos de que manera queremos instalar linux, seleccionaremos FTP.


El siguiente paso es introducir la configuración TCP/IP para poder conectar con el servidor, al comprobar que hay conexión nos pedirá la IP del servidor y en que carpeta se encuentran los archivos de instalación.


Una vez establecida y comprobada la conexión tenemos que configurar el ratón y decirle a que va destinada esta estación de trabajo:


  1. Escritorio personal: Monta el escritorio gráfico con las opciones de oficina

  2. Estación de trabajo: Monta el escritorio con opciones de oficina y además herramientas para programación.

  3. Servidor: Monta el ordenador con servicios de servidor.


A continuación utilizaremos Disk druid para configurar y crear las distintas particiones. En esta aplicación veremos los discos duros locales y sus particiones. Hda hace referencia al primer disco duro fisico (el segundo seria hdb, tercero hdc…) y Hda1 indica que es la primera partición del primer disco duro (la segunda partición sería hda2, la primera partición de un segundo disco duro hdb1…).


Antes de crear ninguna partición para linux hay que crear un espacio para la llamada “swap area” (el archivo de paginación de linux) el tamaño del cual debe ser el doble de la ram del ordenador.


Ahora sí que podemos crear la partición raíz para linux (indicada como /) como punto de montaje y en sistema de archivos ext3.


Una vez creadas las particiones nos preguntara que gestor de arranque queremos usar (normalmente LILO y GRUB en el caso de tener dos o más S.O.) y después le indicaremos donde ubicar el gestor de arranque (en ordenadores con sistemas NT hay que situarlo en la MBR (Master boot record) y en sistemas con win9x en la primera partición.


Llegado un punto tenemos que introducirle la contraseña para root (el súper usuario) hay que poner atención ya que la contraseña el linux es Case sensitive (Distingue mayúsculas de minúsculas, no sería lo mismo CONTRASEÑA que contraseña, todo el sistema linux es case sensitive).


De todas maneras siempre es recomendado no entrar en el sistema con el súper usuario, por eso a continuación nos dará la opción de crear un usuario.


Al final de la instalación debemos decirle que paquetes instalar y después comprobara las dependencias de los paquetes (un paquete puede necesitar de otro que no tenemos seleccionado para instalar).


Ahora empezara la instalación de linux y los paquetes seleccionados, durante el proceso de instalación tenemos las siguientes opciones:


  1. Alt F2: Accederemos a una consola de administración con comandos básicos

  2. Alt F3: Veremos un resumen del proceso de instalación

  3. Alt F4: Muestra información sobre el sistema de archivos





Nociones básicas:


Linux parte del directorio raiz / (en linux no hay c:\), después vienen una serie de carpetas predeterminadas:


  1. /Root y /Home: En home cada usuario creado tendra una carpeta para él Root es lo mismo pero para el súper usuario

  2. /mnt: En este directorio se encuentran enlaces a unidades y distpositivos externos de almacenamiento.

  3. /var: Contiene archivos para los programas

  4. /dev: Contiene todos los dispositivos del ordenador.

  5. /etc: Es donde se guardan los archivos de configuración de muchos programas.

  6. /etc/rcX.d (donde X es el nivel de arranque (ver “niveles de arranque”)) Aquí se indica que servicios hay que iniciar en cada nivel.

  7. /etc/init.d: Muestra todos los servicios.


Los niveles de arranque (runlevels): indican en que sistema funcionara el ordenador, se define con el comando init y un numero, init 0 seria apagar el ordenador, init 5 modo grafico, init 3 modo texto… hay 6 modos.


Para definir como arrancara el ordenador editaremos el archivo inittab con el editor vi, alli podremos definir si se arrancara en modo 3, 5…


Los alias: Sirven para simplificar comandos, para crear un nuevo alias escribiremos:


Alias comando simplificado=’comando entero’


Ejemplo:


Alias l=’ls -al’


En este caso al escribir l en la línea de comandos ejecutaría el comando ls -al (después de definir el alias). El problema de definirlo de esta manera es que el alias se guarda solo para esa sesión de shell (al reiniciar la shell se perdera el alias). Para que el alias se guarde para cualquier shell del usuario hay que editar el fichero .bashrc (Los archivos con un . al principio indican que son ocultos) que se encuentra en el home del usuario.


Comandos: Los comandos se ejecutan en el modo texto o en una shell.


startx (los comandos son case sensitive) sirve para iniciar las X (entorno gráfico) desde el modo texto.


shutdown este comando sirve para apagar o reiniciar el ordenador -r para reiniciar -h para apagar, después de la variable pondremos el numero de minutos que tardará en apagarse (p.e. shutdown -r 3 reiniciaria el ordenador en 3 minutos)


init 0: Sirve también para apagar el ordenador, en este caso se puede cambiar el 0 para modificar el nivel (ver niveles de arranque).


clear: Limpia la pantalla en modo texto (elimina todo el texto mostrado).


cd: sirve para entrar en un directorio, con cd .. (Importante el espacio entre cd y los .. no es como en ms-dos) iríamos al directorio anterior hasta llegar a /, escribiendo cd a secas nos llevaría a la carpeta home del usuario con el que estuviéramos logueados.


ls: Visualiza el contenido de una carpeta (es como el dir en ms-dos) tiene distintas variables, pero las mas usadas son -f (ls -f) que mostraría además del contenido de la carpeta los archivos ocultos (los que llevan un punto antes del nombre) y -al (ls -al) que muestra mucha más información, con ls -t organiza la salida de ls por fecha de creación.


cat archivo: Sirve para visualizar (no para editar) el contenido de un archivo.


./servicio acción (desde /etc/init.d): Sirve para iniciar un servicio, las acciones son

  1. Stop para parar el servicio

  2. Stara para iniciar el servicio

  3. Restart para reiniciar el servicio


ps: Muestra los procesos en ejecución.


env: Muestra las variables definidas en ese momento, para ver una variable en concreto se utiliza el comando echo $variable, por ejemplo, la variable $PATH indica donde buscar los comandos (esto permite que no tengamos que escribir toda la ruta, solo el comando) si un comando no se encuentra en ninguna ruta definida dentro de $PATH tendremos que indicarle la ruta entera.


who: nos dice con que usuario estamos logueados.


whoami: Información sobre el usuario con el que estamos logueados


who am i: Más información sobre el usuario con el que estamos logueados.


find directorio -name ‘x’ -print:: Busca x en ‘directorio’ y sus subdirectorios.


Grep x y: Grez busca ‘x’ dentro del archivo ‘y’, tiene distintas opciones:


  1. -c Te dice cuantas veces aparece lo que buscamos (en este caso ‘x’) en el archivo.

  2. -h Te dice en que línea se encuentra lo que buscamos.

  3. -v Muestra las palabras que no contienen lo que buscamos.

  4. -w Busca solo la palabra que buscamos (sin esta opción busca palabras que contengan lo que buscamos).


locate x: nos buscara ‘x’ en cualquier sitio del ordenador, pero la primera vez que ejecutamos este comando tenemos que crear la base de dato, para esto usaremos el modificador -u.


whereis x: Buscara el comando x y su manual y nos dirá donde está.


touch: Crea un archivo vacío.


file: Da información sobre un archivo.


wc x: Da información acerca de las líneas y caracteres de ‘x’. Da el numero de líneas, el numero de palabras y el numero de letras.


tail --lines=x: Muestra las ultimas x líneas de un archivo (si no se pone el modificador --lines=x mostrará las 10 ultimas).


head --lines=x: Igual que tail solo que muestra las del principio.


mkdir x: Crea el directorio ‘x’.


rmdir x: Borra el directorio ‘x’.


rm x: Borra el archivo ‘x’.


cp x y: Copia el archivo ‘x’ al destino ‘y’.


mv x y: Mueve el archivo ‘x’ al destino ‘y’.


df: muestra información sobre los volúmenes, el modificador -h lo hace mas lógico.


mount: muestra los dispositivos montados (en linux hay que montar un dispositivo antes de poder acceder a él). También sirve para montar los dispositivos, indicándole que dispositivo montar y donde montarlo.


Por ejemplo:


Para montar la disquetera usaríamos el comando:


mount /dev/fd0 /mnt/floppy


Esta ultima carpeta debe existir y es donde iremos para ver el contenido del dispositivo.


Antes de sacar el disquete (o cualquier dispositivo) habrá que desmontarlo, para eso utilizaremos el comando umount y el nombre del dispositivo o el punto de montaje, en el ejemplo seria:

umount /dev/fd0


O


umount /mnt/floppy


Shell: La shell es el intérprete de comandos, hay distintas, pero la que usa linux por defecto es BASH, cada shell tiene sus propios comandos. Si queremos iniciar otra shell de bash solo tendremos que escribir “bash”, y para salir pulsaremos control + d. Algunos archivos importantes de bash (todos se encuentran en el home del usuario):


  1. .bash_history: muestra todos los comandos escritos desde que se instalo linux, este archivo permite que al pulsar la tecla arriba o abajo muestre los comandos escritos.

  2. .bash_profile: Aquí están las variables que debe ejecutar al iniciar la shell

  3. .bash_logout: Muestra los comandos a ejecutar cuando se cierra la sessión


El punto antes del archivo hay que escribirlo, recuerda que indica que el archivo es oculto.


Pipes: se llama pipe al símbolo | y sirve para que la salida de un comando sea la entrada del siguiente (si este admite entradas).


Ejemplo:


“Less” es un programa que permite moverse por la pantalla en modo texto (subir hacia arriba, derecha, izquierda, abajo…), es muy útil utilizarlo con las salidas de ls porque a menudo no llegamos a verlas bien. Para poder hacer esto utilizaremos las pipes de la siguiente manera:


ls -al | less


Esto hará que lo que mostraría el comando ls vaya al programa less, entonces less lo muestra pero ya con las opciones de subir, bajar… que permite hacer less.


Las pipes funcionan con cualquier comando, no solo con ls y less


VIM, el editor: Es un programa, que se utiliza para editar textos en el modo (para iniciarlo solo tenemos que utilizar el comando vi archivo) texto, una vez dentro, si nos situamos en un sitio del texto y pulsamos “a” será para agregar algo, y si pulsamos “cw” será para cambiar algo, una vez modificado el texto saldremos del modo edición pulsando “Esc”. Una vez fuera del modo edición y para salir del programa pulsaremos “:” (recuerda que tienes que estar fuera del modo edición) y a continuación:

  1. “q” para salir si no hemos modificado nada.

  2. “q!” para salir sin grabar.

  3. “wq” para salir y grabar.


Vim además tiene más teclas de opciones:


  1. R (mayúscula) reemplazará todo lo que escribamos

  2. o para crear una línea entre dos líneas

  3. x para borrar texto

  4. xdd para borrar x numero de líneas (las líneas borradas van al buffer)

  5. xy se copian al buffer x numero de lineas

  6. p se pega lo que hay en el buffer

  7. . repite la ultima acción realizada

  8. w (después de pulsar los :) para grabar

  9. :/y x nos buscara “x” dentro del archivo

  10. u o U (mayúscula) deshace lo que hayamos borrado


Todos estos comandos funcionan solo fuera del modo insertar. Para más ayuda escribiremos el comando vimtutor en la consola.


Modificadores de búsqueda: Hay distintos modificadores para buscar un archivo, lo veremos analizando este ejemplo:


ls ??[b-n]*.conf


Con esto buscaría archivos que primero tuvieran dos letras (?? indica dos letras ??? tres…), que después de estas dos letras viniera una letra de la b a la n (también puede ser una sola letra por ejemplo [n]), a continuación cualquier cosa (* es un comodín que significa “cualquier cosa”) y que acabara con .conf.


Por lo tanto un ejemplo de palabra que encontraría podría ser bind9.conf porque hay dos letras al principio (?? es el bi) a continuación una letra entre la b y la n, después de esta cualquier cosa (d9, pero podría ser cualquier cosa)

y acaba en .conf


Direccionando la salida/entrada de un comando: Se puede direccional la salida (la salida es lo que se muestra en pantalla, en el caso de ls seria el contenido de un directorio) o la entrada (la entrada por defecto es lo escrito en el teclado) de un comando hacia un archivo, esto se hace de la siguiente manera:


comando > Archivo volcaría la salida del comando al archivo “archivo” si volviéramos a ejecutar este comando, borraría el contenido de “archivo”.


comando >> Archivo haría lo mismo que el comando anterior pero en este caso añadiría la salida al archivo, sin borrar los datos anteriores almacenados en “archivo” (“Archivo” es un nombre de ejemplo, se puede usar cualquier nombre, el archivo se guarda en la carpeta donde estemos)


comando < Entrada haría que la entrada de “comando” fuera lo que contiene “entrada” (puede ser un archivo)


comando 2> fichero manda los errores que puede dar el comando a un archivo (en este caso “fichero”) y no muestra los errores que puede dar en pantalla.


Si escribimos un comando y una letra, y a continuación pulsamos tabulador, se escribirá el nombre de archivo o carpeta que contenga la letra o letras en el principio del archivo, o mostrará una lista con las distintas posibilidades.


Ejemplo:


ls a (pulsamos tabulador) aparecerá ls archivo


Esto no solo funciona con el comando ls, funciona con todos.





Creando una partición: Para crear una partición primero iniciamos el fdisk con el comando fdisk x donde x es el disco que queremos modificar (/dev/hda por ejemplo) pulsamos n para elegir crear una nueva partición y a continuación elegiremos si crear una partición, una unidad extendida, o una unidad lógica (en el caso de tener una extendida) después escribes los valores que quieras (si no especificas ningunos pondrá unos por defecto), pulsamos w para salir guardando los cambios y reiniciamos el ordenador.


Una vez reiniciado habrá que formatear la nueva partición con el comando mkfs.ext3 /dev/hda3 (hda3 es un ejemplo) y para verificar que la partición se ha creado bien utilizaremos el comando e2fsck -fy /dev/hda3 ahora nos queda montar el dispositivo, pero hay el problema de que no se montara solo cada vez que iniciemos el ordenador, para ello editaremos el archivo fstab que indica que dispositivos montar al iniciar sesión. Primero montaremos la nueva partición (ver comando mount) y después editaremos el archivo fstab añadiendo nuestro nuevo dispositivo, en sistema de archivos ponemos ext3, opciones defaults y a continuación 1 1.



Compresores: En linux hay distintos tipos de compresores aquí va una tabla con los más usados:


Extensión

Compresor

Descompresor

.bz2

Bzip2

Bunzip2

.gz

Gzip

Gunzip

.zip

Zip

Unzip

.tar

Tar

Tar

.tbz

Tar/bzip2

Tar

.tgz

Tar/gzip

Tar

.tar.gz

Tar

Tar

Tar en principio es solo una herramienta para crear un archivo con archivos agrupados dentro (sin compresión) pero se puede usar combinado con otros compresores para que tenga compresión. Algunos modificadores de Tar son:


  1. -c crea el archivo

  2. -t visualiza el contenido de un archivo

  3. -f define el nombre del archivo

  4. -v visualiza el proceso de compresión

  5. -x extraer

  6. -z comprime con gzip

  7. -j comprime con bzip2


También hay paquetes RPM, que se utilizan mayormente para distribuir aplicaciones, para instalar un paquete rpm utilizamos el comando ‘rpm -Uvf paquete’. Algunos de los modificadores de RPM son:


  1. -U descomprime el paquete

  2. -v visualiza el proceso

  3. -f especifica el archivo

  4. -q mas el nombre de un paquete te indica si se ha instalado

  5. -qa muestra los paquetes instalados



Gestor de usuarios: Con el gestor de usuarios en el modo grafico controlaremos los usuarios que podrán iniciar sessión en el ordenador. Por defecto al crear un usuario se crea también un grupo privado con el mismo nombre de usuario. Para administrar los usuarios desde la linea de comandos usaremos los siguientes comandos:


  1. useradd: para añidr un usuario.

  2. usermod: para modificar un usuario.

  3. userdel: para borrar un usuario.


Y para administrar los grupos:


  1. groupadd: para añidr un grupo.

  2. groupmod: para modificar un grupo.

  3. groupdel: para borrar un grupo.


Cuando se crea un usuario desde la linea de comandos, este no tiene asignado ningún password, por lo que no podrá iniciar sessión hasta que le configuremos un password con el comando passwd usuario, si no ponemos el usuario cambiará la contraseña del usuario con el que tengamos iniciada la sessión.

Los archivos donde se guardan todos los datos de usuarios y grupos són:


  1. /etc/passwd: Donde se guardan los datos de los usuarios.

  2. /etc/shadow: Donde se guardan las contraseñas encriptadas, solo puede leerlo root.

  3. /etc/group: Donde se guardan la configuración de los grupos y sus miembros.

  4. /etc/skel: Donde se guarda la estructura del home de los nuevos usuarios.



Permisos sobre archivos en Linux: En una salida de ls -al veremos al principio de cada archivo una linea como esta:


-rwxrw-r-- 1 owner group


El primer espacio significa:


- : Archivos

d: Directorios

l : Vinculo virtual

c: Dispositivo


Lo siguente son los permisos sobre los archivos, que se leen de tres en tres. En el caso del ejemplo se cogeria de tres en tres y sacariamos rwx, rw-, y r-- (el guión en los permisos indica que no se tiene ese permiso).


El primer trio indica los permisos para el propietario del archivo (quien lo creó), que se especifica despues de el 1, en este caso seria owner.


El segundo trio hace referencia a los permisos para el grupo al que pertenece el owner, que en el ejemplo sería group.


Y el tercero indica los permisos para los demas usuarios.


Cada letra significa:


r : Read (permiso de lectrua).

w: Write (permiso de escritura).

x : Execute (permiso de ejecución).


Entonces ya podemos ver que el propietario del archivo, Owner en este caso, tendra derecho a leer el archivo (por la r), escribir el archivo (por la w) y ejecutar el archivo (por la x). El grupo del propietario solo podra leer y escribir, y todos los demas usuarios solo podran leer el archivo.


Para cambiar los permisos de un archivos usaremos el comando chmod. Este comando se usa de la siguiente manera:




chmod [a quien se le asignan los nuevos permisos][como se cambian][permisos a añadir o quitar] [archivo a modificar]


[a quien se le asignan los nuevos permisos]:


a = todos

u = propietario

g = grupo del propietario

o = los demas usuarios


[como se cambian]


+ = se añaden los permisos a los permisos ya existentes

- = se quitan los permisos

= = borra los permisos asignados y pone los especificados


[permisos a añadir o modificar]


r = Leer

w = Escribir

x = Ejecutar


Por ejemplo:


chmod a+x file: Añadiria el permiso de ejecucion al propietario, al grupo y a los demas usuarios, por lo que si antes la linea del arhivo era asi:


-rw-rw-r-- owner group


Pasara a ser:


-rwxrwxr-x owner group


Tambien se puede hacer en modo binario, pasando a decimal los permisos. En el caso de que haya permiso es 1, y si no es 0, se pasa a decimal y tendremos el permiso, por ejemplo:


-rwx--w-r--


El primer trio son 111 porque en los tres hay permiso, en el segundo trio 010, porque en el primero no hay permiso, en el segundo si, y en el tercero no. y en el tercer trio seria 100, por la misma razón, por lo que pasado a decimal tendriamos 7 para el primer trio, 2 para el segundo y 4 para el tercero.


Y todo esto para que sirve, pues porque tambien se pueden asignar los permisos de esta manera. Si tubieramos un archivo con permisos 664 (-rw-rw-r--) y quisieramos pasarlos a 755 (-rwx-r-x-r-x) podriamos utilizar chmod, de esta forma:


chmod 755 file


De esta forma una vez dominado todo el tema de binario y conversión es mucho más rapido, de todas formas os pongo una tabla:


0 = Sin permisos

1 = Solo ejecutar

2 = Solo escribir

3 = Escribir y ejecutar

4 = Solo leer

5 = Leer y ejecutar

6 = Leer y escribir

7 = Leer, escribir, y ejecutar


De todos modos, los permisos son distintos según se asignen a archivos o a directorios. Para archivo ya emos visto que era cada permiso, pero para directorio es:


R = Permiso para listar el contenido de la carpeta

W = Permiso para crear o borrar archivos a la carpeta

X = Permiso para acceder a la carpeta.


El comando umask muestra el valor de los permisos por defecto que asigna a un nuevo archivo o directorio. El valor de umask es lo que se resta a los permisos por defecto (777 para directorio, 666 para archivos)para cada usuario.


Por ejemplo:

En root el comando umask nos devuelve 0022, solo cogemos los tres ultimos numeros, asi tenemos que umask en root es 022, como por defecto al crear un archivo pone permisos 666 - umask el root al crear un archivo tendra 666 - 022 = 644. Root, cuando cree un archivo, este tendra como permisos 644 (-rw-r--r--).


Redes: Para ver y cambiar las propiedades de red se utiliza el comando ifconfig, con ifconfing [adaptador a modificar] [nuevas propiedades (IP, mascara...)] podremos modificar las pripiedades de dicho adaptador. Despues para comprovar la conectividad usaremos el comando ping. Para configurar una puerta de enlace no usaremos ifconfig, sino el comando route, con el comando a secas veremos las rutas ya definidas, y para añadir una puerta de enlace nueva: route add default gw [IP de la puerta de enlace]


Archivos importantes de la configuración de red:


- /etc/sysconfig/networking esta la configuración general de la red

- /etc/sysconfig/network-scripts/ifcfg-adaptador esta la configuración especifica de cada adaptador.


Configurar DNS: En el archivo /etc/host.conf determina cual es el sistema para resolver nombres. En hosts.allow y hosts.deny (los dos dentro de /etc) dice que ips pueden (allow) y cuales no (deny) pueden entrar en tu equipo. Para añadir direcciones IP para la resolucion de nombres hay que añadirlos en el archivo resolv.conf (tambien dentro de /etc).