Apuntes de Linux básico - cloudfront.net

Archivos de inicialización (Red Hat). /home. Generalmente, directorios de los usuarios. /home/ftp Contenido del servidor FTP. /home/httpd Contenido del ...
67KB Größe 9 Downloads 89 vistas
Apuntes de Linux básico

Apuntes de Linux básico Autor: Alejandro Cuesta Rodríguez (Tienes total libertad para hacer lo que quieras con este documento)

Apuntes de Linux básico

Organización de directorios en Linux Directorio

Descripción

/

Raíz (root), forma la base del sistema de archivos.

/boot

Archivos del kernel (compilados).

/bin

Archivos ejecutables esenciales para todos los usuarios.

/dev

Archivos de dispositivos.

/etc

Archivos de configuración.

/etc/rc.d

Archivos de inicialización (Red Hat).

/home

Generalmente, directorios de los usuarios.

/home/ftp

Contenido del servidor FTP.

/home/httpd Contenido del servidor WWW. /lib

Librerías esenciales y módulos del kernel.

/mnt

Directorios donde ``montar'' diversos dispositivos temporalmente.

/mnt/cdrom Directorio donde se ``monta'' el CD-ROM. /mnt/floppy Directorio donde se ``monta'' el disquete. /proc

Información sobre partes del sistema.

/root

Directorio del usuario principal del sistema.

/sbin

Archivos ejecutables para tareas de administración.

/tmp

Temporal.

/usr

Programas, documentación, fuentes,...compartidos por todo el sistema

/var

Archivos variables del sistema, bitácoras, temporales,...

La tabla 3.10

muestra los principales subdirectorios del directorio usr.

Directorio

Descripción

/usr/X11R6

Paquete XFree86 (X-Windows) Release 6.

/usr/bin

Archivos ejecutables para usuarios.

/usr/dict

Listados de palabras (diccionarios).

/usr/doc

Documentación.

/usr/doc/FAQ

F.A.Q. (o P.U.F.).

/usr/doc/HOWTO HOWTO's. /usr/etc

Archivos de configuración del sistema.

/usr/games

Juegos.

Apuntes de Linux básico /usr/include

Archivos de encabezado.

/usr/info

Sistema de información GNU info.

/usr/lib

Librerías

/usr/local

Jerarquía de archivos locales.

/usr/man

Manuales.

/usr/sbin

Archivos ejecutables de administración no vitales.

/usr/share

Datos independientes de la arquitectura.

/usr/src

Código fuente.

/usr/src/linux

Código fuente del kernel de Linux.

La tabla 3.11

muestra los principales subdirectorios del directorio var.

Directorio

Descripción

/var/catman

Manuales formateados localmente.

/var/lib

Información del estado de aplicaciones.

/var/local

Variables del aplicaciones en /usr/local.

/var/lock

Archivos de cerrojo.

/var/log

Bitácoras del sistema.

/var/named

Archivos del DNS.

/var/nis

Base de datos para NIS (Network Inf. Service).

/var/preserve

Archivos de respaldo después de una caída para vi o ex.

/var/run

Archivos relevantes a programas corriendo.

/var/spool

Colas de trabajos para realizar mas tarde.

/var/spool/at

Archivos creados por comando at.

/var/spool/cron

Archivos creados por comando crontab.

/var/spool/lpd

Archivos de impresora.

/var/spool/mail

Archivos de correo de cada usuario.

/var/spool/mqueue Archivos de correo de salida. /var/spool/news

Archivos de noticias de salida.

/var/spool/smail

Archivos de correo de smail.

/var/tmp

Temporal.

Apuntes de Linux básico

Formato de los comandos y ayuda Los comandos en linux son muchísimos y cada uno tiene un formato especial: comando [opciones] [argumentos] Las opciones y argumentos varían de un comando a otro. No siempre tienen argumentos, aunque casi siempre tienen muchísimas opciones. Memorizar todo es muy difícil. Para saber como utilizar un comando se usa la ayuda. man comando

Directorios -

cd: cambia de directorio. Si no se especifica un directorio, va al directorio del usuario (home). mkdir: crea un directorio rmdir: borra un directorio. pwd: ver el directorio actual

El carácter ~ (gusanillo) simboliza el directorio del usuario (home).

