administracion unix:´ fundamentos...

18
Administraci ´ on UNIX: Fundamentos b ´ asicos Jes ´ us Montes S ´ anchez jmontes@fi.upm.es Septiembre 2012 jmontes@fi.upm.es Administraci ´ on UNIX: Fundamentos b ´ asicos 1/70 Administraci ´ on en UNIX/Linux Tres pilares fundamentales: 1 Consola (l´ ınea de mandatos) 2 Scripts 3 Servicios del sistema jmontes@fi.upm.es Administraci ´ on UNIX: Fundamentos b ´ asicos 2/70 Consola ¿Qu ´ e es un comando? Seg ´ un la RAE (22 a ed.): 1 Mando militar 2 Peque ˜ no grupo de tropas de choque, destinado a hacer incursiones ofensivas en terreno enemigo 3 Grupo armado de terroristas jmontes@fi.upm.es Administraci ´ on UNIX: Fundamentos b ´ asicos 3/70 Consola ¿Qu ´ e es un mandato? Seg ´ un la RAE (22 a ed.): 1 Orden o precepto que el superior da a los s´ ubditos 2 Orden dada a un aparato para que realice una determinada operaci ´ on 3 ... POR LO TANTO: La traducci ´ on correcta de command line es ınea de mandatos (tambi ´ en ´ ordenes) jmontes@fi.upm.es Administraci ´ on UNIX: Fundamentos b ´ asicos 4/70

Upload: others

Post on 04-Jul-2020

5 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Administracion UNIX:´ Fundamentos basicos´laurel.datsi.fi.upm.es/_media/docencia/asignaturas/... · Ejemplo: $ echo "Hola Mundo" jmontes@fi.upm.es Administracion UNIX: Fundamentos

Administracion UNIX:Fundamentos basicos

Jesus Montes [email protected]

Septiembre 2012

[email protected] Administracion UNIX: Fundamentos basicos 1/70

Administracion en UNIX/Linux

Tres pilares fundamentales:

1 Consola (lınea de mandatos)

2 Scripts

3 Servicios del sistema

[email protected] Administracion UNIX: Fundamentos basicos 2/70

Consola

¿Que es un comando?

Segun la RAE (22a ed.):1 Mando militar

2 Pequeno grupo de tropas de choque,destinado a hacer incursionesofensivas en terreno enemigo

3 Grupo armado de terroristas

[email protected] Administracion UNIX: Fundamentos basicos 3/70

Consola

¿Que es un mandato?

Segun la RAE (22a ed.):1 Orden o precepto que el superior da a los subditos

2 Orden dada a un aparato para que realice una determinadaoperacion

3 ...

POR LO TANTO:La traduccion correcta de command line es lınea de mandatos(tambien ordenes)

[email protected] Administracion UNIX: Fundamentos basicos 4/70

Page 2: Administracion UNIX:´ Fundamentos basicos´laurel.datsi.fi.upm.es/_media/docencia/asignaturas/... · Ejemplo: $ echo "Hola Mundo" jmontes@fi.upm.es Administracion UNIX: Fundamentos

Lınea de mandatos

• La lınea de mandatos es la shell basica de la mayorıa desistemas de la familia UNIX

• Es una aplicacion que forma parte del S.O. y ofrece unainterfaz a traves de la cual usuarios y administradorespueden operar el sistema.

• Consultar el estado del sistema• Recorrer el arbol de directorios• Lanzar otras aplicaciones• ...

[email protected] Administracion UNIX: Fundamentos basicos 5/70

Lınea de mandatos

• SUS define un estandar de UNIX shell, basado en elBourne Shell

• Aplicaciones de lınea de mandatos comunes:• Korn Shell (ksh)• Bourne Shell (sh)• Bourne Again Shell (bash)• C shell (csh)• TC shell (tcsh)

Sintaxis tıpica:(prompt) mandato [parametro 1] ... [parametro n]

Ejemplo:$ echo "Hola Mundo"

[email protected] Administracion UNIX: Fundamentos basicos 6/70

Mandatos basicos

Listar un directorioMandato ls

ls

archivo1 archivo2 directorio

ls -l

-rw-r--r-- 1 user group 6750 15 feb 13:56 archivo1

-rw-r--r-- 1 user group 1027 29 mar 17:26 archivo2

drwx------ 2 user group 4096 12 abr 11:05 directorio

Cambiar de directorioMandato cd

cd directorio

[email protected] Administracion UNIX: Fundamentos basicos 7/70

Mandatos basicosManual del sistemaMandato man

• El manual de UNIX contiene informacion sobre la mayorıade mandatos, ficheros y servicios del sistema

• Dividido en secciones:1 Mandatos generales2 Llamadas al sistema3 Biblioteca de C4 Ficheros especiales5 Formatos de ficheros6 Juegos y salvapantallas7 Otros8 Administracion

man ls

man 2 fork

[email protected] Administracion UNIX: Fundamentos basicos 8/70

Page 3: Administracion UNIX:´ Fundamentos basicos´laurel.datsi.fi.upm.es/_media/docencia/asignaturas/... · Ejemplo: $ echo "Hola Mundo" jmontes@fi.upm.es Administracion UNIX: Fundamentos

Scripts

• Los scripts son la base de la administracion de sistemasUNIX

• Programas sencillos, ejecutados mediante un interpreteestandar, normalmente el propio shell de lınea demandatos (shell scripts)

