1.- Sesiones Linux passwd Cambia la contraseña exit Abandona el sistema ctrl + d Para abandonar el sistema who Devuelve información de los usuarios que hay conectados en el sistema whoami Devuelve información del usuario con el que nos hemos conectado. date Devuelve la fecha y la hora del sistema cal Muestra un calendario logname Devuelve el nombre de usuario con el que se ha accedido al sistema uname Devuelve información sobre la versión del sistema operativo uname – a Devuelve la información sobre la versión y sobre la revisión de la versión tty Devuelve la ruta de nuestro terminal /dev/tty1 echo Visualiza un texto alfanumérico o el contenido de una variable de entorno echo Hola echo $variable banner Visualiza el texto como si fuera un cartel banner $variable banner Hola clear Limpia la pantalla man Muestra información sobre un comando (ayuda) man who 2.- El shell Metacaracteres (caracteres comodín) $ Prompt. > Prompt secundario. Nos indica que debemos finalizar la instrucción porque está incompleta ? Sustituye un carácter * Sustituye uno o varios caracteres. Puede sustituir a ninguno [ ] Sustituye el rango de valores que se encuentra incluido entre corchetes ls carta[123] ls carta[a-z] Agrupamiento de órdenes ; Ejecuta secuencialmente varias órdenes ls;who;date && Ejecuta una orden sólo si la orden anterior ha tenido éxito en su ejecución || Ejecuta una orden sólo si la orden anterior no ha tenido éxito en su ejecución & Ejecuta una orden en segundo plano. Caracteres con significado especial \ Se antepone al carácter que no queremos que interprete el shell. Permite eliminar el significado de un carácter (permite escapar un carácter) echo \$a (muestra $a) ' ' (comillas simples) El shell no interpreta nada de lo que hay entre éstas comillas echo '$a' (muestra $a) " " (comillas dobles) Evita la interpretación de los caracteres incluidos en ellas excepto el dólar ($), las comillas dobles (“), las simples (‘) y la barra invertida (\), que sí los interpreta ` ` (acentos graves) Provoca la ejecución anticipada de una orden orden cp `ls` /home/jperez/backup (ejecuta primero ls y el resultado se lo entrega a cp) 3.- Archivos y directorios ls lista los directorios y ficheros que hay en el directorio activo. ls –l Muestra información adicional como máscara (tipo de fichero y permisos), número de enlaces, propietario, grupo de usuarios, tamaño, fecha y hora de la última modificación y nombre. ls –a Lista los ficheros y directorios del directorio activo incluyendo el directorio en el que nos encontramos, el directorio padre del directorio activo y los ficheros ocultos. ls –R Muestra una lista recursiva de los ficheros y directorios que cuelgan del directorio activo. cd Para cambiar de directorio. Sin argumentos nos sitúa en el directorio HOME. cd /home/alumno pwd Devuelve la ruta absoluta del directorio activo (en el que nos encontramos) mkdir Crea directorios rmdir Borra directorios 4.- Manipulación de archivos cp archivo_origen archivo_destino Para copiar ficheros cp –i Pide confirmación en caso de sobrescritura de un fichero ln archivo_origen archivo_destino Para crear enlaces de un fichero ln –i Pide confirmación en caso de sobrescritura de un fichero mv archivo_origen archivo_destino Para renombrar o mover ficheros. mv –i Pide confirmación en caso de sobrescritura de un fichero rm archivo Borra un fichero cat fichero Para ver el contenido de un fichero cat > fichero Para crear un fichero. Para salir de la edición Ctrl+D cat >> fichero Para añadir texto al contenido de un fichero. Para salir de la edición Ctrl+D more fichero Muestra el contenido de un fichero paginándolo También cat ruta_fichero | more pg fichero Muestra el contenido de un fichero paginado. Pagina con la barra espaciadora. tail –5 fichero Muestra las 5 últimas líneas de un fichero. Sin opciones (-5) muestra las 10 últimas líneas tail -n +5 fichero Muestra a partir de la línea 5 del fichero hasta el final head -5 fichero Muestra las 5 primeras líneas de un fichero sort fichero Muestra el contenido de un fichero ordenado en orden alfabético nl fichero Muestra el contenido de un fichero con sus líneas numeradas wc Devuelve la cantidad de palabras, lineas o caracteres que contiene un fichero wc -w fichero wc -l fichero wc -c fichero grep Permite buscar texto en un fichero: grep texto fichero touch fichero Para crear un fichero que no tiene contenido alguno cut -opciones fichero Corta columnas de un fichero de texto cut -f1 -d":" /etc/passwd cut -c10-50 carta gzip -opciones archivos Comprime el contenido de los ficheros. El nombre del fichero comprimido tendrá extensión .gz y deberá descomprimirse antes de poder usarse. Para comprimir más de un archivo, o directorios completos, deberá utilizarse además el comando tar. -d: Descomprime el archivo (se corresponde con el comando gunzip). Ejemplos: gzip fichero gzip -d fichero.gz (gunzip fichero.gz). tar -opciones paquete archivos Agrupa uno o más archivos en un paquete para después comprimirlo, copiarlo, ... Es una instrucción compleja y con gran cantidad de opciones, entre ellas: -f La información generada por el proceso se escribe en el fichero especificado en vez de mostrarse por pantalla. -c Crea un nuevo archivo de tipo tar. -r Agrega archivos a un paquete existente. -t Muestra el contenido de un paquete. -u Agrega archivos al paquete sólo si estos son más recientes que los existentes. -x Extrae o desempaqueta archivos de un paquete. -z Comprime con gzip el paquete generado. -j Comprime con bzip2 el paquete generado. -v Proporciona los nombres de los archivos procesados. Los archivos creados mediante tar tienen extensión .tar. Cuando el archivo tar se comprime con gzip la extensión es .tar.gz y si se comprime con bzip2 será .tar.bz2. Ejemplos: tar -cvzf paquete.tar directorio (empaqueta y comprime) tar -xvzf paquete.tar (desempaqueta y descomprime) tar -tf paquete.tar (muestra el contenido) split -b nnn fichero trozos Corta el fichero en porciones de nnn bytes que se llamarán: trozosaa, trozosab, trozosac, ... El fichero se puede unir de nuevo usando: cat trozosaa trozosab ... > fichero o cat trozos* > fichero vi fichero Editor de ficheros de texto < Redireccionamiento de entrada: redireccionamos los datos de entrada que necesita una orden mail jperez < carta > Redireccionamiento de salida: redireccionamos los datos que produce una orden date > fichero_fecha >> Redirección de salida añadiendo who >> fichero_fecha 2> Redirecciona los errores a un fichero ls directorio 2> fichero_errores &> redirecciona la salida y los errores ls directorio &> fichero_salida | Pipeline: encadena la salida de una orden con la entrada de otra who |grep asir102 5.- Permisos ls -l Muestra permisos de ficheros chmod Permite cambiar los permisos de un archivo o de un directorio Sintaxis no númerica chmod u+r carta (añade permiso de lectura para el dueño) chmod g-w carta (quita permiso de escritura el grupo) chmod o=x carta (establece solo el de ejecución para otros) Sintaxis numérica: r(4), w(2) y x(1). Se suman los que tengan permiso del usuario (1º), del grupo (2º) de los demás (3º) chmod 741 carta (7 = 4+2+1; 4 = 4+0+0; 1 = 0+0+1) umask máscara Establece la máscara de permisos chown nuevo_dueño fichero Cambia el propietario de un fichero chgrp nuevo_grupo fichero Cambia el grupo asociado a un fichero newgrp nombre_grupo Cambia de grupo activo de un usuario. Los nuevos ficheros creados se asociarán a este grupo newgrp Sin argumentos devuelve al usuario al grupo activo inicial al que se asoció el usuario su nombre_usuario Para cambiar de usuario. Es como iniciar una nueva sesión adduser usuario Crea usuario deluser usuario Borra usuario addgroup grupo Crea grupo delgroup grupo Borra grupo Importante: 1. Por razones obvias el supervisor ostenta todos los permisos y derechos de acceso a cualquier archivo o directorio del sistema. En el peor de los casos será el único que podrá solventar una situación desesperada. No está sometido al sistema de protección de archivos de UNIX. 2. Los permisos de acceso se suelen configurar de forma que se tenga un control total sobre los ficheros propios, menor sobre los del resto de componentes del grupo del propietario, muy limitado sobre el resto, y nulo o mínimo sobre los archivos del sistema, que deben tener su acceso restringido al supervisor, quien debe asignar los permisos imprescindible para el uso de órdenes a los usuarios apropiados. Los permisos son asignados o modificados exclusivamente por el propietario (o el supervisor). 3. El tipo de fichero (ordinario, directorio, especial, etc.) es utilizado por el sistema para el tratamiento del archivo. Ciertas órdenes, como cd, precisan que el argumento sea de tipo directorio mienta otras sólo actúan sobre archivos ordinarios. 4. Aunque eliminemos todos nuestros derechos sobre un archivo del que somos propietarios, podemos volver a recuperarlos con la orden chmod. El único caso en que perdemos definitivamente el control es el transferir su propiedad a otro usuario con la orden chown. A partir de ese momento es el nuevo propietario el que puede modificar los atributos de acceso. 5. Para ejecutar un archivo es preciso poseer permiso de ejecución, no sólo sobre dicho archivo, sino sobre todos los directorios de la ruta o "pathname" especificada para acceder a él. El código numérico de permisos que se vayan a eliminar con la orden umask se refiere siempre a la máscara inicial, aunque ésta ya hubiese sido modificada por ejecuciones previas de umask. Si se especifican más permisos para eliminar que los inicialmente asignados, se eliminan todos. Para restaurar la máscara inicial basta ejecutar la orden umask 000. La orden umask si argumentos nuestra la máscara activa (con una cifra inicial más). 6. Al transferir la propiedad de un archivo a otro usuario conviene previamente mover o copiar dicho archivo a su directorio de trabajo u otro donde el nuevo propietario disfrute de los permisos pertinentes. Un usuario puede pertenecer a varios grupos pero en cada momento sólo tiene activada su pertenencia a uno de ellos. El concepto de grupo asociado a un archivo se refiere en realidad al resto de los usuarios del grupo, excluido el propietario, que incluso puede no pertenecer al grupo. Análogamente, en el "resto" se suponen excluidos el propietario y los usuarios del grupo asociado al archivo. Al crear un archivo, el propietario asignado es el usuario que lo crea, y el grupo, su grupo activo. 7. El sistema reconoce ciertos usuarios especiales, como el controlador de impresora lp. Si ese usuario lp no tiene asignado el pertinente permiso de ejecución sobre los directorios incluidos en la ruta o pathname del archivo, no podrá acceder a él y por tanto no podrá imprimirlo. Por ello no siempre es aconsejable eliminar todos los permisos a resto de usuarios. Si un usuario pretende cambiar su grupo activo por otro al que no pertenece, UNIX contesta cortésmente "Sorry". 8. La orden newgrp sin argumentos devuelve al grupo activo inicial al que se nos asocia en el proceso login. 9. La orden su sin argumentos permite acceder al usuario root (si conociéramos su clave de acceso). El usuario root es el administrador del sistema o superusuario. La orden su abre una nueva subsesión en UNIX. Por ello, para regresar al identificador inicial no se debe volver a usar su sino la orden exit. La orden su obliga a cambiar de nombre de usuario pero no de directorio y puede que con ello perdamos el acceso a los archivos que antes controlábamos. Si se desea cambiar las características de la sesión para disponer de la configuración asociada al nuevo usuario como si se hubiera accedido a él con un proceso login, hay que utilizar la sintaxis su -newuser (con guión delante del nuevo identificador). 6.- Procesos. Estado y control de procesos ps Lista los procesos que hay en curso (asociados al usuario). El terminal asociado.El tiempo de CPU utilizado. ps –e Lista todos los procesos que están en ejecución en la CPU (del servidor). ps –ef Muestra información más completa por cada proceso inclido el PPID. & Ejecuta una orden en segundo plano devolviendo el control al terminal $ Variable de entorno, contiene el PID del proceso que se ejecuta en ese momento ! Variable de entorno, guarda el PID del último proceso que se ejecutó en segundo plano 7.- Procesos. Planificación at hora fecha [ + incremento ] [< lista_trabajos ] Ejecución diferida de órdenes en el momento especificado. at 11:00 Aug 17 Entre la hora y la fecha podemos escribir: am (mañana) o pm (tarde) Fecha: mes y día (May 12) mes, día y año ( May 12 2004) día de la semana ( Monday) días especiales (today, tomorrow) Hora: now noon midnight Incremento: + 3 hours minutes days weeks months years at –l Vemos el número asociado a cada trabajo diferido. atrm nn Elimina un trabajo de la cola de trabajos diferidos (nn es el número del trabajo) batch [ < lista_trabajos ] Ejecuta una orden diferida (de la lista de trabajos) cuando la carga del sistema lo permita (copias de seguridad por ejemplo). Se ejecutan en segundo plano. nice –n orden Modificar el nivel de prioridad en la ejecución de órdenes o programas. Nota: prioridad por defecto es 10. nice –5 deja la prioridad en 15 (le suma 5) nice –-5 deja la prioridad en 5 (le resta 5) El rango de prioridad va de -20 (prioridad más alta) a 19 (más baja) nohup prog & Esta orden inhibe la terminación de un proceso ante la salida del sistema. Ejecuta el programa en segundo plano y termina con él aunque se salga del sistema. crontab Programación de tareas periódicas. Cada tarea ocupa una línea con seis valores separados con espacios. (Los minutos, Las horas, El día del mes, El mes, El día de la semana (Un nº del uno al seis. El 0 equivale al Domingo) Ejemplo: 0 11 15 * * orden (a las 11:00 horas del día 15 de cada mes) Ejemplo: 0 */3 1 * * orden (cada 3 horas del día 1 de cada mes) Ejemplo: 0 * 1-15 * * orden (los 15 primeros días de cada mes) crontab –e Edita el archivo de órdenes actual del crontab crontab archivo Establece el archivo de especificaciones para cron crontab –l Muestra el archivo de órdenes actual crontab –r archivo Borra el archivo de órdenes actual NOTA: la salida de las órdenes que se programen con at o crontab deben ser redirigidas a ficheros de log NOTA: se puede controlar qué usuarios pueden o no pueden usar los servicios de cron. Esto se logra a través de los siguientes archivos (es necesario crearlos): /etc/cron.allow /etc/cron.deny Para impedir que un usuario utilice el comando crontab, basta con agregar su nombre de usuario al archivo /etc/cron.deny y para permitirle su uso se agrega al /etc/cron.allow; si por alguna razón se desea negar el uso de cron a todos los usuarios, entonces se puede escribir la palabra ALL al inicio de cron.deny 8.- Procesos.Comunicación entre procesos | pipe, encauza procesos orden | tee fichero genera una salida paralela en un fichero especificado. La salida estándar sigue produciéndose y además se envía una copia de la misma al fichero especificado para su posterior análisis orden | tee -a fichero Añade al fichero la salida de la orden kill -n pid envía una señal a un proceso. El valor n es el número de señal; pid es el identificador del proceso. Señales: 0 - Para salir de un shell 1 - Deja un terminal inactivo (colgado). 2 - Para enviar una interrupción (ctrl.+c) al proceso. 9 - Para matar a un proceso (no puede ignorar la señal). 15 - (señal por defecto) Muerte del proceso. Sin embargo algunos no mueren con esta señal. 9.- Comunicaciones write usuario Para enviar un mensaje a otro usuario. Hace falta que el usuario destino esté conectado y tenga activada la opción mesg y write usuario escribe mensaje a usuario write usuario < mensaje (texto del mensaje sale del fichero) write usuario tty7 Si se quiere detallar a qué terminal va el mensaje (en el caso de que el usuario esté conectado en varios) mesg Muestra el estado actual de la opción de recepción de mensajes mesg (sin opciones) Activa la recepción de mensajes (acepta los mensajes que nos envían con write). mesg y Activa la recepción de mensajes (acepta los mensajes que nos envían con write). mesg n Desactiva la recepción de mensajes (rechaza los mensajes que nos envían con write). NOTA: mesg cambia el permiso de escritura del fichero terminal (tty7 por ejemplo) para todos los usuarios. wall Escribe un mensaje en el muro (mensaje a todos los usuarios conectados al sistema). El mensaje va precedido del texto Broadcast message from... indica la procedencia del mensaje (from root, from terminal) wall (sin opciones) para escribir el texto del mensaje wall < mensaje Desde un fichero mail nombre_usuario Para enviar un correo a un usuario mail nombre_usuario Para escribir el mensaje mail nombre_usuario < mensaje Texto del correo desde fichero mail Para entrar en el programa de administración de correo: Intro o + leer el siguiente mensaje Con – pasamos al mensaje anterior Con n podemos leer el mensaje número n Con d (delete) borramos un mensaje Con q salimos del correo, borrando los mensajes suprimidos, recibidos o grabados antes de salir Con x salimos del correo sin modificar nada (sin modificar el buzón) news Muestra las noticias no leídas. Para crear una noticia, basta con crear un fichero con la noticia y copiarlo en el directorio de noticias (/usr/news); es necesario tener permiso para escribir en ese directorio news –a Muestra todas las noticias news –n Muestra las cabeceras de las noticias no leídas calendar Agenda de eventos. Muestra los eventos de hoy y los de mañana. Para utilizar la agenda, se crea un fichero con nombre calendar en el directorio activo con la siguiente sintaxis: jun 4 partido de basket 6/4 ir al cine (admite ambas sintaxis. Usar el tabulador entre la fecha y el evento) 10.- Conexión remota ping -cn ip envía n paquetes a la ip especificada telnet acceso remoto a otro ordenador a través de una red telnet host ssh acceso remoto seguro a otro ordenador a través de una red ssh usuario@host scp transferencia de ficheros entre máquinas subir (de máquina local a remota): scp archivolocal usuario@maquina_remota:archivoremoto bajar (de máquina remota a local): scp usuario@maquina_remota:archivoremoto archivolocal