Listar archivos $ ls -l -rw-r--r--rw-r--r--rw-r--r--rw-r--r-drwxr-xr-x -rw-r--r--rw-r--r-drwxr-xr-x drwxr-xr-x

1 1 1 1 2 1 1 2 3

skina skina skina skina skina skina skina skina skina

users users users users users users users users users

17680 2573 1562 461 1024 949 550 3072 1024

Nov Nov Nov Oct Nov Nov Nov Nov Nov

29 30 29 24 23 30 30 30 30

16:52 19:52 13:47 21:43 01:02 19:26 19:48 22:55 00:09

1º Grupo = Permisos 2º Grupo = Número de archivos que contiene 3º Grupo = Usuario propietario del archivo o directorio 4º Grupo = Grupo propietario del archivo o directorio 5º Grupo = Tama ño del archivo o directorio 6º Grupo = Fecha y hora de creación del archivo o directorio 7º Grupo = Nombre del archivo o directorio

GNU-GPL.tex Makefile autorizacion.txt biblio.tex bin/ creditos.tex curso_linux.tex images/ install/

Apuntes de Linux básico

Ver archivos -

cat: Muestra o concatena varios ficheros.y los muestra sin posibilidad de parar. more : Ver archivo sin retroceso less: Ver archivo con retroceso mediante las teclas cursoras. head: Ver inicio del archivo. tail: Ver final del archivo.

En -

general, funciona lo siguiente: La tecla BARRA ESPACIADORA pasa página. La tecla RETURN pasa una línea La tecla q sale del programa. La tecla / sirve para buscar cadenas, así: /cadena

-

Operaciones con archivos y directorios -

cp: copia archivos o directorios. mv: renombra o mueve de sitio un archivo o directorio. rm: borra archivos o directorios vacíos. du: muestra el espacio usado (disk usage) de un directorio o archivo. df: muestra el espacio libre (disk free) de un directorio o archivo.

Redireccionamientos de E/S y error -

Salida: comando > archivo Salida sin borrar: comando >> archivo Entrada: comando < archivo Errores: comando >& archivo Errores sin borrar: comando >>& archivo Tubería: comando1 | comando2 es lo mismo que: comando1 > fichero.tmp comando2 < fichero.tmp

Búsquedas -

find: Busca archivos. Típico uso:

-

grep: Busca cadenas. Típico uso:

find / - name “cadena” con tuberías: ls –l | grep kde normal: grep alex /etc/passwd -

updatedb y locate: A veces, estos comandos no vienen de serie, pero son muy útiles porque buscan instantáneamente. El comando updatedb crea una base de datos de todos los ficheros y locate busca sobre esta base de datos. Obviamente, hay que ejecutar updatedb regularmente para hacer búsquedas actualizadas.

Apuntes de Linux básico

Permisos Tres tipos de permisos: r (read) = Lectura w (write) = Escritura x (execution) = Ejecución Ejemplo : drwxr-xr-x Se separa en 4 partes: d

rwx

r-x

r-x

1ª Parte = Tipo de archivo: b = archivo especial de bloques (suelen estar en /dev/) c = archivo especial de caracteres (suelen estar en /dev/) d = directorio l = enlace simbólico s = enlace a socket p = FIFO - = archivo normal 2ª Parte = Permisos del usuario propietario (user) 3ª Parte = Permisos del grupo propietario (group) 4ª Parte = Permisos del resto del mundo (other)

Cambiar permisos Los permisos se cambian con chmod. Para cambiar los permisos hay que ser propietario del archivo o superusuario. Hay dos formatos: uno con números octales y otro con letras. Con números octales: Cada permiso tiene un número asociado de esta forma: R = 4, W= 2, X = 1 Para obtener el número octal de cada terna, se han de sumar los números de los permisos activos. De esta forma: -

Para Para Para

rwx à 4 + 2 + 1 = 7 r-x à 4 + 0 +1 = 5 -w- à 0 + 2 + 0 = 2

Así para establecer los permisos: rwx r-x –w-, se haría: chmod 752 fichero

Apuntes de Linux básico Con letras: -

La u simboliza los permisos del usuario (user). La g simboliza los permisos del grupo (group). La o simboliza los permisos del resto del mundo (other). El = asocia patrones enteros de permisos. El + da permisos, y el – los quita.