• Permiten automatizar tareas repetitivas y controlar lasfunciones cotidianas del S.O. de manera homogenea

• Algunos lenguajes de scripting:• Bash script• Perl• ¿Python?

Aveces la distincion entre lenguaje de programacion ylenguaje de scripting no esta clara.

[email protected] Administracion UNIX: Fundamentos basicos 9/70

Servicios del sistema

• Aplicaciones que estan ejecutandose de manerapermanente en el sistema

• Proporcionan funciones de alto nivel a usuarios yaplicaciones

• CUPS (impresoras)• Apache (servidor web)• nfs-daemon (directorios compartidos por red)• nis (autenticacion remota)• gdm (login grafico)• ...

• Muchos de ellos se controlan mediante scripts• Su correcto funcionamiento es crucial para el

aprovechamiento del sistema por parte de los usuarios

[email protected] Administracion UNIX: Fundamentos basicos 10/70

Arbol de directorios UNIX• En UNIX, todos los dispositivos de

almacenamiento de archivos semuestran en un unico arbol dedirectorios.

• Discos duros locales• Discos opticos de datos (CDs,

DVDs, Blu-Rays...)• Discos extraibles (USB,

FireWire...)• Directorios montados

remotamente (nfs, smb...)• Las diferentes versiones de UNIX

suelen emplear estructuras dedirectorios basicas mas o menosfijas para facilitar la organizacion dela informacion

bin

dev

etc

lib

mnt

home

opt

proc

sbin

usr

var

tmp

/

bin

etc

lib

man

include

local

[email protected] Administracion UNIX: Fundamentos basicos 11/70

Arbol de directorios UNIX

• /bin: Ejecutables basicos del S.O.En algunos UNIX contiene soloenlaces

• /dev: Ficheros especialesasociados a dispositivos. UNIXproyecta los dispositivos comoficheros en este directorio (interfazcomun)

• /etc: Configuracion del sistema.Ficheros de configuracion deservicios, arranque, etc

• /home: Cuentas personales de losusuarios. Puede estas dividido enniveles

bin

dev

etc

lib

mnt

home

opt

proc

sbin

usr

var

tmp

/

bin

etc

lib

man

include

local

[email protected] Administracion UNIX: Fundamentos basicos 12/70

Page 4: Administracion UNIX:´ Fundamentos basicos´laurel.datsi.fi.upm.es/_media/docencia/asignaturas/... · Ejemplo: $ echo "Hola Mundo" jmontes@fi.upm.es Administracion UNIX: Fundamentos

Arbol de directorios UNIX

• /lib: Bibliotecas basicas delsistema. Propias del kernel ocomunes a muchos ejecutables

• /mnt: Directorio de montaje deciertos sistemas de ficheros. Por logeneral, vacıo o con un nivel dedirectorios. Se utiliza para montarotros dispositivos

• /opt: Aplicaciones adicionales delsistema. En principio todo aquelloque el administrador instale fueradel SSOO estandar (el delfabricante o distro)

bin

dev

etc

lib

mnt

home

opt

proc

sbin

usr

var

tmp

/

bin

etc

lib

man

include

local

[email protected] Administracion UNIX: Fundamentos basicos 13/70

Arbol de directorios UNIX• /proc: Sistema de ficheros virtual

para la gestion de recursos. Elkernel presenta en este directorioinformacion del sistema

• /sbin: Ejecutables deadministracion del SSOO.Subconjunto de mandatos conprivilegios. En principio un usuariono tiene por que tenerlos en el PATH

• /tmp: Directorio para ficherostemporales. Ficheros auxiliares deaplicaciones. Todos los usuariospueden escribir en este directorio.En algunos UNIX se comparte conel swap

bin

dev

etc

lib

mnt

home

opt

proc

sbin

usr

var

tmp

/

bin

etc

lib

man

include

local

[email protected] Administracion UNIX: Fundamentos basicos 14/70

Arbol de directorios UNIX• /usr: Aplicaciones adicionales del

SSOO. Este directorio contiene losmandatos que no son basicos (ls,cp, etc.) pero que se distribuyen conla instalacion del fabricante

• /usr/local: Programas locales delsistema. Analogo al /opt (a veces unenlace simbolico)

• /var: Directorio para ficheros de logy colas de trabajos. Lo usa elsistema para guardar el registro deoperaciones (accesos, errores yotros mensajes), ası como colas dedeterminados servicios (correo oimpresora)

bin

dev

etc

lib

mnt

home

opt

proc

sbin

usr

var

tmp

/

bin

etc

lib

man

include

local

[email protected] Administracion UNIX: Fundamentos basicos 15/70

Directorio /dev

• Agrupa entrada de diferentes tipos:• Dispositivos de tipo caracter: terminales o cintas• Dispositivos de bloque: discos• Dispositivos virtuales (/dev/zero, /dev/null)

• Todos ellos tiene asociado un major y minor number. Sonparametros que usa el kernel para determinar como tratarun acceso al dispositivo

• Major number: Identifica el manejador (driver) que lo va atratar (ver /proc/devices)

• Minor number: Parametro adicional para el manejador

ls -l /dev/zero

crw-rw-rw- 1 root root 1, 5 25 mar 20:34 /dev/zero

[email protected] Administracion UNIX: Fundamentos basicos 16/70

