Línea de Comandos (shell) Índice

Línea de Comandos (shell)
Sistemas Informáticos
1
Índice
•
•
•
•
•
•
•
•
•
•
•
La shell
Sistema de Ficheros
Contenido de Ficheros
“Atajos”
Gestión del usuario
Variables de entorno
Redirección / Canalización
Shell Scripting
Gestión básica de procesos
Servicios de red
Otro comandos útiles para la Administración
Sistemas Informáticos
2
1
applications
La shell
shell
system
calls
kernel
• Interfaz de llamadas:
– Compatibilidad POSIX (independencia del sistema)
– Paso de modo usuario a modo supervisor: TRAP
– Normalmente desde lenguaje C
library
routines
• Intérprete de comandos:
– Mismos privilegios que otro programa.
– Varios intérpretes disponibles: sh, csh, ksh, tcsh, bash, …
– Responde con el prompt: test@si:~$ (cuenta ordinaria:$, cuenta
privilegiada:#
• Inicio de sesión (login + passwd)
– Acceso Local: 6 consolas en modo texto (Ctrl+Alt+F1…F6) y 1 consola
gráfica (Ctrl+Alt+F7)
– Acceso Remoto: a través de la red (telnet, rlogin, ssh, etc.)
3
Sistemas Informáticos
applications
La shell
shell
system
calls
kernel
• Tipos de shell:
library
routines
– Bourne shell “sh” (/bin/sh): sintaxis de los viejos Unix (SysV)
– C shell “csh” (/bin/csh): sintaxis parecida al lenguaje C (BSD).
– Bourne Again shell “bash” (/bin/bash): Como la primitiva, pero con
muchas de las características encontradas en csh.
– Tcsh “tcsh” (/bin/tcsh): versión mejorada de la C shell original
– En general, diferencias poco importantes en el manejo cotidiano.
• Objetivo de la shell: diálogo interactivo usuario↔sistema.
– A través de infinidad de órdenes/comandos y aplicaciones.
•
•
•
•
•
Cambiar el modo de ejecución (background/foreground)
Redirección de Entrada/Salida
Canalización y concatenación de comandos
Scripting
Personalizable 100%
Sistemas Informáticos
4
2
applications
La shell
shell
system
calls
kernel
• Estructura de los comandos:
library
routines
user@machine:~$ comando -<opciones> [argumentos]
– Opciones: piezas del comando que alteran su comportamiento inicial
– Argumentos: nombre de fichero o cualquier otro tipo de dato
necesitado por el comando.
• El comando man (paginado del manual del sistema)
– El primer comando a aprender. Despliega en pantalla ayuda acerca de
un comando, función de programación, archivo de configuración, etc.
– Sintaxis: $ man -<opciones> [comando]
• –a: muestra todas las páginas de manual para un comando o palabra específica.
• –k: busca la palabra clave en todas las páginas de manual y muestra las ocurrencias.
5
Sistemas Informáticos
applications
La shell
shell
system
calls
kernel
• El comando man: Secciones
library
routines
– Manual organizado en secciones. /usr/share/man
• Normalmente, la búsqueda se lleva a cabo en un orden predeterminado en todas
las secciones, y solo se presenta la primera página encontrada.
• Si el comando especifica la sección, solo se busca en ella.
– Listado de secciones:
1.
2.
3.
4.
5.
6.
7.
8.
9.
Sistemas Informáticos
Programas ejecutables y guiones del intérprete de órdenes.
Llamadas al sistema (funciones servidas por el nucleo).
Llamadas de la biblioteca ( funciones de las bibliotecas del sistema)
Ficheros especiales (se encuentran generalmente en /dev)
Formato de ficheros y convenios p.ej. I/etc/passwd
Juegos
Paquetes de macros y convenios p.ej. man(7), groff(7).
Órdenes de administración del sistema (generalmente solo para root)
Rutinas del nucleo (No es estándar).
6
3
applications
La shell
shell
system
calls
kernel
• El comando man: Configuración
library
routines
– A través del fichero /etc/manpath.config
• Podemos utilizar el que queramos con: $ man –C new_file
– El comando manpath indica las rutas en las que se buscan los
manuales.
• También modificable, a través de la orden $ man –M path o modificando la variable
de entorno $MANPATH
– Se puede alterar el orden de búsqueda en las secciones: $MANSECT
– Se puede escoger el programa usado para presentar las páginas del
manual: $PAGER (por defecto less)
– Se puede escoger el idioma: $LANG
Sistemas Informáticos
7
Índice
•
•
•
•
•
•
•
•
•
•
•
La shell
Sistema de Ficheros
Contenido de Ficheros
“Atajos”
Gestión del usuario
Variables de entorno
Redirección / Canalización
Shell Scripting
Gestión básica de procesos
Servicios de red
Otro comandos útiles para la Administración
Sistemas Informáticos
8
4
Sistema de Ficheros
• Definición:
– Estructuras lógicas y sus correspondientes métodos que utiliza el Sistema
Operativo para organizar los ficheros en disco.
• Estructura jerárquica en forma de árbol:
– Manejo eficiente de información (agrupar información relacionada en
carpetas)
– Separación de directorios con /
– Acceso a los ficheros:
• Absoluta: cd /home/pepe
• Relativa al path actual (con “.” o “..”): cd ../../../usr/local
• Los ficheros que empiezan por “.” son “ocultos”.
• Seguridad: protección de ficheros frente a accesos no
autorizados.
Sistemas Informáticos
9
Sistema de Ficheros
• Montaje de Unidades:
– Se asocia un dispositivo de almacenamiento (usb, cd, etc.) a una posición
particular del arbol de directorios.
• Tratamiento idéntico de ficheros y dispositivos de E/S:
– Un mismo programa puede usar indistintamente ficheros y/o dispositivos.
• Se pueden enlazar localizaciones del arbol de directorios.
• Definición de path de un directorio/fichero:
– Directorios a recorrer, desde el directorio raiz, para llegar a dicho
directorio/fichero.
Sistemas Informáticos
10
5
Sistema de Ficheros
/
Directorio raíz.
/bin
Binarios o ejecutables.
/boot
Ficheros estáticos del cargador.
/dev
Dispositivos (device drivers).
/etc
Ficheros de configuración.
/mnt
Directorio de montaje (cdrom, disquete, …).
/lib
Módulos del kernel y librerías compartidas esenciales.
/home
Directorio home de los usuarios.
/opt
Paquete añadidos de software.
/root
Directorio home para el usuario root.
/sbin
Binarios utilizados por el administrador.
/proc
Archivos especiales para obtener o enviar información del o hacia el kernel.
/tmp
Ficheros temporales.
/usr
Para archivos compartidos por una organización (puede ser sólo lectura).
/usr/local
Instalar software local.
/var
Datos variables (directorios volátiles asociados a las distintas colas del sistema).
11
Sistemas Informáticos
Sistema de Ficheros (Comandos)
Navegación por el sistema de ficheros
• Comando pwd: Imprime por pantalla el path del directorio donde nos
encontramos.
• Comando cd: Comando utilizado para cambiar de directorio.
– Generalmente, el inicio de sesión en el directorio personal del usuario.
– Sintáxis: $ cd [directorio]
• El directorio destino se puede expresar de forma absoluta (desde raiz: cd /home/pepe/)
o de forma relativa (desde directorio actual: cd ../usr/bin)
• Si no especificamos destino, el comando cambia al directorio personal del usuario.
• Comando mkdir: Comando para la creación de un directorio
– Sintáxis: $ mkdir -<opciones> directorio
• Opción –m: Establece los permisos del directorio creado
• Opción –p: crea los directorios padre que falten para cada argumento directorio.
Sistemas Informáticos
12
6
Sistema de Ficheros (Comandos)
Manipulación de Ficheros
• Comando ls: Uno de los más utilizados. Lista el contenido de un directorio
alfabéticamente.
– Sintáxis: $ ls -<opciones> [archivo…]
• Si se ejecuta sin argumentos, lista los archivos (y directorios) del directorio actual.
• Opción –a: incluye los archivos ocultos (empiezan por .) al listar
• Opción –l: lista archivos con detalle (permisos, enlaces, propietario, grupo, tamaño, fecha de
modificación)
• Opción –r: invierte el orden de listado de los archivos.
• Opción –t: ordena la lista por tiempo de modificación.
• Opción –S: ordena la lista por tamaño de archivo.
• Opción –s: muestra el tamaño de cada archivo (en Kbytes) a la izquierda del nombre.
• Opción –A: lista todos los archivos excepto “.” y “..”
• Opción –R: lista los contenidos de todos los directorios recursivamente.
• Opción –color=[none/auto/always]: emplear color para distinguir tipos de archivos.
– Ejemplo combinado: $ ls –lart ¿Qué hace este comando?
13
Sistemas Informáticos
Sistema de Ficheros (Comandos)
Manipulación de Ficheros
• Comando cp: Utilizado para copiar archivos.
– Sintáxis: $ cp -<opciones> [arch_1]…[arch_n] [dir-destino]
•
•
•
•
•
•
Opción –f (forced): Sobreescribe los archivos de destino con el mismo nombre.
Opción –i (interactive): lo contrario de –f, preguntar antes de sobreescribir.
Opción –p: Conserva los permisos, usuario y grupo del archivo a copiar.
Opción –R: Copia directorios recursivamente.
Opción –a: equivalente a -pR.
Opción –u: si en destino existe un archivo de mismo nombre y con igual o más reciente fecha
de modificación, no se realiza la copia.
• Opción –v (verbose): Imprime por pantalla información sobre lo que se copia.
• Comand mv: Comando utilizado para mover archivos (no copiar) y/o
renombrarlos.
– Sintáxis: $ mv -<opciones> [origen_1]…[origen_n] [destino]
• Si el último argumento es un directorio, se mueven cada uno de los ficheros origen a ese dir.
• Si origen y destino son ficheros, se renombra dicho fichero.
Sistemas Informáticos
14
7
Sistema de Ficheros (Comandos)
Manipulación de Ficheros
• Comando rm: Borrado de archivos o directorios (Peligro!!).
– Sintáxis: $ rm -<ops> [archivo]…
•
•
•
•
Advertencia: Utilizar con cuidado. NO ES UN ENVÍO A LA “PAPELERA DE RECICLAJE”.
El argumento [archivo] puede ser un archivo, un directorio o una expresión regular.
Opción –f (forced): Sin mensajes de error, sin solicitar confirmaciones (mucho ojo).
Opción –r (recursive): Borrar los contenidos de directorios recursivamente.
• Comand ln: Establece enlaces entre archivos
– Se pueden crear tanto enlaces rígidos como simbólicos.
– Sintáxis: $ ln -<ops> [origen] [destino] $ln -<ops> [origen]… [directorio]
• Opción –d: permite al superusuario hacer enlaces rígidos a directorios.
• Opción –s: crear enlace simbólico.
– Ejemplo: $ ln –s /etc/passwd /home/usuario/claves
– Cuando ejecuto ls –l en un directorio con enlaces simbólicos:
• lrwxrwxrwx 1 usuario usuario 11 Apr 8 13:33 claves -> /etc/passwd
15
Sistemas Informáticos
Sistema de Ficheros (Comandos)
Manipulación de Ficheros
• Comando whereis: localizar path de binario/código fuente/manual de un
comando.
– Sintáxis: $ whereis -<opciones> [archivo]…
• Opción –b: Busca solamente el archivo binario.
• Opción –m: Busca solamente la página del manual.
• Opción –s: Busca solamente el código fuente.
• Comando locate: Comando de búsqueda de archivos
– La búsqueda se hace en una base de datos indexada (velocidad). Un archivo
con la lista de todos los archivos que existen en en SO.
– /var/lib/mlocate/mlocate.db
– Generalmente, el SO ejecuta periódicamente un comando para actualizar
dicha base de datos.
– Sintáxis: $ locate -<opciones> [patrón]
Sistemas Informáticos
16
8
Sistema de Ficheros (Comandos)
Manipulación de Ficheros
• Comando find: Comando de búsqueda de archivos más potente.
– Herramienta fundamental de administración. Permite buscar bajo ciertas
condiciones y ejecutar acciones sobre los resultados.
– Sintáxis: $ find <pto_partida> -<criterio_busqueda> -<accion_en_resultado>
– Criterios de búsqueda:
•
•
•
•
•
•
•
•
•
•
Criterio –atime n: Buscar ficheros abiertos hace n días (+n: hace más de n días).
Criterio –mtime n: ficheros modificados hace n días (+n …)
Criterio –newer file: ficheros modificados después del fichero file.
Criterio –size n: con tamaño de n bloques (bloque= 512 bytes) (+n…)
Criterio -type c: tipo de fichero (f=texto, d=directorio, etc.)
Criterio –fstype type: ficheros tipo *.type
Criterio –name nam: con nombre nam
Criterio –perm p: con permisos p
Criterio –user usr: con propietario usr
Criterio –nouser/nogroup: con propietario sin entradas en /etc/passwd y etc/passwd
17
Sistemas Informáticos
Sistema de Ficheros (Comandos)
Manipulación de Ficheros
• Comando find: (Continuación).
– Los criterios de búsqueda se pueden combinar
•
•
•
•
Para forzar la precedencia: \( … \)
Condición AND: -atime +60 –mtime +120
Condición OR: -atime +7 –o –mtime +120
Condicion NOT: ! –name gold.dat
– Acciones sobre ficheros encontrados:
•
•
•
•
•
Acción -print: muestra por pantalla los ficheros que concuerden.
Acción –ls: los muestra en formato extendido.
Acción –exec cmd\; : Ejecuta el comando sobre los ficheros (sin preguntar nada)
Acción –ok cmd\; : En este caso si que pregunta antes de hacerlo.
Acción –xdev: restringe la búsqueda al sistema de ficheros en el que nos encontramos.
– Algunos ejemplos, ¿Qué hacen?
• $ find /home –size +2048 \( –mtime +30 -o -atime +120\) –exec ls {} \;
• $ find /home –fstype f –name core –exec rm –f {} \;
• $ find /home/pepito -name ‘*.c’ -exec mv {} /home/pepito/src \;
Sistemas Informáticos
18
9
Índice
•
•
•
•
•
•
•
•
•
•
•
La shell
Sistema de Ficheros
Contenido de Ficheros
“Atajos”
Gestión del usuario
Variables de entorno
Redirección / Canalización
Shell Scripting
Gestión básica de procesos
Servicios de red
Otro comandos útiles para la Administración
Sistemas Informáticos
19
Contenido de Ficheros (Comandos)
• Comando cat: Muestra el contenido de un fichero en un solo paso
– Poco práctico con ficheros de gran tamaño.
• Comando more: Muestra el contenido de forma progresiva (paginado)
– El número de líneas de paginado es igual al tamaño del terminal.
• Comando less: Evolución del comando more
– Se trata de un programa interactivo, por lo que además de opciones, posee
comandos (lanzados a través de teclas ó combinaciones de teclas).
•
•
•
•
•
•
•
•
Barra Espaciadora: Avanza un número de líneas igual al tamaño del terminal.
Cursores: Avanza/Retrocede las líneas de una en una (con Enter también avanzo una línea).
G/g: ir al final/inicio del texto
/pattern: introducir una palabra a ser buscada avanzando en el texto.
?pattern: la palabra se busca retrocediendo en el texto.
n/N: buscar la siguiente/previa ocurrencia de la búsqueda de una palabra.
AvPag/RePag: Avanzar/retroceder una pantalla.
q: salir del programa.
Sistemas Informáticos
20
10
Contenido de Ficheros (Comandos)
• Comando wc: Contar palabras de un fichero
– Sintáxis: $ wc -<opts> [archivo…]
• Opción –c: Contar bytes.
• Opción –l: Contar líneas.
• Opción –w: Contar palabras.
• Comando head: Escribe por salida estándar la primera parte de un archivo.
– Sintáxis: $ head -<opciones> [archivo]
• Opción –c N: Escribe los primeros N bytes.
• Opción –n N: Escribe las primeras N líneas (en vez de 10, que es el valor por defecto).
• Comando tail: Escribe por salida estándar la última parte de un archivo.
– Sintáxis: $ tail -<opciones> [archivo]
• Opciones –c y -n: Funcionan igual que en el comando head.
• Opción –f: Escribe la última parte del archivo a medida que va creciendo. Muy útil para
monitorear archivos de registro que van creciendo con el tiempo.
Sistemas Informáticos
21
Contenido de Ficheros (Comandos)
• Comando grep: Escribe aquellas líneas del archivo coincidentes con un patrón.
– Sintáxis: $ grep -<opts> PATRON [archivos…]
• Opción –c: Imprime el número de líneas coincidentes en vez de las propias líneas.
• Opción –H: Imprimir el nombre del archivo con cada coincidencia.
• Opción –r: Buscar recursivamente en los subdirectorios del directorio actual.
– Cuando el patrón contiene caracteres “especiales” ( espacio, -, etc.), se puede
usar entrecomillado.
– También se pueden utilizar expresiones regulares.
• Ejemplo: buscar líneas con palabras que empiecen por a: grep a* archivo.
• Comando tar: Agrega el contenido de un árbol de directorios en un solo fichero
–
–
–
–
No comprime, solo empaqueta
Archivar: $ tar -cvf fichero.tar /camino_a_archivar/
Desarchivar: $ tar -xvf fichero.tar
Conjuntamente con gzip (compresor): $ tar -czvf fichero.tar.gz /camino/
Sistemas Informáticos
22
11
Contenido de Ficheros (Comandos)
• Comando cut: Borra secciones de cada línea de un fichero.
– Sintáxis: $ cut -<opts> [archivos…]
• Opción –c N: Selecciona el carácter N de cada línea (-N: de inicio de línea a N)
• Opción -b N: Selecciona el byte N de cada línea (M-N: del byte M al N)
• Opción -f N: Selecciona el campo N. Delimitador por defecto: TAB
• Comando sort: Ordena las líneas de un fichero de texto
– Sintáxis: $ sort -<opts> [archivo]
• Opción -d: orden alfabético
• Opción -n: orden numérico
• Opción -b: ignorar espacios al comienzo de línea.
Sistemas Informáticos
23
Contenido de Ficheros (Comandos)
• Comando vi: Editor de textos (en terminal) incluido en todo sistema UNIX.
– Un poco desagradable de usar al principio. Con el tiempo, mucho más rápido
que cualquier editor gráfico (En ocasiones será la única opción).
– Existen versiones mejoradas como vim que resultan un poco más amigables.
– Modo comando: salir, guardar, copiar, buscar, etc.
– Modo edición: inserción de texto.
– comando → edición: [i], [a], [o], [O],…
– edición → comando: [Esc]
– Movimiento por el texto:
• [h],[l],[j],[k]: cursor; izda, drcha, abajo, arriba (en vim funcionan los cursores…)
• [G]: ir a última línea ([5G]: ir a la línea 5)
• [0][$]: ir al inicio(cero)/final de la línea
– Entrada a modo de edición:
• [a][i]: añadir (append) o insertar (insert)
• [o][O]:
Sistemas Informáticos
24
12
Contenido de Ficheros (Comandos)
• Comando vi: (Continuación)
– Entrada a modo de edición:
• [a][i]: añadir (append) o insertar (insert)
• [o][O]: abrir debajo/encima una línea.
– Edición (manejo del buffer):
•
•
•
•
•
•
•
•
[x]: borra un carácter ([xx] borra una línea, [4xx] borra 4 líneas, [xw] borra una palabra)
[d]: borra poniendo en el buffer (cortar) ([dd] borra una línea, …)
[y]: copiar dejando en el buffer (copiar) ([yy]…)
[p]: poner el contenido del buffer en el texto (pegar)
[r]: reemplazar un carácter (replace)
[u]: deshacer el último cambio (undo)
[Ctrl+r]: rehacer
[.]: repetir el último comando.
– Búsqueda:
• Similar a less ([/patron], [?patron], [n], [N])
Sistemas Informáticos
25
Contenido de Ficheros (Comandos)
• Comando vi: (Continuación)
– Reemplazo:
• [%s/old/new/g]]: reemplazar el string old por new en todo el texto.
– Salida:
•
•
•
•
[:w]: guardar los cambios, sin salir.
[:q]: salir (falla si hay cambios sin guardar).
[:q!]: salida forzada, los cambios sin guardar se pierden.
[:wq]: guardar y salir (equivalente a [:x]
Sistemas Informáticos
26
13
Índice
•
•
•
•
•
•
•
•
•
•
•
La shell
Sistema de Ficheros
Contenido de Ficheros
“Atajos”
Gestión del usuario
Variables de entorno
Redirección / Canalización
Shell Scripting
Gestión básica de procesos
Servicios de red
Otro comandos útiles para la Administración
Sistemas Informáticos
27
Atajos
• Algunos “trucos” que harán tu vida un poco más fácil…
• Los comandos/ficheros/paths se pueden autocompletar
– Tabulador (en bash).
– Cuando no pueda resolver completamente, muestra todas las alternativas.
• Movimiento del cursos por la línea de comandos (prompt)
– [Ctrl+a]: ir al comienzo de línea. [Ctrl+e]: ir a fin de línea.
– Cursor Left/Right: moverse por la línea (carácter a carácter).
– [Ctrl left/right]: me muevo palabra a palabra.
• Navegando por el historial de instrucciones:
– La forma más sencilla: Cursor Up/Down
Sistemas Informáticos
28
14
Atajos
• El comando history
– Los comandos utilizados en nuestra sesión se almacenan. Con este comando
podemos repasar lo hecho, repetir órdenes y editarlas.
• !!: volver a ejecutar el último comando de la lista (comando anterior)
• !letras: volver a ejecutar el último comando que se ejecutó comenzando con esas letras
• !number: ejecutar el comando de la lista con dicho número.
– Se puede manejar el tamaño de la lista ($HISTSIZE en bash) (set)
• Utilización de comodines:
– Algunos caracteres no se pueden utilizar en el nombre de un fichero
•
•
•
•
•
“*”: sustituir todos los caracteres: $ ls -l pa* //$ rm -fr * (oops!!)
“?”: sustituir un solo carácter: $ rm pepe? (borra pepea, pepeb, pepec, etc.)
“[]”: sustituir un solo carácter enumerado: $ rm pepe[12] (borra pepe1 y pepe2)
“{}”: para la expansión: $rm p{e,i}pe (borra pepe y pipe)
“~”: hace mención al directorio $HOME
– ¿Y si necesito buscar el carácter * en un fichero? (\ o “”)
Sistemas Informáticos
29
Índice
•
•
•
•
•
•
•
•
•
•
•
La shell
Sistema de Ficheros
Contenido de Ficheros
“Atajos”
Gestión del usuario
Variables de entorno
Redirección / Canalización
Shell Scripting
Gestión básica de procesos
Servicios de red
Otro comandos útiles para la Administración
Sistemas Informáticos
30
15
Gestión del Usuario
• En UNIX, los usuarios organizan en grupos de usuarios.
• los ficheros /etc/passwd y /etc/group contienen información sobre
todos los usuarios y grupos del SO.
– Además del acceso al sistema, en estos ficheros se gestionan los permisos de
usuario y algunos aspectos básicos del usuario (directorio home, shell).
– Gestión de grupos: Útil para restringir el acceso a ciertas partes del sistema.
– Por cada usuario, el fichero passwd contiene una línea con el formato:
usuario:x:505:705:Usuario:/home/usuario:/bin/bash
Nombre completo
GID: Id de grupo
Directorio personal y
shell asociada
UID: Id de usuario, número único.
Clave cifrada (password) -> /etc/shadow
Nombre de usuario
31
Sistemas Informáticos
Gestión del Usuario
• El fichero /etc/shadow gestiona las contraseñas.
– Por cada usuario, el fichero shadow contiene una línea con el formato:
root:$1$mFxrUn4P$0/5y9xxxBnfUXma.6hhc2.:15742:0:99999:7: : :
Clave cifrada
Nombre de usuario
Último cambio de password
(días desde 1 enero 1970)
Número de días mínimo
entre cambios de passwd
Número de días máximo
entre cambios de passwd
Sistemas Informáticos
32
16
Gestión del Usuario (Comandos)
• Comando whoami: presenta en pantalla el nombre del usuario que lo ejecuta
• Comando who: muestra los usuarios conectados al sistema en ese momento
• Comando passwd: se utiliza para cambiar la contraseña del usuario
– Sintáxis: $ passwd [usuario]
• Si no se especifica nombre de usuario se cambia el del actual.
• Mecánica: Introducir passwd antiguo → Introducir passwd nuevo → repetir passwd nuevo
• Comando finger: muestra el estado de un usuario en un sistema.
– Sintáxis: $ finger usuario@maquina
• Muestra info del usuario , tiempo de sesión, tiempo de inactividad, correo, fichero .plan
• Comando write: envía mensaje de texto a la terminal de un usuario conectado
– Sintáxis: $ write user [tty]
– Comando complementario wall: write to all (a todos los usuarios conectados)
– Comando talk usuario@maquina: establece comunicación completa (~IRC)
Sistemas Informáticos
33
Gestión del Usuario
• Basado en grupos y usuarios, UNIX implementa un mecanismo de
protección por permisos para el sistema de ficheros (multiusuario).
• Cada fichero (y directorio) posee su propietario y sus permisos de
acceso.
• Los modos de acceso (permisos) son:
– Lectura (r): permite acceder al contenido (listar contenido de un directorio)
– Escritura (w): permite modificar contenido (crear/borrar/mover ficheros)
– Ejecución (x): ejecutar el fichero (acceder al directorio con cd)
• Se pueden configurar distintos modos de acceso, 3 grupos:
– Usuario: propietario del fichero
– Grupo: resto de usuarios del grupo del propietario
– Resto: todos los usuarios del sistema
Sistemas Informáticos
34
17
Gestión del Usuario
• Los usuarios convencionales solo tienen permisos de escritura en su
directorio $HOME: /home/<usuario>
– También en directorios temporales (como /tmp).Basado en grupos y usuarios,
UNIX implementa un mecanismo de protección por permisos para el sistema
de ficheros (multiusuario).
• Los usuarios preferentes (administradores) tienen acceso ilimitado a
todo el sistema de ficheros (peligro!!)
• Información de permisos con [ls –l]:
grupo
propietario
resto
grupo
usuario
-rwxr--r-- 1 pablo users 2014 Apr 13 14:11 file1
Sistemas Informáticos
35
Gestión del Usuario (Comandos)
• Comando chmod: modifica los permisos de un fichero o directorio.
– Sintáxis: $ chmod [ugo] [+-] [rwx] [fichero o directorio]
•
•
•
•
Opción –R: recursivo
Ejemplo: limitar el acceso a mi $HOME a todos los usuarios:
$ chmod –R g-rwx, o-rwx $HOME
Los permisos puedes ser codificados en octal/binario: chmod –R 700 $HOME
• Comando chown/chgrp: modifica el UID/GID de un fichero.
– Sintáxis: $ chown [-R] nuevo_usuario fichero
• Comando umask: altera los permisos asignados por defecto a nuevos ficheros.
– Sintáxis: $ umask [inhibition code]
• Establece qué bits se pondrán a 0 al crear el fichero (x siempre a 0 en ficheros).
• Ejemplo: $umask 022 -> los ficheros creados poseerán permisos 644 (rw-r--r--)
• Para ejecutar un fichero, permiso de ejecución activado (x).
Extensiones (.exe) NO necesarias.
Sistemas Informáticos
36
18
Índice
•
•
•
•
•
•
•
•
•
•
•
La shell
Sistema de Ficheros
Contenido de Ficheros
“Atajos”
Gestión del usuario
Variables de entorno
Redirección / Canalización
Shell Scripting
Gestión básica de procesos
Servicios de red
Otro comandos útiles para la Administración
Sistemas Informáticos
37
Variables de Entorno
• Conjunto de variables de una aplicación con un valor predeterminado. Su valor se obtiene así: $ echo $VARIABLE
• Permiten configurar ciertos aspectos del intérprete de comandos.
• Dos tipos:
– Variables de usuario: propias de nuestra shell (internas).
• Se pueden listar con el comando env.
– Variables de sistema: generales a todas las shell y otros programas y usuarios
• Se pueden listar con el comando set.
• Las variables de entorno son modificables
– csh-like shells (csh, tcsh, zsh): setenv/unsetenv
• Ejemplo: $ setenv PATH /usr/local/bin:/bin:/usr/bin
– sh-like shells (sh, ksh, bash): export
• Ejemplo: $ export PATH=/usr/local/bin:/bin:/usr/bin
– Al salir de la sesión todas las variables alteradas se pierden.
Sistemas Informáticos
38
19
Variables de Entorno
• Ficheros de configuración de la shell
– Objetivo: dar valor a las variables de entorno. Permiten alterar el aspecto y
comportamiento de la shell de forma permanente (evitan perder los cambios
al salir de la sesión).
– Secuencia de carga bash (el último fichero sobreescribe al resto)
• /etc/bashrc → /etc/profile → $HOME/.bashrc → $HOME/.bash_profile
• Es diferente para cada tipo de shell
– Ejemplo de fichero (bash):
El comando alias permite
redefinir un comando
(shell más amigable)
# .bashrc
# User specific aliases and functions
alias rm='rm -i'
alias cls="clear"
alias cd..="cd .."
# Source global definitions
if [ -f /etc/bashrc ]; then
. /etc/bashrc
fi
alias ls="ls --color -shaF"
Sistemas Informáticos
39
Variables de Entorno
• Algunas variables internas importantes:
– $PATH: establece cuales son los directorios en los que se encuentran los
ejecutables del sistema. Al ejecutar comandos la shell busca en esos
directorios.
– $HOME: directorio raíz del usuario actual.
– $TERM: Tipo de terminal desde el que estamos conectados al sistema.
– $SHELL: Ejecutable de la shell de usuario. P. Ej. /bin/bash
– $DISPLAY: Establece cual es el servidor X al que serán enviados los programas
en modo gráfico.
– $TZ: Zona horaria. Influye en el formato de tiempo que nos retorna el
comando date. Cualquier cambio en nuestros ficheros se ajusta a la zona
horaria que marque esta variable
– $*****: En la página de manual de cada shell tenemos el repertorio completo
de sus variables de entorno.
Sistemas Informáticos
40
20
Índice
•
•
•
•
•
•
•
•
•
•
•
La shell
Sistema de Ficheros
Contenido de Ficheros
“Atajos”
Gestión del usuario
Variables de entorno
Redirección / Canalización
Shell Scripting
Gestión básica de procesos
Servicios de red
Otro comandos útiles para la Administración
41
Sistemas Informáticos
Redirección / Canalización
• En linux, siempre hay 3 ficheros (recuerda, dispositivos tratados
como ficheros) abiertos por defecto: stdin (teclado), stdout
(pantalla) y stderr (pantalla tb.).
• Por defecto:
proceso
stdin
stderr
stdout
• Estos ficheros pueden ser redireccionados.
Sistemas Informáticos
42
21
Redirección / Canalización
• Definición: La redirección consiste en la captura de la salida de un
fichero/comando/programa para enviarlo como entrada a otro
fichero/comando/programa.
• Redirección de entrada estandar: no utilizamos el teclado como
entrada.
– Sintáxis: $ sort < item
sort
item
stdout
•
• Redirección de salida estandar: salida a fichero (no a pantalla)
– Sintáxis: $ cat > item (Concatenado: $ cat >> item)
stdin
cat
item
43
Sistemas Informáticos
Redirección / Canalización
• Canalización: Permite la concatenación de dos o más comandos,
donde la salida de un comando es redirigida para ser usada como
entrada del siguiente.
– Ejemplo: cat < /etc/passwd | grep root | cut –d : -f 7 > root_shells
passwd
cat
grep
cut
root_shells
• Concatenado: Concatenar comandos en una misma línea de
terminal.
– Ejemplo: ls –l; cd .. ; ls –l (también así: ls –l && cd .. && ls –l)
– Ejecución anidada: (ls –l; cd ..); ls –l ¿Diferencia con lo anterior?
Sistemas Informáticos
44
22
Índice
•
•
•
•
•
•
•
•
•
•
•
La shell
Sistema de Ficheros
Contenido de Ficheros
“Atajos”
Gestión del usuario
Variables de entorno
Redirección / Canalización
Shell Scripting
Gestión básica de procesos
Servicios de red
Otro comandos útiles para la Administración
45
Sistemas Informáticos
Shell Scripting
• Agrupación de comandos que permite ejecutar en un solo paso una
tarea de mayor complejidad.
• En su forma más sencilla puede ser un fichero de texto con un
comando por línea, pero puede ser de mayor complejidad
– Sentencias condicionales, bucles, funciones,…
• Un script puede crear una sub-shell independiente a la que la lanzó
– $ bash macro
• Su estructura depende de la shell que estemos empleando
• Ejemplo: #!/bin/sh
echo “hoy es dia:”
date
echo “que tengas un buen dia”
– La primera línea indica qué intérprete ejecutará el resto del script
Sistemas Informáticos
46
23
Shell Scripting
• Ejecución:
– Si el fichero no tiene permisos de ejecución: $ bash script
– Otra forma, modificando los permisos: chmod a+x script; ./script
• Entrada/Salida:
– Lectura desde teclado con el comando read.
– Escritura en pantalla con el comando echo.
– Variables:
•
•
•
•
•
•
•
$1 - 9: Variables de parámetro posicionales (acompañan a la llamada al script)
$0: nombre de la macro (del script)
$#: número de argumentos pasados.
$?: Código de salida del último comando ejecutado (correcto=0)
$$: PID asociado a la macro.
$*: string que contiene todos los argumentos pasados (empezando en $1)
${VAR}: Variable de usuario
Sistemas Informáticos
Shell Scripting
• Secuencias de control:
–
–
–
–
# ejecutar ./script [nombre]
#!/bin/sh
echo “Tu apellido?”
read surname
echo “Hola, $1 $surname”
Secuencia if then else
Secuencia case
Secuencia for
Secuencia while
47
if [ who | grep -s pepe > /dev/null ]
then
echo “pepe esta en el sistema”
else
echo “no esta”
fi
rental=$1
case $rental in
“car”) echo “alquilo coche”;;
“moto”) echo “alquilo moto”;;
“bus”) echo “alquilo bus”;;
esac
for archivo in ‘ls’
do
touch ${archivo}
echo “archivo ${archivo} update”
done
while [${CANT_USUARIOS} -le 1 ]
do
echo “sin jugadores suficientes”
sleep 1
done
Sistemas Informáticos
48
24
Índice
•
•
•
•
•
•
•
•
•
•
•
La shell
Sistema de Ficheros
Contenido de Ficheros
“Atajos”
Gestión del usuario
Variables de entorno
Redirección / Canalización
Shell Scripting
Gestión básica de procesos
Servicios de red
Otro comandos útiles para la Administración
49
Sistemas Informáticos
Gestión básica de procesos
• Proceso: secuencia de instrucciones y datos que residen en
memoria y que realizan una tarea asignada.
• Identificación única (numérica) en el sistema: PID
• Fundamentalmente 3 segmentos de memoria: código/datos/stack
• Estados de un proceso:
4
interrupción y
retorno
llamada al sistema
o interrupción
Ejecución en
modo usuario
1
dormir
2
retorno
despertar
orden de ejecución
(planificador)
Ejecución en
modo supervisor
3
Sistemas Informáticos
durmiendo
Listo para
ejecución
50
25
Gestión básica de procesos
• Los procesos poseen una jerarquía similar a la del sistema de
ficheros (árbol). Proceso “raiz”: init
– Cada proceso (excepto init) posee un proceso padre.
– El kernel (raiz) tiene control absoluto sobre todos los procesos del sistema.
• Un proceso está unívocamente identificado por su PID.
– Solo su propietario puede actuar sobre él (UID).
• La shell es un proceso, dependiente del terminal en el que está.
– Procesos en foreground (atendido): inutiliza la shell hasta finalizar
• $ ls -R &>/dev/null
– Procesos en background (desatendido): no inutiliza la shell
• $ ls -R &>/dev/null &
– Los procesos pueden moverse entre foreground y background:
• [Ctrl+z]: el proceso en foreground se para (suspende su ejecución)
• bg pasa el proceso a modo background y fg lo devuelve a modo foreground.
51
Sistemas Informáticos
Gestión básica de procesos
• /proc: pseudo-sistema de ficheros asociado a los procesos.
– Es empleado como interfase a las estructuras de datos del kernel asociado a
los procesos.
– Ejemplo de contenido (un directorio por proceso):
[ root si /tmp ] ls /proc/
1
211
2428 2490 2600
1076 212
2439 2497 2603
1153 213
2440 2512 2605
1620 2318 2459 2521 2618
1687 2329 2465 2532 2691
173
2339 2468 2566 2719
2
2397 2470 2594 3
2099 2410 2483 2596 39
210
2420 2489 2598 4
41
42
4769
4772
5
5280
5282
5387
6
7
741
742
774
775
958
acpi
asound
buddyinfo
bus
cgroups
cmdline
cpuinfo
crypto
devices
diskstats
dma
driver
execdomains
fb
filesystems
fs
ide
interrupts
iomem
ioports
irq
kallsyms
kcore
key-users
kmsg
kpagecount
kpageflags
loadavg
locks
meminfo
misc
modules
mounts
mpt
mtrr
net
pagetypeinfo
partitions
sched_debug
scsi
self
slabinfo
stat
swaps
sys
sysrq-trigger
sysvipc
timer_list
timer_stats
tty
uptime
version
vmallocinfo
vmstat
zoneinfo
– Y en cada directorio…
[ root si /tmp ] ls /proc/2719
attr
clear_refs
cpuset
auxv
cmdline
cwd
cgroup coredump_filter environ
exe
fd
fdinfo
io
limits
loginuid
maps
mem
mountinfo
mounts
mountstats
net
oom_adj
oom_score
pagemap
root
sched
sessionid
smaps
stat
statm
status
task
wchan
• fd: Ficheros abiertos por el proceso.
• maps: Rangos de memoria física asociada al proceso.
• stat: estado actual del proceso: PID, PPID, utime, etc.
Sistemas Informáticos
52
26
Gestión básica de procesos
• Comando top: monitorización de procesos en tiempo real.
– En ejecución, podemos utilizar comandos interactivos:
• k: matar un proceso indicando su PID.
• u: mostrar solo los procesos de un usuario específico.
• Comando ps: reporta información sobre procesos activos.
– Sintáxis: ps -<opciones>
• Opción -e: muestra todos los procesos.
• Opción -u user: muestra los procesos de un usuario concreto
• Opción -f: full-format listing.
• Comando kill: envío de señales a un proceso
– Sintáxis: kill -<opciones> <pid>
• Ópción -s: Cambia el tipo de señal a enviar (-s 9 = -SIGKILL = -9)
• Comando pstree: relaciones de herencia entre procesos.
Sistemas Informáticos
53
Índice
•
•
•
•
•
•
•
•
•
•
•
La shell
Sistema de Ficheros
Contenido de Ficheros
“Atajos”
Gestión del usuario
Variables de entorno
Redirección / Canalización
Shell Scripting
Gestión básica de procesos
Servicios de red
Otro comandos útiles para la Administración
Sistemas Informáticos
54
27
Servicios de Red
• Navegador web lynx:
– Soporta multitud de tecnologías que se anuncian a bombo y platillo en otros
navegadores.
– Carga muy poco el sistema.
– Muy configurable (lynx.cfg)
• Cliente de IRC (chat)
– ircii, sirc, …
• Lector de correo y grupos de news pine:
– Incluido en todas las distribuciones (excepto Debian)
– Muy potente: Soporte LDAP, SSL, etc. Filtros, Configuraciones móviles
Sistemas Informáticos
55
Servicios de Red (Comandos)
• Comando telnet: acceso remoto al sistema.
– Requiere telnetd corriendo en la máquina remota
– Autentificación similar a consola.
– Limitada a entornos próximos.
• Comando rlogin: acceso remoto
– Requiere servicios rsh
– Autentificación más versatil
– Fichero .rhost
• Comando ssh: Comunicación segura, encriptación clave pública/privada.
• Comando mail: $ mail usuario@sistema
• Comandos ftp y scp: transferencia de ficheros.
Sistemas Informáticos
56
28
Índice
•
•
•
•
•
•
•
•
•
•
•
La shell
Sistema de Ficheros
Contenido de Ficheros
“Atajos”
Gestión del usuario
Variables de entorno
Redirección / Canalización
Shell Scripting
Gestión básica de procesos
Servicios de red
Otro comandos útiles para la Administración
Sistemas Informáticos
57
Otros Comandos…
• Comando sed: realiza transformaciones de texto sobre un fichero de entrada.
– Sintáxis: sed -<opts> ‘[instrucción]‘ [archivo]
• Opción -i: in place, el archivo pasado como argumento se sobreescribe.
– Algunas instrucciones útiles:
• i: insertar línea antes de la actual
• p: imprimir línea actual en stdout
• s: sustituir cadena en línea actual
– Ejemplos:
• sed -i ‘s/Pepe/Manolo/g’ *.txt sustituye pepe por manolo en todos los ficheros txt
• sed ‘/cadena/ s/vieja/nueva/g’ file > salida solo reemplazo en las líneas que contengan
cadena.
• sed ‘2,3 p’ * imprime las lineas 2 y 3 de todos los archivos
• sed -i ‘/cadena/d’ archivo borrar cadena del fichero archivo.
Sistemas Informáticos
58
29
Otros Comandos…
• Comando xargs: permite ejecutar un mismo comando sobre una lista de
argumentos separados por espacios (o líneas).
– Sintáxis: [Comandos…] | xargs -<options> [comando]
• Opción -i:
• Opción -n: agrupa los items
– Ejemplo:
• $ ls *.c | xargs -i gcc -c {}
• $ ps -ef | grep “pepito” | awk ‘{print $2}’ | xargs renice +10
– -i y -n operan de forma conflictiva, el último gana:
• $ echo a b c d e f | xargs -n3 -i echo antes {} despues
– antes {} despues a b c
– antes {} despues d e f
Sistemas Informáticos
59
Otros Comandos…
• Lenguaje de programación awk: orientado a procesado de ficheros.
– Orientado a línea (el fichero se analiza línea por línea)
– El formato básico de un programa awk es: pattern { action }
• pattern especifica cuándo llevar a cabo la acción.
• Si la condición de pattern retorna true, en esa línea se lleva a cabo la acción.
• Si pattern se deja vacío, la acción se lleva a cabo en todas las líneas.
– Variables en awk
•
•
•
•
•
$N: variable que contiene el campo N de la línea (separador de campos por defecto=espacio)
$0: contiene la línea entera
FS: dicta el tipo de separador de campos (opción -F)
NF: contiene el número de campos de una línea
NR: número de línea en el que estamos.
– Ejemplos:
• awk -F: ‘{if($2==“”) print $1”: no password!”}’ < /etc/passwd
• awk ‘{ if(NR>100) print NR, $0}’ < fichero
Sistemas Informáticos
60
30