Como es difícil de explicar, la mejor forma de ver esto es con ejemplos: chmod u=rwx, g=rx, o=r à fichero es el caso de antes chmod u=rwx, g=u-w, o=g-x à equivale al anterior.

Procesos: Parada, foreground, y background -

ps muestra los procesos. Es útil ps –xa que muestra todos los procesos del sistema. top muestra las tareas manejadas por el kernel de linux en cada momento. kill -9 id_proceso: mata un proceso. CTRL+Z detiene un proceso. bg pone un proceso detenido en background (ejecución en segundo plano, sin atención del usuario) fg pone un proceso que se está ejecutando en background a ejecutarse en primer plano, con atención del usuario. & pone un proceso a ejecutarse en background (segundo plano) directamente, de esta forma: proceso & por ejemplo: updatedb &

Enlaces Dos tipos: duros y simbólicos. A nivel de usuario los enlaces duros apenas se usan. Sirve para asociar diferentes nombres de archivo a un mismo inodo directamente. Archivo1 à INODO ß Archivo2 En cambio, los enlaces simbólicos son muy útiles para asociar diferentes nombres de archivo indirectamente: Archivo2 à Archivo1 à INODO Los enlaces duros se hacen sin poner ningún parámetro, así: ln archivo1 archivo2 ¡CUIDADO! Por defecto, crean enlaces duros!

Apuntes de Linux básico Los enlaces simbólicos se hacen añadiendo la opción –s: ln –s archivo1 archivo2

Shells El shell es el programa que interpreta los comandos del usuario en la consola. Hay varios tipos de shell, los más usados son: Bourne-Again SH (/bin/bash) y el C SHell (/bin/sh). El bash se suele usar para interactuar con el usuario. El sh se suele usar para interpretar programas en lenguaje shellscript porque se parece al lenguaje C. Cada shell define un entorno con variables propias y definidas por el usuario. Las variables definidas típicamente en el shell Bash, suelen ser: Variable

Descripción

DISPLAY

Donde aparecen la salidas de X-Windows.

HOME

Directorio personal.

HOSTNAME Nombre de la máquina. MAIL

Archivo de correo.

PATH

Lista de directorios donde buscar los programas.

PS1

Prompt.

SHELL

Intérprete de comandos por defecto.

TERM

Tipo de terminal.

USER

Nombre del usuario.

Las variables de entorno se definen, en BASH, con el comando export: export VARIABLE = valor Existen ficheros que personalizan y definen estas variables. -

/etc/profile ~/.bash_profile ~/.bash_login ~/.profile ~/.bashrc

Apuntes de Linux básico

Teclas rápidas -

En la consola, mediante el shell bash (por defecto), la tecla TAB ayuda a escribir más rápido los comandos. ALT+ número cambia de consola. ALT+7 es la consola gráfica, es decir, el escritorio. En el escritorio ALT+F2 abre una ventana para ejecutar comandos. CTRL+C suele parar los procesos.

Particiones y formateo Un dispositivo de bloques, como el disco duro, ha de particionarse y formatearse. Las particiones se hacen con el programa fdisk: fdisk dispositivo por ejemplo, el disco duro sería:

fdisk /dev/hda

Una vez dentro se puede manipular y crear toda clase de particiones. Con la tecla m, se obtiene ayuda: -

La tecla p muestra las particiones actuales La tecla n crea nuevas particiones La tecla d borra partición La tecla t cambia el tipo de partición. Por defecto, Linux. La tecla w graba las particiones en el dispositivo La tecla q sale del programa.

El formateo en linux se hace con: mkfs –t tipo dispositivo donde tipo es el tipo de sistema de ficheros: ext2, ext3, vfat, msdos, etc.

Montaje del sistema archivos Ya se ha visto que Linux accede a los dispositivos mediante archivos (directorios de /dev), y, por este motivo, en Linux no hay el concepto de unidades, ya que todo está bajo el directorio principal . En Linux no se accede a la primera disquetera mediante la orden A: como en DOS sino que hay que ``montarla". De este modo, tenemos dos conceptos nuevos:

Apuntes de Linux básico ``montar'' Decirle a Linux que se va a utilizar un determinado dispositivo con un determinado sistema de archivos y estará en un directorio específicado. En la tabla 3.12