Page 5: Administracion UNIX:´ Fundamentos basicos´laurel.datsi.fi.upm.es/_media/docencia/asignaturas/... · Ejemplo: $ echo "Hola Mundo" jmontes@fi.upm.es Administracion UNIX: Fundamentos

Directorio /proc

• Se corresponde con un sistema de ficheros virtual (notiene soporte en disco). Las entradas del directorio son:

• Procesos en ejecucion• Informacion del sistema• Mapping de recursos del sistema

• El contenido de este directorio depende mucho del sistema• El sistema operativo:

• Al registrar entradas en el directorio guarda una pareja defunciones (una para lectura y otra para escritura)

• Una operacion de lectura (e.g.: cat /proc/cpuinfo) enrealidad ejecuta una funcion dentro del kernel (no leeverdaderamente de ningun dispositivo)

• Idem para la escritura.

[email protected] Administracion UNIX: Fundamentos basicos 17/70

Directorio /proc

• Algunos archivos interesantes dentro de /proc:• version: Version del kernel• cpuinfo: Informacion sobre el procesador• meminfo: Informacion sobre la memoria del sistema• devices: Dispositivos del sistema• partitions: Particiones de los discos duros encontrados• modules: Modulos del kernel cargados

• Ademas /proc contiene un directorio con el PID de cadaproceso en ejecucion. Dentro de ese directorio podemosencontrar cosas como:

• exe: Enlace simbolico al ejecutable• cwd: Enlace simbolico al directorio de ejecucion• status: Estado del proceso• Directorio fd: Enlaces simbolicos a cada fichero abierto por

el proceso. El nombre del enlace identifica el descriptor defichero del proceso

[email protected] Administracion UNIX: Fundamentos basicos 18/70

Propietarios de los directorios

• La mayorıa de directorios y ficheros pertenecen al usuarioroot o a otros usuarios privilegiados del sistema

• Las excepciones son:• Cuentas de usuario: /home. Cada usuario tiene un

directorio del cual es propietario• Ficheros temporales: /tmp. El directorio /tmp tiene

asociado el flag +t (sticky) que permite que cualquierusuario pueda crear entradas aun sin ser propietario dedicho directorio pero no escribirlas o borrarlas

• Entradas de las colas de trabajos: /var. En concreto, losmensajes de correo (habitualmente /var/spool/mail)

• Las imagenes de los procesos: /proc. Por motivos decoherencia y para ciertas operaciones, la informacion deprocesos pertenece al mismo propietario al queesta asociado el proceso

[email protected] Administracion UNIX: Fundamentos basicos 19/70

Usuarios, grupos y permisos

• Cada usuario del sistema esta identificado por un UID

unico, al que va asociado el nombre de usuario (palabraen minusculas), tambien unico

• Todo usuario pertenece al menos a un grupo• El usuario y el grupo sirven para determinar los permisos

de acceso a los ficheros (entre otras cosas)• En UNIX existen tres tipos de permisos:

• r: Lectura. Necesario para poder acceder a los datos delfichero

• w: Escritura. Necesario para modificar los datos del fichero• x: Ejecucion. Necesario para lanzar programas y hacer

operaciones especiales

[email protected] Administracion UNIX: Fundamentos basicos 20/70

Page 6: Administracion UNIX:´ Fundamentos basicos´laurel.datsi.fi.upm.es/_media/docencia/asignaturas/... · Ejemplo: $ echo "Hola Mundo" jmontes@fi.upm.es Administracion UNIX: Fundamentos

Usuarios, grupos y permisos

• Permisos en directorios:• El permiso de lectura permite listar el contenido del

directorio (con limitaciones)• El permiso de escritura permite crear nuevos ficheros

dentro• El permiso de ejecucion permite entrar en el directorio

• UNIX asigna tres categorıas de permisos a cada fichero:• Permisos al propietario• Permisos al grupo• Permisos “al mundo”

[email protected] Administracion UNIX: Fundamentos basicos 21/70

Usuarios, grupos y permisosEl mandato ls muestra a la izquierda los permisos de losficheros cuando se invoca con la opcion de formato largo (-l)

ls -l-rw-r--r-- 1 user group 6750 15 feb 13:56 archivo1lrwxrwxrwx 1 user group 8 1 mar 17:26 enlace1 - archivo1drwx------ 2 user group 4096 12 abr 11:05 directorio

• El primer caracter indica propiedades especiales delfichero: d directorio, l enlace simbolico, etc

• El primer grupo de 3 (a continuacion) indica permisos alpropietario

• El siguiente grupo de 3 indica permisos al grupo• El siguiente grupo de 3 indica permisos al “mundo”

[email protected] Administracion UNIX: Fundamentos basicos 22/70

Usuarios, grupos y permisos

Mandato chown

Permite cambiar el propietario de uno o mas ficheros

chown [OPTION]... [OWNER][:[GROUP]] FILE...

Ejemplo:

chown usuario2 archivo1

Mandato chgrp

Similar a chown pero para grupos

chgrp [OPTION]... GROUP FILE...

[email protected] Administracion UNIX: Fundamentos basicos 23/70

Usuarios, grupos y permisosMandato chmod

Permite cambiar los permisos de uno o mas ficheros

chmod [OPTION]... MODE[,MODE]... FILE...

chmod [OPTION]... OCTAL-MODE FILE...

Los permisos se pueden expresar• En base octal (tres dıgitos)• Clave modo(ugoa)modficador(+-)permiso(rwx)

Ejemplos

chmod 0755 archivo1

