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
© Copyright 2024