se muestran los sistemas de archivos más comunes en Linux.

Tipo

Descripción

ext2

Sistema de archivos de Linux.

msdos

Sistema de archivos de DOS.

vfat

Sistema de archivos de Windows 9X (nombres largos).

iso9660 Sistema de archivos de CD-ROM. Nfs

Sistema de archivos compartido por red (``exportado'').

``desmontar'' Decirle a Linux que se ha dejado de utilizar un determinado dispositivo. Para ``montar'' un determinado sistema de archivos de un dispositivo, se utiliza el comando mount. La sintaxis es la siguiente: # mount -t sistema_archivos dispositivo directorio [-o opciones]

donde: sistema_archivos puede ser cualquiera de los que aparece en la tabla 3.12 ; dispositivo puede ser cualquier dispositivo del directorio /dev o, en el caso de nfs, un directorio de otro ordenador; directorio es el directorio donde estará el contenido del dispositivo y opciones pueden ser cualquiera de la tabla 3.13 , en el caso de no 3.5 poner ninguna opción, mount utilizará las opciones por defecto . Una vez ``montado'' el dispositivo, si no se va a volver utilizar se puede ``desmontarlo'' con el comando umount con la siguiente sintaxis: # umount directorio

Siempre , después de utilizar un dispositivo hay que ``desmontarlo'', para que se almacenen correctamente los datos en dicho dispositivo. Un ejemplo de ello, es el hecho de que, un lector de CD-ROM, que haya sido ``montado'', no se abrirá hasta que no se ``desmonte''. Opción Descripción rw

Lectura/escritura.

ro

Sólo lectura.

exec

Se permite ejecución.

user

Los usuarios pueden ``montar''/``desmontar''.

suid

Tiene efecto los identificadores de propietario y del grupo.

auto

Se puede montar automáticamente.

Apuntes de Linux básico async

Modo asíncrono.

sync

Modo síncrono.

dev

Supone que es un dispositivo de caracteres o bloques.

Opciones del comando mount tbl_opc_mount Se muestran unos cuantos ejemplos: 1. Disquete de DOS: mount -t msdos /dev/fd0 /mnt/floppy -o rw,noexec umount /mnt/floppy

2. Disquete de Windows 9X: mount -t vfat /dev/fd0 /mnt/floppy -o user,rw umount /mnt/floppy

3. CD-ROM: mount -t iso9660 /dev/cdrom /mnt/cdrom -o ro umount /mnt/cdrom

4. Directorio exportado de host2: mount -t nfs host2:/tmp /mnt/host2 umount /mnt/host2

Para averiguar el dispositivo, se utiliza hwinfo.

Automatizando el montaje. El archive /etc/fstab

En ocasiones, cuando se tienen varios dispositivos que se suelen ``montar'', se puede ahorrar tener que escribir continuamente la oportuna orden mount, simplemente incluyendo una línea en el archivo /etc/fstab. El archivo /etc/fstab contiene líneas donde se indica qué dispositivo debe ``montar'', el lugar donde ``montarlo'', así como el sistema de archivos y las opciones (en este archivo, se pueden poner dos opciones más: auto y noauto, que indican si se debe ``montar'' automáticamente al arrancar el sistema o no, respectivamente). Un ejemplo de /etc/fstab puede ser: # Dispositivo

Directorio

FS

Opciones

/dev/hda1 /dev/hda2 /dev/hda3 /dev/hda4

/ /home /tmp none

ext2 ext2 ext2 swap

defaults 1 1 defaults 1 2 defaults,noexec defaults

none

/proc

proc

defaults

/dev/fd0 /dev/fd0 /dev/cdrom

/mnt/floppy /mnt/msdos /mnt/cdrom

ext2 vfat iso9660

noauto,user,noexec,rw noauto,user,noexec,rw noauto,user,noexec,ro

Apuntes de Linux básico /dev/sda4

/mnt/iomegazip vfat

noauto,user,noexec,rw

host2:/tmp

/mnt/host2

defaults

nfs

Con un archivo /etc/fstab como el anterior, cualquier usuario podría hacer: $ mount /mnt/msdos $ umount /mnt/msdos