chmod u+w archivo1

chmod ug+rx archivo1

chmod a-w archivo1

[email protected] Administracion UNIX: Fundamentos basicos 24/70

Page 7: Administracion UNIX:´ Fundamentos basicos´laurel.datsi.fi.upm.es/_media/docencia/asignaturas/... · Ejemplo: $ echo "Hola Mundo" jmontes@fi.upm.es Administracion UNIX: Fundamentos

Gestion de usuariosCreacion de un usuario:

1 Insertarlo en el fichero de usuarios. Se le asigna unnombre, un identificador y un directorio de trabajo (entreotras cosas)

2 Asignarle una contrasena (password). La pasword seprocesa y se asocia al usuario

3 Definir parametros (lımites). Numero de procesos maximo,memoria, etc

4 Crear el directorio home. Verificar espacio disponible yorganizar las cuentas de forma manejable.

5 Copiar ficheros iniciales. El directorio /etc/skel suelecontener los ficheros basicos para una nueva cuenta deusuario (esqueleto de una cuenta)

6 Dar de alta en otro servicios disponibles (mail, quota...)

[email protected] Administracion UNIX: Fundamentos basicos 25/70

Gestion de usuarios

• Fichero de usuarios /etc/passwd

usuario:passwd:uid:gid:desc:home:shell

• usuario: identificador del usuario y login en la maquina• passwd: Contrasena. Normalmente se oculta usando/etc/shadow

• uid/gid: identificadores de sistema del usuario y su grupoprincipal

• desc: Informacion adicional• home: Ruta del directorio donde se arranca el login. Raiz

de la cuenta del usuario• shell: Programa que se ejecuta al hacer login

usuario1:x:1001:1000:Nombre Apellido:/home/user1:/bin/bash

[email protected] Administracion UNIX: Fundamentos basicos 26/70

Gestion de usuarios

• Fichero de grupos /etc/group

grupo:passwd:gid:lista usuarios

• grupo: identificador del grupo• passwd: Contrasena del grupo. No se suele usar• gid: identificador de sistema

grupo1:x:1000:usuario1,usuario2,usuario3

• Fichero de passwords ocultos /etc/shadow

usuario:passwd:fecha:edadmin:edadmax:aviso:inact:cad:res

Contiene la contrasena codificada y otros parametros deseguridad

[email protected] Administracion UNIX: Fundamentos basicos 27/70

Gestion de usuariosCodificacion de contrasenas en /etc/shadow

• Almacenar las contrasenas “en claro” puede crear unproblema de seguridad

• Las contrasenas se codifican usando una funcion hash(normalmente MD5 o SHA)

• El resultado de la funcion hash se almacena en/etc/shadow

/etc/shadow

login: jmontespassword: ******** hash

$1$EUMrwt7d$pP.qwe2PyX9zo1N0xFkhG

$1$EUMrwt7d$pP.qwe2PyX9zo1N0xFkhG

[email protected] Administracion UNIX: Fundamentos basicos 28/70

Page 8: Administracion UNIX:´ Fundamentos basicos´laurel.datsi.fi.upm.es/_media/docencia/asignaturas/... · Ejemplo: $ echo "Hola Mundo" jmontes@fi.upm.es Administracion UNIX: Fundamentos

Gestion de usuarios

Crear usuariosEl proceso de creacion de un usuario se puede automatizarusando el mandato adduser

adduser [options] [--home DIR] [--shell SHELL] [--no-create-home][--uid ID] [--firstuid ID] [--lastuid ID][--ingroup GROUP | --gid ID] [--disabled-password][--disabled-login] [--gecos GECOS] [--add_extra_groups][--encrypt-home] user

Ejemplo:adduser --home /home/user1 -shell /bin/bash --ingroup users user1

Cambiar contrasenaPara cambiar la contrasena de un usuario podemos usar elmandato passwd

[email protected] Administracion UNIX: Fundamentos basicos 29/70

Usuarios del sistema

• root: Administrador (UID 0)• daemon: Procesos y servicios del sistema (UID 1)• bin: Propietario de ejecutables (UID 2)• sys: Ficheros de sistema (UID 3)• adm: Ciertos logs (UID 4)• nobody: Usuario sin privilegios• ...

Los UIDs de usuarios no del sistema suelen empezar en el1000

[email protected] Administracion UNIX: Fundamentos basicos 30/70

Login de un usuario

Al conectarse un usuario al sistema:1 Se evalua si el modo de conexion (local o remoto) es

valido. Puede haber restricciones a nivel del usuario (porejemplo, dependiendo del getty, el root no se debeconectar de forma remota)

2 Se arranca el programa shell asociado. Este programapuede no ser un shell propiamente dicho

3 Configuracion de la sesion• Configuracion general (/etc/profile, /etc/bash.bashrc)• Configuracion por usuario (⇠/.profile, ⇠/.bashrc)

[email protected] Administracion UNIX: Fundamentos basicos 31/70

Inhabilitar usuarios

Para cerrar o bloquear una cuenta sin borrar su contenidopodemos:

• Bloquear la contrasena poniendo * en el campo passwddel /etc/passwd

• Sustituir el shell en el /etc/passwd por un mandato querealice otra operacion

• /bin/false: Programa que no hace nada y termina convalor de retorno 1

• Otro programa que imprima el mensaje “cuentabloqueada”, notifique al root o lo que sea necesario

Tambien se puede bloquear temporalmente el acceso a todoslos usuarios menos root creando el fichero de texto/etc/nologin. Cuando un usuario intente hacer login elsistema mostrara el contenido del fichero (mensaje de aviso).

[email protected] Administracion UNIX: Fundamentos basicos 32/70

Page 9: Administracion UNIX:´ Fundamentos basicos´laurel.datsi.fi.upm.es/_media/docencia/asignaturas/... · Ejemplo: $ echo "Hola Mundo" jmontes@fi.upm.es Administracion UNIX: Fundamentos

Cambio de usuarioLos mandatos su y sudo permiten a unos usuarios convertirseen otrosMandato su

su [options] [username]

La identidad del usuario cambia al indicado. Normalmenterequiere autenticacion (solicita la contrasena del nuevousuario)

Mandato sudo

sudo [command]

Permite a un usuario asumir la identidad de otro para ejecutarun mandato.

• Antes de proceder autentica al usuario de partida• Controlado por el fichero /etc/sudoers

[email protected] Administracion UNIX: Fundamentos basicos 33/70

Cambio de usuario: sudo

Usando /etc/sudoers podemos permitir que determinadosusuarios ejecuten mandatos que normalmente no podrıan:

• Ejecutar mandatos de sistema especıficos para reiniciardemonios, configurar servicios...

• Convertirse en administradores sin conocer la contrasenade root

/etc/sudoers se convierte en un fichero crıtico del sistema,que solo deber ser modificable por el root.El mandato visudo permite al root editar este fichero de formasegura (almacena los cambios en un temporal y comprueba lasintaxis antes de modificar /etc/sudoers)man sudoers

[email protected] Administracion UNIX: Fundamentos basicos 34/70

bash (Bourne-Again Shell)

• Shell de texto basada en el Bourne Shell• Creada por Brian Fox en 1989• POSIX shell con extensiones (Cumple con SUS)• Software libre (parte del proyecto GNU)• Estandar de facto en la mayorıa de Linux• Presente en casi todos los UNIX modernos

Sintaxis basicamandato [parametros...]

[email protected] Administracion UNIX: Fundamentos basicos 35/70

bash (Bourne-Again Shell)

mandato [parametros...]

• Los mandatos se invocan usando el nombre del ficheroejecutable

• El ejecutable tiene que estar dentro del PATH• Los parametros se separan por uno o mas espacios• Se pueden redirigir la entrada y salidas estandar del

proceso que se arranca• Se puede invocar mas de un mandato en secuencia• Se puede recuperar y operar con el valor de retorno del

mandato invocado

[email protected] Administracion UNIX: Fundamentos basicos 36/70

Page 10: Administracion UNIX:´ Fundamentos basicos´laurel.datsi.fi.upm.es/_media/docencia/asignaturas/... · Ejemplo: $ echo "Hola Mundo" jmontes@fi.upm.es Administracion UNIX: Fundamentos

bash (Bourne-Again Shell)

Valor de retorno• Cuando terminan, todos los procesos tiene un valor de

retorno (numero entero)• La shell captura ese valor y lo almacena por si es

necesario su uso posterior• El valor de retorno 0 indica terminacion satisfactoria (el

programa ha terminado sin problemas)• Un valor de retorno distinto de 0 suele indicar que el se ha

producido algun error. Diferentes valores de retorno (1, 2,

3...) se usan como codigos de error• La mayorıa de shells tratan ademas el valor de retorno 0

como valor logico verdadero y cualquier otro como falso

[email protected] Administracion UNIX: Fundamentos basicos 37/70

bash (Bourne-Again Shell)

Variables• bash permite declarar variables, que almacenan

informacion alfanumerica• Se declaran asignandoles un valor:nombre=valor

• Se pueden convertir en variables de entorno usando elmandato export

VAR1=12

export VAR1

• Se accede a su valor usando el operador prefijo $

mandato $VAR1

[email protected] Administracion UNIX: Fundamentos basicos 38/70

bash (Bourne-Again Shell)

VariablesLas variables no tienen tipo explıcito, y normalmente se tratancomo cadenas de textoVAR=1+2

la variable valdra la cadena “1+2”

bash puede operar con el valor de una variable como si fueseun numero entero. Para ello se usa el entorno $(( )). Lo quehaya dentro se resuelve como una operacion matematicaVAR=$((1+2))

la variable valdra la cadena “3”

[email protected] Administracion UNIX: Fundamentos basicos 39/70

Variables de entorno

• Valores con nombre que se almacenan en el entorno delsistema

• Usadas por los procesos y servicios• Muestran parte del estado y caracterısticas de

configuracion del sistema• De sistema o de usuario• Ejemplos:

• PATH: Rutas de a los ejecutables• PWD: Directorio actual• UID: Uid del usuario• ?: Valor del retorno del ultimo mandato invocado• RANDOM: Generador de numeros aleatorios (bash)

• El mandato env muestra todas las variables de entornodefinidas

[email protected] Administracion UNIX: Fundamentos basicos 40/70

Page 11: Administracion UNIX:´ Fundamentos basicos´laurel.datsi.fi.upm.es/_media/docencia/asignaturas/... · Ejemplo: $ echo "Hola Mundo" jmontes@fi.upm.es Administracion UNIX: Fundamentos

bash (Bourne-Again Shell)Redireccionesbash permite redirigir la entrada y salida estandar de losprocesos que crea