para ``montar'' y ``desmontar'' un disquete, respectivamente. Sin embargo, sólo el administrador podría ``montar'' y ``desmontar'' el directorio /mnt/host2.

Usuarios y Grupos Usuarios Existen 3 tipos de usuarios: 1. Normales: Tienen contraseña, directorio de trabajo (home), y entran en sesión. 2. Sistema : Poseen y controlan demonios del sistema (servicios). 3. Superusuario (root): Puede hacer cualquier cosa. Hay que evitar entrar con esta cuenta. Usarla no es seguro. Por ello se usa su o sudo.

Administración de usuarios -

Fichero donde se almacenan los usuarios: /etc/passwd Formato: nombre_usuario:password (o x):uid:gid:comentario:home:shell

-

o Nombre usuario: ejemplo: javier o La password puede estar encriptada directamente o con una ‘x’ si utiliza ficheros shadow (lo normal hoy día). o UID: número que identifica al usuario. Linux internamente usa estos números para identificar usuarios. o GID: número que identifica al grupo principal del usuario. Linux internamente usa estos números para identificar grupos. Este es el grupo que se asocia a los ficheros que crea. o Comentario: opcional. Sólo informativo o Home: Directorio del usuario o Shell: Intérprete de comandos por defecto del usuario que se arranca al entrar en el sistema. Fichero donde se almacenan los grupos: /etc/group Formato: nombre_grupo:password:GID:lista_usuarios

o Nombre grupo: ejemplo: usuarios o Password: Se usa para dar a una serie de individuos un mismo directorio con una cuenta común

Apuntes de Linux básico

-

o GID: número de identificación en el sistema o Lista de usuarios : usuarios que pertenecen al grupo Fichero donde se almacenan las contraseñas: /etc/shadow Sólo en aquellos sistemas que habiliten el sistema de contraseñas shadow como medida de seguridad (se hace con pwconv, aunque viene por defecto últimamente). Formato: usuario:password:días del último cambio: dias antes del cambio:Dias despues del cambio: tiempo de aviso:dias antes de la inhabilitacion: perido que lleva caducado:reservado:

o Usuario - Nombre del usuario o password - Aquí sí, es el password cifrado. o Tiempo del último cambio de password - Pero el tiempo cuenta desde el 1 de enero de 1970, comienzo de la era UNIX. o Días antes del cambio - Periodo (en días) donde el password debe ser cambiado. o Dias despues del cambio - En los días después donde debe ser cambiado. o Tiempo del aviso - Periodo en el que el sistema tiene que avisar de la necesidad del cambio. o Inhabilitación - Días antes de la inhabilitacion de la cuenta. o Perido caducado - Días desde el 1 de enero de 1970 en el que la cuenta está deshabilitada. o Campo reservado

Ejemplo de creación de usuario “prueba” a mano: -

Sólo el superusuario puede crear usuarios. Se entra como root: su –

-

-

Se usa el editor seguro para constraseñas: vipw /etc/passwd Se añade la línea correspondiente: prueba:x:1005:1005::/home/prueba:/bin/bash Es necesario crear el grupo principal del usuario. Se usa el editor seguro para grupos: vigr /etc/group Se añade la línea: prueba:x:1005: Editamos /etc/shadow Añadimos la línea: prueba:!:12173:0:99999:7:::

-

Se establece la contraseña nueva para el usuario: passwd prueba Se crea el directorio de trabajo (home): mkdir /home/prueba

-

Copiamos el skeleton: cp /etc/skel/.* /home/prueba Se transfieren los ficheros al usuario (cambio de usuario root a prueba): chown prueba.prueba -R /home/prueba

-

Comando que lo hace todo automáticamente: useradd useradd -g users -d /home/prueba -s /bin/bash -m -k /etc/skel prueba

No se suele borrar usuarios. Normalmente se deshabilitan poniendo una letra (d, por ejemplo) delante de la contraseña. Esto es porque puede que el usuario se dé de alta de nuevo o por no dejar el sistema inconsistente con archivos creados por el usuario. Existe un comando para borrar el usuario y sus ficheros: userdel.

Apuntes de Linux básico