• El operador < se usa para redirigir la entrada de unmandato a un ficheromandato [params...] < fichero

• El operador > se usa para redirigir la salida de un mandatoa un ficheromandato [params...] > fichero

Se puede especificar el descriptor que se desea redirigir:mandato > fichero redirige la salida estandarmandato 2> fichero redirige la salida estandar de error

• El operador >> es similar a >, pero escribe al final delfichero (append)

[email protected] Administracion UNIX: Fundamentos basicos 41/70

bash (Bourne-Again Shell)

Redirecciones• El operador &numero permite referirse a otro descriptor de

fichero• Combinado con los operadores < y > permite agrupar

redirecciones• Ejemplo:

mandato > fichero 2>&1

La salida estandar de error (2) se redirige al mismo sitioque la salida estandar (1)

[email protected] Administracion UNIX: Fundamentos basicos 42/70

bash (Bourne-Again Shell)

Secuencias de mandatosbash permite crear secuencias de mandatos usandooperadores de concatenacion

• El operador ; se usa para crear una lista de mandatos.Los mandatos se ejecutan secuencialmentemandato1 [args...] ; mandato2 [args...] ; ...

• El operador && es similar a un AND logico perezoso:El segundo mandato solo se ejecuta si el primerotermino correctamente (retorno 0)mandato1 [args...] && mandato2 [args...] && ...

[email protected] Administracion UNIX: Fundamentos basicos 43/70

bash (Bourne-Again Shell)

Secuencias de mandatos• El operador || es similar a un OR logico perezoso:

El segundo mandato solo se ejecuta si el primero notermino correctamente (retorno 6= 0)mandato1 [args...] || mandato2 [args...] || ...

• El operador | crea una tuberıa o pipe que comunica lasalida estandar (fd 1) del primer mandato con la entradaestandar (fd 0) del segundomandato1 [args...] | mandato2 [args...] | ...

[email protected] Administracion UNIX: Fundamentos basicos 44/70

Page 12: Administracion UNIX:´ Fundamentos basicos´laurel.datsi.fi.upm.es/_media/docencia/asignaturas/... · Ejemplo: $ echo "Hola Mundo" jmontes@fi.upm.es Administracion UNIX: Fundamentos

bash (Bourne-Again Shell)

Invocacion anidadabash permite expresar invocaciones a mandatos anidados

• Usando la sitaxis ‘mandato [params...]‘ se puedeinvocar a un mandato como parametro de otro

• bash ejecuta primero el mandato entre tildes ‘ (tecla a laderecha de la P en el teclado ES, no con confundir con elapostrofe ’) primero, y lo sustituye en la invocacion delsegundo por su salida estandar (NO su valor de retorno)

mandato1 param1 ‘mandato2 param2 param3‘ param4

[email protected] Administracion UNIX: Fundamentos basicos 45/70

bash (Bourne-Again Shell)

Otros operadores especiales

• El operador * se reemplaza por una lista de todos losficheros en el directorio actual. Se puede conbinar conotros caracteres para crear expresiones regualres sencillasls *.txt

ls lib*h

• El operador \ se utiliza para escapar caracteresespeciales como &, ", |, ; o el propio \\& \"\| \; \\

[email protected] Administracion UNIX: Fundamentos basicos 46/70

Algunos mandatos utilestrue

Mandato que no hace nada. Termina con valor de retorno 0

false

Mandato que no hace nada. Termina con valor de retorno 1

echo

Imprime por su salida estandar un mensaje pasado comoparametro

echo hola

hola

echo $PATH

/usr/sbin:/usr/bin:/sbin:/bin

[email protected] Administracion UNIX: Fundamentos basicos 47/70

Algunos mandatos utiles

cat

Muestra el contenido de un fichero

cat fichero1

este es el contenido del fichero1

head

Muestra las primeras lıneas de un fichero

tail

Muestra las ultimas lıneas de un fichero

Si no se indica fichero operan con la entrada estandar

[email protected] Administracion UNIX: Fundamentos basicos 48/70

Page 13: Administracion UNIX:´ Fundamentos basicos´laurel.datsi.fi.upm.es/_media/docencia/asignaturas/... · Ejemplo: $ echo "Hola Mundo" jmontes@fi.upm.es Administracion UNIX: Fundamentos

Algunos mandatos utileswc

Cuenta lıneas, palabras y bytes de un fichero

wc /var/log/auth.log

433 5266 41533 /var/log/auth.log

cut

Selecciona columnas especıficas en ficheros de texto

ls -l | cut -d’ ’ -f1

-rw-r-----

-rw-r-----

drwxr-xr-x

Si no se indica fichero operan con la entrada estandar

[email protected] Administracion UNIX: Fundamentos basicos 49/70

Algunos mandatos utilesgrep

Muestra la lıneas de un fichero que presentan un patrongrep [OPTIONS] PATTERN [FILE...]

cat fichero1

esta es la primera linea

esta es la segunda

esta es la tercera linea

grep linea fichero1

esta es la primera linea

esta es la tercera linea

grep nos permite usar expresiones regulares. Si no se indicafichero opera con la entrada estandar

[email protected] Administracion UNIX: Fundamentos basicos 50/70

Algunos mandatos utiles

sed

Realiza transformaciones sobre cadenas de texto• Anadir y eliminar fragmentos• Reemplazar sub-cadenas• ...

echo "Hola Mundo" | sed s/"Mundo"/"a todos"/g

Hola a todos

Opera con expresiones regulares (al igual que grep). Si no seindica fichero opera con la entrada estandar

[email protected] Administracion UNIX: Fundamentos basicos 51/70

Algunos mandatos utilestest

Realiza comprobaciones y evalua condiciones logicas• Comprueba si un fichero existetest -f fichero

• Comprueba si dos cadenas son igualestest STRING1 = STRING2

• Comprueba si un numero es mayor que otrotest INTEGER1 -gt INTEGER2

• ...Ejemplos:

test -f fichero1 && cat fichero1

test $I -gt $MAX || I=$(($I+1))

[email protected] Administracion UNIX: Fundamentos basicos 52/70

Page 14: Administracion UNIX:´ Fundamentos basicos´laurel.datsi.fi.upm.es/_media/docencia/asignaturas/... · Ejemplo: $ echo "Hola Mundo" jmontes@fi.upm.es Administracion UNIX: Fundamentos

Combinando mandatos en bash

Ejemplos

• test $PWD = /tmp && echo "Estamos en $PWD"

Imprime un mensaje indicando el directorio en que nosencontramos, si este es /tmp

• cat /var/log/messages | grep "^A.*m$" | head -n2

Muestra la dos primeras lıneas del fichero/var/log/messages que empiezan por A y acaban por m

• cd /tmp; echo "probando" > prueba.txt; cd -

Cambia al directorio /tmp, escribe el mensaje "probando"

en el fichero prueba.txt y regresa al directorio original• grep "‘date + %D‘" /tmp/prueba.txt > /dev/null ||

date + %D >> /tmp/prueba.txt

[email protected] Administracion UNIX: Fundamentos basicos 53/70

Scripts en bash

• Un bash script es un fichero de texto plano que contieneuna serie de mandatos y operadores que pueden serinterpretados y procesados por bash

• Mecanismo basico: invocar a bash como un mandato,pasandole el script como parametrobash mi script.sh

• Alternativamente se pueden dar permisos de ejecucion alfichero y lanzarlo con un programa mas. Para que estofuncione es necesario incluir una cabecera al principio delfichero (primera lınea)#!/bin/bash

[email protected] Administracion UNIX: Fundamentos basicos 54/70

Scripts en bash

Estructura basicaUn script de bash contiene lıneas con declaraciones devariables, secuencias de mandatos, sentencias de control...Ejemplo:

#!/bin/bash

# Leemos los parametros de entrada

CADENA=$1

FICHERO=$2

# Contamos las lıneas de FICHERO en las

# que aparece CADENA

grep $CADENA $FICHERO | wc -l

# Terminamos satisfactoriamente

exit 0

[email protected] Administracion UNIX: Fundamentos basicos 55/70

Scripts en bash

Parametros de entradaLos scripts se pueden invocar pasando parametros de entrada.Para acceder a ellos se usan variables especiales dentro delscript

• $# almacena el numero de parametros que se han pasado• $0 almacena el nombre del propio script• $1, $2, $3, ... almacenan los parametros, por orden• $* almacena todos los parametros como una sola cadena

[email protected] Administracion UNIX: Fundamentos basicos 56/70

Page 15: Administracion UNIX:´ Fundamentos basicos´laurel.datsi.fi.upm.es/_media/docencia/asignaturas/... · Ejemplo: $ echo "Hola Mundo" jmontes@fi.upm.es Administracion UNIX: Fundamentos

Scripts en bash

shift

Descarta el primer parametro y desplaza los demas unaposicion

VAR1=$1

VAR2=$2

Es lo mismo queVAR1=$1

shift

VAR2=$1

read

Lee uno o mas parametros por la entrada estandar y losalmacena en variables

read VAR1 VAR2 VAR3 ...

[email protected] Administracion UNIX: Fundamentos basicos 57/70

Scripts en bash

if

Condicion if tıpica

if <condicion>

then

mandato1

...

elif <condicion>

then

...

else

...

fi

• Las condiciones son asu vez secuencias demandatos, que seinterpretan en funcionde su valor de retorno

• El sub-bloque else sepuede omitir

• El sub-bloque elif

puede aparecer 0 o masveces

if <cond>; then mandato1; ...; else madato2; ...; fi

[email protected] Administracion UNIX: Fundamentos basicos 58/70

Scripts en bash

Condiciones [ ]

• Es muy habitual evaluar condiciones usando el mandatotest

if test $VAR -gt 10

then

echo "Es mayor que 10"

fi

• bash permite remplazar este mandato por sus parametrosentre corchetes [ ]

if [ $VAR -gt 10 ]

then

echo "Es mayor que 10"

fi

[email protected] Administracion UNIX: Fundamentos basicos 59/70

Scripts en bash

case

case <expresion> in

caso_1 )

mandato1

mandato2;;

caso_2 )

mandato3

...;;

...

esac

Se evalua el resultado de laexpresion, no su retorno

while

while <condicion>

do

...

done

until

until <condicion>

do

...

done

[email protected] Administracion UNIX: Fundamentos basicos 60/70

Page 16: Administracion UNIX:´ Fundamentos basicos´laurel.datsi.fi.upm.es/_media/docencia/asignaturas/... · Ejemplo: $ echo "Hola Mundo" jmontes@fi.upm.es Administracion UNIX: Fundamentos

Scripts en bash

for

for variable in <lista>

do

...

done

• La lista esta formada poruna secuencia de una omas cadenas separadaspor espacios