Grupos Se usan para dar privilegios a un conjunto de usuarios en lugar de tener que hacerlo uno a uno. En linux se usa grupos para todo de forma que cada usuario no puede utilizar ciertos dispositivos si no pertenece al grupo de usuarios que puede manejarlo. El fichero de los grupos es /etc/group Comando para añadir grupos: groupadd –g gid grupo

Cambio de propietario Para cambiar el propietario de un fichero: chown chown usuario elemento(s) chown usuario.grupo elemento(s)

Para cambiar el grupo solamente: chgrp chgrp grupo elemento(s)

Para aplicar el cambio a todos los ficheros y todos los subdirectorios: -R chown –R usuario.grupo elemento(s)

El comando su y sudo No es bueno usar directamente el usuario root. Para ello se utiliza su Este comando sirve para suplantar la identidad de cualquier usuario conociendo la contraseña, incluído el root. La diferencia entre su y su – (con guión) es que con guión es como si entraramos en sesión por primera vez y heredaramos las variables de entorno. Si no ponemos guión seguimos con las variables y permisos que tenga el usuario en ese momento. Para ejecutar un programa como superusuario (sin entrar en sesión) se usa sudo Mediante este comando, se solicita la contraseña del usuario que lo ejecuta, y si ésta es correcta y el usuario tiene privilegios, se le permite ejecutar el comando. Los privilegios de usuarios y grupos que pueden ejecutar comandos de root están en el fichero: /etc/sudoers .

Apuntes de Linux básico

Instalación de programas Hay 3 modos de instalar programas: -

Mediante instaladores propios de la distribución como apt (debian), urpm (red hat), o yast (SuSe); o sus equivalentes gráficos. Mediante compilación de fuentes. Instalador de la propia aplicación.

Instaladores de distribuciones: APT Estos instaladores son básicamente equivalentes al sistema agregar/quitar programas de Windows, pero muchísimo más potente. APT dispone de una base de datos en el ordenador (repositorio) donde mantienen una lista de paquetes instalables e instalados. El modo de actualizar esa base de datos es mediante el comando: apt-get update que lee los paquetes disponibles en las direcciones especificadas en el fichero: /etc/apt/sources.list Para instalar un paquete, lo primero que hay que hacer es conocer el nombre del paquete. Si no se conoce, se puede buscar el nombre del paquete en la base de datos mediante el comando: apt-cache search nombre Una vez averiguado el nombre del paquete, se instalar con el comando: apt-get install nombre_paquete Para desinstalar un paquete se usa el comando: apt-get remove nombre_paquete Para actualizar el sistema, es decir, aplicar parches a la versión actual de Linux, se usa el comando: apt-get upgrade El comando apt- get solo instala paquetes y dependencias para que todo funcione perfectamente. El problema es que no instala paquetes recomendados. Últimamente se recomienda utilizar el programa aptitude que, además de instalar el paquete y sus dependencias, instala los paquetes recomendados. Éste se utiliza de la misma forma que apt-get.

Apuntes de Linux básico

Compilación de fuentes Para compilar es imprescindible instalar los paquetes de desarrollo básicos: gcc, libcdev, y make mediante este comando: apt-get install gcc libc-dev make Las fuentes de los programas suelen venir en un archivo tar.gz (tarball). Para descomprimir el archivo se hace: tar xvzf archivo.tar.gz Este comando descomprime normalmente el contenido en un directorio. Una vez dentro del directorio, lo recomendable es leer algún archivo que se llame INSTALL.TXT o README.TXT y seguir sus instrucciones. Lo habitual es seguir los siguientes pasos: 1. ./config Comprueba que todas las herramientas y liberías necesarias están instaladas. Luego, configura la compilación. 2. make Compila la aplicación 3. sudo make install Esto copia los archivos necesarios recién compilados a los directorios de sistema para que cualquier usuario pueda ejecutar la aplicación. Es necesario ejectuar este comando como root, su o sudo ya que se va a escribir en directorios donde un usuario normal no debería tener permisos.

Es normal que el programa config requiera instalar librerías de desarrollo de C. En este caso hay que buscar la que se pida. Una pista es buscar mediante: apt-cache search librería | grep

-dev

El nombre de las librerías de desarrollo terminan en -dev. Por ejemplo, libc-dev es la librería de desarrollo de las librerías de C básicas y es requerida en casi cualquier compilación.