select

select variable in <lista>

do

...

[break]

done

• La sentencia select

muestra un pequenomenu con las opcionesde la lista. break seemplea para romper elbucle

[email protected] Administracion UNIX: Fundamentos basicos 61/70

Scripts en bash

Ejemplo

#!/bin/bashif [ $# -ne 3 ]then

echo "uso: $0 <palabra> <letra> <repeticiones>"exit 1

fi

PALABRA=$1LETRA=$2REP=$3

POS=1while [ $POS -le $REP ]do

echo ‘echo $PALABRA | sed s/$LETRA/A/g‘ "(reptecion $POS)"POS=$(($POS+1))

done

[email protected] Administracion UNIX: Fundamentos basicos 62/70

Scripts en bash

Otro ejemplo

#!/bin/bash

echo "Parametro 1: $1"echo "Parametro 2: $2"echo "Parametro 3: $3"

select OP in concatenar reemplazar salirdo

case $OP in"concatenar" )

echo $1$2$3 ;;"reemplazar" )

echo $1 | sed s/$2/$3/g ;;"salir" )

break ;;esac

done

[email protected] Administracion UNIX: Fundamentos basicos 63/70

Scripts en bash

Funcionesbash permite declarar funciones dentro de un scpript

• Funcionan como sub-scripts• Se usan igual que otros mandatos• Pueden recibir parametros, que se gestionan con $#, $*,

$1, $2, ...

• Tienen valor de retorno

function nombre {

...

return <valor>

}

nombre () {

...

return <valor>

}

[email protected] Administracion UNIX: Fundamentos basicos 64/70

Page 17: Administracion UNIX:´ Fundamentos basicos´laurel.datsi.fi.upm.es/_media/docencia/asignaturas/... · Ejemplo: $ echo "Hola Mundo" jmontes@fi.upm.es Administracion UNIX: Fundamentos

Scripts en bash

Ejemplo con funciones

#!/bin/bash

function sum {echo $(($1+$2))return 0

}

div () {if [ $2 = 0 ]

thenecho "ERROR. Denominador = 0"return 1

fiecho $(($1/$2))return 0

}

echo "Dime dos numeros"read NUM1 NUM2

echo "Suma: "‘sum $NUM1 $NUM2‘

RES_DIV=‘div $NUM1 $NUM2‘if [ $? = 1 ]then

echo $RES_DIVecho "No se puede dividir"

elseecho "Division: "$RES_DIV

fi

[email protected] Administracion UNIX: Fundamentos basicos 65/70

El editor de texto

Despues de la shell de texto, la herramienta fundamental detodo administrador UNIX es el editor de texto

• Modificar ficheros de configuracion• Programar scripts

Es importante disponer de un editor potente con el que eladministrador se sienta comodo

IMPORTANTE: Un editor de texto no es un IDE. Debe ser unprograma ligero que pueda funcionar de manera rapida en unaterminal de texto y que este presente en la mayorıa desistemas que operemos

[email protected] Administracion UNIX: Fundamentos basicos 66/70

Editores• pico/nano

• Editor sencillo, similar al bloc de notas de Windows• Muy limitado y no recomendable

• vi/vim• Editor minimalista pero muy potente• Presente en todos los sistemas de la familia UNIX (parte

del estandar SUS)• Recomendable pero difıcil de aprender

• emacs• Editor multi-funcion, muy potente• Parte del proyecto GNU• Presente en muchos UNIX, pero a menudo como software

adicional• Tamiben recomendable

¿Cual es el mejor? desde luego nano NO

[email protected] Administracion UNIX: Fundamentos basicos 67/70

Ejecucion periodica

Existen mutitud de tareas de adminsitracion que debenrealizarse de forma periodica

• Actualizacion de software• Comprobaciones de seguridad• Realizacion de back-ups• etc.

Herramientas comunes• cron y crontab (parte del estandar SUS)• anacron

[email protected] Administracion UNIX: Fundamentos basicos 68/70

Page 18: Administracion UNIX:´ Fundamentos basicos´laurel.datsi.fi.upm.es/_media/docencia/asignaturas/... · Ejemplo: $ echo "Hola Mundo" jmontes@fi.upm.es Administracion UNIX: Fundamentos

cron y crontab

cron

Demonio que permite programar mandatos de administracion,que se ejecutaran automaticamente de forma periodica

• Se configura usando el fichero /etc/crontab

• Los directorios /etc/cron.daily, /etc/cron.weekly y/etc/cron.monthly facilitan la tarea: Los programas queesten dentro se ejecutan cada dıa, cada semana o cadames respectivamente

crontab

El mandato crontab permite gestionar ficheros crontab paracada usuario

• Se almacenan en /var/spool/cron/crontabs

• Se controla con /etc/cron.allow y /etc/cron.deny

[email protected] Administracion UNIX: Fundamentos basicos 69/70

Ficheros crontab

Fichero de texto que contiene una tabla, con una fila por lınea ylas columnas separadas por tabulador

1 Minuto (0 - 59)2 Hora (0 - 23)3 Dıa del mes (1 - 31)4 Mes (1 - 12)5 Dıas de la semana (0 - 7, domingo = 0 o 7)6 Mandato que ejecutar

Ejemplo0 0 * * * backup.sh

5 5 * * 7 system check.sh

0 2 1 * * software update.sh

[email protected] Administracion UNIX: Fundamentos basicos 70/70