Translate

lunes, 17 de noviembre de 2014

Configuración de VNC en Windows Server 2003

En los otros dos menús no hay nada especialmente significativo: en Misc. podemos configurar algunas opciones secundarias, mientras que en Load/Save tendremos la posibilidad de guardar o cargar configuraciones. Uso del cliente Mientras estemos manejando remotamente otro equipo, podemos pulsar la barra de título con el botón derecho del ratón o dar a la tecla Menu Key (normalmente F8) para sacar el menú de opciones. Las más llamativas son: Full screen Full screen Full screen Full screen: para pasar a pantalla completa. Ctrl/Alt Ctrl/Alt Ctrl/Alt Ctrl/Alt: escogiendo una de las dos, enviaremos la pulsación de esa tecla al PC remoto. Send Ctrl Send Ctrl Send Ctrl Send Ctrl- -- -Alt AltAlt Alt- -- -Del Del Del Del. La pulsación de Control+Alt+Supr (Del en teclados ingleses) seguirá afectando a nuestro equipo, no al remoto. Si queremos enviar esta orden al servidor, deberemos usar esta opción. Refresh screen Refresh screen Refresh screen Refresh screen: en conexiones lentas o saturadas, a veces tendremos que usar esta opción para actualizar la imagen. Routers y Firewalls Como buen servidor, el correcto funcionamiento de RealVNC Server está condicionado a que proxies, routers, gateways, firewalls y antivirus admitan la comunicación que requieren los clientes. Por tanto, debemos configurar aquéllos para permitir todas las conexiones entrantes al puerto local TCP 5900 (o el que hayamos escogido)Administración remota - 6 Proyecto de Implementación de Redes – EET Nº 5 “Galileo Galilei” Las otras opciones son Deny (rechazar) y Query (preguntar primero). Esta última puede ser útil en el caso de que, por ejemplo, algún amigo informático nos esté echando una mano con el servidor, pero no queramos dejarle acceso permanente. Cada vez que quiera conectarse, deberá obtener primero nuestra autorización. Las IPs en modo Query se añaden con un símbolo de interrogación (?) al listado, mientras que las Deny lo hacen con un menos (-). Todas las IPs que no coincidan con alguna del listado se rechazarán. Nota: para volver a dejar paso a todo el mundo, como estaba al principio, borraremos todas las reglas existentes y añadiremos la siguiente: 0.0.0.0 Allow. Configuración del cliente Una vez instalado, lo arrancaremos desde Inicio > Programas/Todos los programas > RealVNC > VNC Viewer 4 > Run VNC Viewer. No hay mucha complicación en este menú. En la casilla debemos meter la IP o dominio del servidor. Si en éste hemos cambiado el puerto 5900 por otro, debemos añadir a la IP el símbolo de dos puntos (:) y el puerto nuevo. Ejemplo: 100.90.100.90:5901 para conectarse al servidor de IP 100.90.100.90 cuyo RealVNC escucha por el puerto 5901. Después de introducir la contraseña en el siguiente menú, ya tendremos control sobre el servidor. En el botón Options del primer menú encontraremos algunas opciones interesantes: Colour & Encoding Colour & Encoding Colour & Encoding Colour & Encoding: en Color level podremos ajustar el número de colores que queremos visualizar en la pantalla. A mayor número de colores, más ancho de banda se requiere. Inputs Inputs Inputs Inputs: aquí configuraremos qué órdenes aceptará el servidor: las del ratón (Send pointer); las del teclado (Send keyboard); que el contenido de nuestro portapapeles pase al servidor (Send clipboard); al contrario, que el portapapeles de la máquina controlada pase al nuestro (Accept clipboard) y las teclas especiales como la de Windows o la de Aplicación (Pass special keys). También encontraremos una tecla Menu Key (inicialmente F8) para poder sacar el menú cuando nos encontremos en el modo "pantalla completa". 5- -- - Administración remota Proyecto de Implementación de Redes – EET Nº 5 “Galileo Galilei” Connections Connections Connections Connections: en esta sección, en el apartado Accept connections on port, podemos cambiar el puerto por el que escucha el servidor. Inicialmente lo hace por el 5900 (TCP), pero es recomendable cambiarlo por razones de seguridad. Cualquier puerto desde el 1024 hasta el 65535 debería servir. Es importante recordar que el cliente está preconfigurado para usar ese puerto 5900; si lo cambiamos, debemos tenerlo en cuenta cuando nos conectemos a distancia (más adelante quedará explicado). Disconnect idle clients after (seconds) desconectará todos los clientes transcurrido el tiempo en segundos que indiquemos. No es mala política de seguridad configurarlo a una cifra menor de la hora (3600 segundos) a la que inicialmente está puesto. Por último, si no vamos a usar el cliente en Java, podemos desconectar la casilla Server Java viewer via HTTP on port y cerrar así otra puerta. La sección Access Control es muy interesante: nos da la posibilidad de filtrar las conexiones entrantes por IPs, aumentando así la seguridad al aceptar sólo determinados accesos. Por ejemplo, imaginemos que la IP estática de nuestra oficina es 80.80.80.80 y queremos conectarnos desde allí a nuestra casa, donde tenemos el servidor. Los pasos a seguir serían los siguientes: 1. Seleccionamos la crucecita del listado y pulsamos el botón Remove. Esta regla inicial autoriza el acceso a todo el mundo (que sepa la contraseña, claro), y no queremos tal cosa. 2. Una vez vacío el listado, pulsamos el botón Add. Aparecerá un menú con tres opciones y una casilla. En ésta hemos de introducir la IP en cuestión: 80.80.80.80. Y la opción que debemos seleccionar es Allow (autorizar). Al aceptar, se habrá añadido al menú con una cruz delante. Administración remota - 4 Proyecto de Implementación de Redes – EET Nº 5 “Galileo Galilei” Register y Unregister sirven para añadir o eliminar RealVNC de la lista de servicios en Panel de Control > Herramientas Administrativas > Servicios. Habitualmente no tendremos que tocarlas para nada. Start y Stop sirven para arrancar o detener el servicio. Esto también lo podemos hacer desde Herramientas Administrativas. Por último, con Configure podremos modificar las opciones. Escogiendo esta última opción, nos encontraremos con un menú familiar: es el mismo que ha aparecido en la instalación. Si no queremos complicarnos mucho la vida, lo único que tenemos que modificar aquí es lo siguiente: en la pestaña Authentication, desmarcar la casilla Prompt local user to accept connections y aceptar para salir del menú. Con esto ya podremos pasar directamente a la configuración del cliente. Si queremos detenernos un poco más a configurar el servidor, las opciones significativas son las siguientes: Desktop Desktop Desktop Desktop: aquí podemos desactivar algunos adornos del sistema operativo controlado con el fin de mejorar el rendimiento del control remoto, si tanto las limitaciones en la potencia de los equipos como la capacidad de nuestra conexión pueden ralentizarlo. Con Remove wallpaper y Remove background pattern desactivaremos respectivamente la imagen y el fondo del escritorio de Windows; mientras que con Disable user interface effects eliminaremos efectos como el que desaparezcan los menús "difuminándose" y similares. Authentication Authentication Authentication Authentication: es la pestaña donde anteriormente hemos introducido la contraseña. Aquí nos encontramos con otra importante opción: Prompt local user to accept connections. De forma predeterminada está marcada, lo que implica que toda conexión externa ha de ser autorizada por alguien que esté sentado frente al PC servidor. Obviamente, si vamos a conectarnos a nuestro propio servidor mientras estamos fuera, hay que desmarcar esta opción. Configuración de VNC en Windows Server 2003 Introducción Controlar remotamente un PC es una actividad cada vez más demandada, sobre todo debido al aumento de las conexiones 24 horas de banda ancha. Microsoft se adelantó a esta circunstancia incluyendo en su Windows XP un servidor de acceso remoto; desgraciadamente, sólo se incluye en las versiones Professional, con lo que el resto de los usuarios han de buscar otras alternativas. Entre las profesionales se encuentran productos de amplia experiencia como Symantec PcAnywhere; sin embargo, una opción muy recomendable para el usuario común es RealVNC. Principalmente por cuatro razones: es sencillo, pequeño, gratuito y de código abierto (que no es sinónimo de lo anterior). Descarga e instalación En la Web del producto, http://www.realvnc.com, podemos descargar una copia. Rellenar el formulario es opcional aunque recomendable. Como toda aplicación de control remoto, RealVNC tiene dos componentes: el servidor (que se instala en el equipo controlado) y el cliente (que se usa en el equipo que va a controlar). La descarga denominada VNC Free Edition for Windows contiene tanto el servidor como el cliente. Para bajar sólo este último, podemos escoger directamente VNC Free Edition Viewer for Windows. La instalación del programa se reduce a la típica secuencia de pulsaciones de Next - Next - Next... Install. Las opciones marcadas por defecto son adecuadas. Casi al final de la copia de archivos en el disco duro, aparecerá un menú como éste: Debemos pulsar el botón Configure y escribir dos veces la contraseña con la que accederemos desde el exterior. Debido a que nuestro PC servidor quedará a merced de quien logre el acceso, esta contraseña ha de ser muy sólida. Es recomendable que tenga al menos ocho caracteres (cuantos más, mejor) y que combine mayúsculas, minúsculas, números y símbolos, de forma aleatoria. Usar palabras de diccionario, en cualquier idioma, es equivalente a abrir las puertas de nuestro servidor a media Internet. Configuración del servidor Si lo estamos ejecutando en un Windows 2000/XP/2003/posterior, es recomendable usar el Service Mode (modo servicio). En el menú Inicio > Programas/Todos los programas > RealVNC > VNC Server 4 (Service Mode) encontraremos cinco opciones:

Configuración de un servidor SSH en Linux Debian Configuración de VNC en Windows Server 2003

Introducción El servidor de shell seguro o SSH (Secure SHell) es un servicio muy similar al servicio telnet ya que permite que un usuario acceda de forma remota a un sistema Linux pero con la particularidad de que, al contrario que telnet, las comunicaciones entre el cliente y servidor viajan encriptadas desde el primer momento de forma que si un usuario malintencionado intercepta los paquetes de datos entre el cliente y el servidor, será muy dificil que pueda extraer la información ya que se utilizan sofisticados algoritmos de encriptación. La popularidad de ssh ha llegado a tal punto que el servicio telnet prácticamente no se utiliza. Se recomienda no utilizar nunca telnet y utilizar ssh en su lugar. Para que un usuario se conecte a un sistema mediante ssh, deberá disponer de un cliente ssh. Desde la primera conexión, y mediante encriptación asimétrica, las comunicaciones se encriptan incluido el proceso de autentificación del usuario cuando proporciona su nombre y su contraseña. También se proporciona una clave de encriptación simétrica para encriptar las comunicaciones del resto de la sesión mediante encriptación simétrica por su menor necesidad de procesamiento. Instalación del paquete ssh Para instalar el servidor y el cliente ssh debemos instalar mediante apt-get el paquete ssh que contiene tanto la aplicación servidora como la aplicación cliente: # apt-get install ssh Sin embargo, en entornos de servidor no se aconseja la instalación de todo el paquete ssh. En su lugar, es recomendable la instalación del paquete servidor solamente. Esto es así ya que solo el servidor necesitará ser administrado a la distancia y serán raras las ocasiones en las que nos conectemos a otro equipo desde nuestro servidor. Por estas razones, el comando para instalar el paquete ssh será el siguiente: # apt-get install openssh-server Archivo de configuración El archivo de configuración que controla este servicio es /etc/ssh/sshd_config. Dicho archivo posee muchas opciones útiles. Nosotros nos detendremos es dos muy importantes. En la línea 26 nos encontramos con la directiva PermitRootLogin. Esta orden nos permite configurar si al superusuario le está permitido o no la conexión remota al servidor. Es aconsejable denegar esta característica por obvias razones de seguridad configurándola de la siguiente forma: PermitRootLogin no Por otro lado, y en íntima relación con lo descripto en el párrafo previo, se recomienda restringir los posibles usuarios que puedan iniciar sesión remotamente. Esto se logra agregando una nueva directiva denominada AllowUsers, la cual permite configurar un listado con los únicos usuarios que podrán conectarse remotamente al servidor. Se la suele ubicar al final del archivo y tiene la siguiente sintaxis. AllowUsers usuario1,usuario2,…,usuarioN Como se puede apreciar, luego de la directiva se debe ingresar los nombres de los usuarios permitidos separados por comas. Arranque y parada del servidor SSH El servidor ssh, al igual que todos los servicios en Debian, dispone de un script de arranque, parada y reinicio en la carpeta /etc/init.d. Algunas de sus opciones más importantes son: # /etc/init.d/ssh start # /etc/init.d/ssh stop # /etc/init.d/ssh restart Administración remota - 2 Proyecto de Implementación de Redes – EET Nº 5 “Galileo Galilei” Es bastante fácil deducir que hace cada uno de los tres comandos previos. El primero arranca el servidor ssh, el segundo lo detiene y el último lo reinicia.

Configuración básica de red

Configuración de un servidor Linux Debian Asignación de una dirección IP estática La primer tarea que debemos llevar a cabo cuando configuramos el protocolo TCP/IP en nuestro servidor es asignarle al mismo una dirección IP estática. El programa de uso más sencillo que tenemos para efectuar esta tarea se denomina ifconfig y se utiliza de la siguiente forma: # ifconfig eth0 192.168.0.1 En este caso estamos configurando la interfaz eth0 (primera placa de red detectada) con la dirección IP 192.168.0.1. Esta configuración permanecerá hasta que reiniciemos el servidor o reiniciemos solo el servicio de red (como se detalla más adelante). Si queremos que esta configuración permanezca invariable frente a estos sucesos debemos realizar los siguientes pasos. Para cambiar la configuración y usar una dirección IP estática, necesitará convertirse en root y editar el archivo /etc/network/interfaces de acuerdo a sus necesidades. El archivo original posee un aspecto similar al siguientes: # This file describes the network interfaces available on your system # and how to activate them. For more information, see interfaces(5). # The loopback network interface auto lo iface lo inet loopback # The primary network interface allow-hotplug eth0 iface eth0 inet dhcp Por ejemplo, para añadir la dirección IP 192.168.0.1 a la interfaz eth0, debe cambiar el archivo para que quede así: # This file describes the network interfaces available on your system # and how to activate them. For more information, see interfaces(5). # The loopback network interface auto lo iface lo inet loopback # The primary network interface auto eth0 iface eth0 inet static address 192.168.0.1 netmask 255.255.255.0 network 192.168.0.0 broadcast 192.168.0.255 gateway 192.168.0.254 Observesé que, entre otras cosas, se ha definido la dirección IP de la interfaz junto a su máscara de red, la dirección de red, la de broadcast y la puerta de enlace predeterminada. Configuración básica de red - 2 Proyecto de Implementación de Redes – EET Nº 5 “Galileo Galilei” Despues de editar el archivo /etc/network/interfaces se debe reiniciar el servicio de red introduciendo el siguiente comando: # /etc/init.d/networking restart Solo con la ejecución del comando anterior se logra la aplicación de los cambios efectuados previamente. Una vez finalizadas las tareas anteriores se podrá comprobar la conectividad de nuestro servidor utilizando el comando ping, siempre considerando que la dirección IP utilizada pertenezca a un host que se encuentre operativo en el momento de realizar la prueba. # ping 192.168.0.25 Resolución de nombres Existen dos formas para realizar la resolución de nombres del servidor. La primera es abordar el problema a nivel local, la segunda es a través de un servidor DNS. Para la resolución de nombres a nivel local se debe configurar el archivo /etc/hosts en donde generalmente se guarda el nombre y la dirección IP de las máquinas de la red local. En este archivo se deben buscar las líneas que contienen datos similares a los siguientes 127.0.0.1 localhost 127.0.0.1 webserver.galileo.com webserver A continuación de las mismas se deben agregar otras con información similar a lo que sigue: 192.168.0.1 webserver.galileo.com webserver 192.168.0.2 mailserver.galileo.com mail 192.168.0.252 dns1.galileo.com 192.168.0.253 dns2.galileo.com La información que debemos agregar tiene un formato bastante sencillo. La primera columna contiene la dirección IP del equipo, en la segunda se ubica su nombre de dominio y en la tercera un alias o sobrenombre. Este último campo es optativo. Como el mantenimiento de este archivo es impracticable en la Internet actual, solo se lo suele utilizar en el ámbito de la red local. Una alternativa mucho más viable es resolver los nombres utilizar un servidor DNS. Para establecer los servidores de resolución de nombres se debe editar el archivo /etc/resolv.conf. La configuración de este archivo también es muy simple, solo se debe agregar una línea por cada servidor DNS que se desea utilizar. A continuación se muestra un ejemplo: nameserver 200.125.3.24 Luego de estas configuraciones también es necesario reiniciar el servicio de red: # /etc/init.d/networking restart Modificar el nombre del servidor Para modificar el nombre del servidor se deben llevar a cabo los siguientes pasos: En primer lugar se debe editar el archivo /etc/hostname. El mismo incluye el nombre del servidor. Solo se debe modificar el nombre existente cambiándolo por el nuevo. Por último se debe ejecutar el siguiente comando para que los cambios realizados surjan efecto: # hostname –F /etc/hostname La próxima vez que se inicie sesión se podrán apreciar los cambios realizados. Es importante aclarar que cada vez que se modifica el nombre del servidor se debe mantener coherencia con la información asentada en otros archivos relacionados. Por ejemplo, no debemos olvidarnos de actualizar también el archivo /etc/hosts. 3- -- - Manejo de Shell en Linux Proyecto de Implementación de Redes – EET Nº 5 “Galileo Galilei” Configuración de un servidor Windows Server 2003 Asignación de una dirección IP estática Una vez instalado el servidor la siguiente tarea consiste en asignarle una dirección IP. Para realizar esta tarea debemos ejecutar los siguientes pasos. Sobre el icono Conexiones de red que se encuentra en el Panel de control, pulse el botón derecho y elija Abrir y aparecerá la ventana de Conexiones de red que muestra las conexiones de red que hay instaladas en nuestro equipo. Seleccione la conexión de red que quiere configurar, pulse el botón derecho, elija Propiedades y en la ventana que aparece en la siguiente imagen se mostraran las propiedades del adaptador de red. En las propiedades del adaptador aparecen los servicios, clientes y protocolos que hay instalados. Si desea instalar o desinstalar algún servicio adicional utilice el botón Instalar o Desinstalar, respectivamente. Para que funcione nuestro adaptador, como mínimo tiene que tener instalado el protocolo TCP/IP. Para configurar el protocolo, seleccione Protocolo de Internet (TCP/IP), pulse el botón Propiedades y aparecerá la ventana de Propiedades de Protocolo de Internet (TCP/IP). Existen dos formas de configurar el protocolo TCP/IP: De forma automática. En este caso, un servidor DHCP proporciona los parámetros de conexiones a la red. Por motivos de seguridad, no se recomienda utilizar esta opción con servidores. De forma manual. Esta opción es la recomendada para servidores o para equipos que dan servicios a otros usuarios de la red. Los parámetros que debe configurar son: Dirección IP, Máscara de red, Puerta de enlace y Servidores DNS. Configuración básica de red - 4 Proyecto de Implementación de Redes – EET Nº 5 “Galileo Galilei” Configuración del nombre del equipo y dominio Para que nuestro equipo funcione correctamente en el entorno de red hay que asignarle un nombre y el grupo de trabajo o dominio al que pertenece. Para cambiar el nombre del equipo e indicar el grupo de trabajo o dominio al que pertenece en la ventana Propiedades del sistema, seleccione la pestaña Nombre del equipo y pulse en el botón Cambiar. En la ventana que puede ver en la siguiente figura escriba el nombre del equipo y el nombre del grupo de trabajo o dominio al que pertenezca el equipo.

Manejo de Shell en Linux

Manejo de Shell en Linux Comandos básicos para el manejo de sesiones Listado y cambio de directorios Gestión de archivos y directorios Manipulación de los atributos de archivos y directorios Lectura de archivos Edición de archivos Comandos básicos para el manejo de sesiones La línea de comandos es la forma más directa de enviar comandos a un servidor GNU/Linux. Si usa la línea de comandos rápidamente verá que es mucho más potente y tiene más capacidades que otros prompts (por ejemplo, DOS). La razón de esto es que tiene un acceso directo a miles de utilitarios que no tienen equivalente gráfico, o que no sería fácil acceder a todas las opciones y combinaciones posibles por medio de menús y botones. Inicio de sesión Cuando se accede a una terminal o consola GNU/Linux se presenta una simple interfaz similar a: webserver login: En este ejemplo el término “webserver” hace referencia al nombre del equipo. En este momento estará en condiciones de ingresar su nombre de usuario y luego de presionar la tecla Enter le aparecerá el prompt password:, donde deberá ingresar su contraseña para esta cuenta. Debido a que la conexión en la consola no hace eco de los caracteres que representan a la contraseña, deberá tener cuidado cuando ingresa su contraseña ya que no podrá visualizar la cantidad de caracteres ingresados. Shell Al iniciar su sesión en una terminal GNU/Linux se encontrará, en caso de trabajar con un sistema Debian y conectarse como el superusuario root , con un prompt similar a: webserver:~# Como ya se aclaró anteriormente, “webserver” hace referencia al nombre del equipo. El carácter “~” indica que el directorio en el que nos encontramos posicionados es nuestro directorio personal (generalmente /root). Obviamente, este sector del prompt se modificará a medida que nos desplacemos por toda la estructura de directorios. El carácter “#” indica que estamos utilizando una shell con toda su potencialidad ya que nos hemos registrado con la cuenta de superusuario. En el caso de ingresar al sistema con una cuenta de usuario común, el prompt se asemejará a: jperez@webserver:~$ La diferencia con el caso anterior es que al comienzo del prompt se indica el nombre de usuario que está utilizando esta sesión. Por otro lado, el carácter “$” ubicado al final del prompt indica que el usuario “jperez” no tiene privilegios de supersusuario. Terminales Un sistema GNU/Linux es un sistema multiusuario. Esto quiere decir que varios usuarios pueden conectarse simultáneamente al sistema y trabajar de forma independiente. Una de las formas más simples de realizar esta tarea es trabajar con distintas terminales e iniciar sesión con un usuario distinta en cada una de ellas ya que cada terminal nos deja operar desde una shell absolutamente independiente. Por defecto, el sistema nos presenta en pantalla la terminal número 1 (denominada tty1). Para desplazarnos entre las distintas terminales deberemos presionar la combinación de teclas ALT + Fx, donde Fx identifica a una tecla de función en la que x es el número de terminal a la que queremos acceder. Así, por ejemplo, para desplazarnos a la tercera terminal deberemos presionar la combinación de teclas ALT + F3. Para identificar el número de terminal en la que nos encontramos en determinado momento debemos utilizar el siguiente comando: ~$ tty Manejo de Shell en Linux - 2 Laboratorio de Sistemas Operativos – EEST Nº 5 “Galileo Galilei” Cambiar de usuario Otra forma de aprovechar las características de sistema multiusuario que GNU/Linux nos ofrece es utilizar el comando su, que nos permite cambiar de usuario sin necesidad de conectarnos nuevamente en otra terminal. Si estamos conectados como superusuario simplemente debemos ejecutar: ~# su - jlopez En este caso jlopez es el nombre de usuario que comenzaremos a utilizar a continuación (siempre y cuando, obviamente, jlopez sea un usuario ya registrado en el sistema). Si por el contrario, estamos conectados con una cuenta de usuario común y nos queremos convertir en superusuario debemos ingresar el siguiente comando: ~$ su - Acto seguido, se nos preguntará la contraseña del superusuario antes de poder “convertirnos” en él. Información de usuario Si en algún momento deseamos obtener información acerca del usuario con el que estamos conectados podemos utilizar alguno de los siguientes dos comandos: ~$ id Este comando nos brinda información importante acerca del usuario que lo ejecuta. Los datos más destacados que se pueden obtener son el identificador del usuario (uid), el identificador del grupo principal al que pertenece el usuario (gid) y el nombre de los grupos adicionales de los que forma parte el usuario. El otro comando, mucha más simple de utilizar es who: ~$ who En este caso se muestra el nombre de usuario, la terminal en la que se encuentra conectado y la fecha y hora en que inició sesión. Cierre de sesión Para finalizar una sesión en un sistema GNU/Linux se pueden utilizar indistintamente cualquiera de los siguientes dos comandos: ~$ exit ~$ logout El mismo objetivo se logra si presionamos la combinación de teclas CTRL + D. Listado y cambio de directorios Listar directorios El comando ls (LiSt) es equivalente a dir de DOS, pero puede hacer mucho más. De hecho, esto se debe en gran parte al hecho de que los archivos también pueden hacer más. La sintaxis del comando ls es la siguiente: ls [opciones] [archivo|directorio] [archivo|directorio.. Si no se especifica archivo o directorio alguno en la línea de comandos, ls imprimirá la lista de los archivos del directorio corriente. Sus opciones son muchas y sólo citaremos unas pocas: -a: lista todos los archivos, incluyendo los archivos ocultos (en GNU/Linux los archivos ocultos son aquellos cuyo nombre comienza con “.“) -R: lista recursivamente, es decir, todos los archivos y subdirectorios del directorio que se menciona en la línea de comandos; -l: muestra información adicional sobre los archivos; Algunos ejemplos: ~$ls —R En este caso se lista recursivarnente el contenido del directorio actual. ~$ls -al images/*.png 3- -- - Manejo de Shell en Linux Laboratorio de Sistemas Operativos – EEST Nº 5 “Galileo Galilei” En este ejemplo se listan todos los archivos (incluso los archivos ocultos) del directorio images/ cuyo nombre termina con .png. Note que esto también incluye al archivo .png si es que existe uno. De todos los casos anteriores conviene detenerse un instante en el uso del comando ls junto al parámetro -l. Tomemos el ejemplo de un archivo y un directorio. Abajo se muestra el resultado de ingresar el comando ls -1 desde una línea de comandos: ~$ls -1 -rw-r----- 1 root shadow 664 2009-04-05 14:11 shadow drwxr-xr-x 2 root root 4096 2009-04-05 14:11 w3m Los diferentes campos de salida del comando ls -1 son los siguientes (de izquierda a derecha): Los primeros diez caracteres representan sucesivamente el tipo de archivo y los derechos asociados al mismo. El primer carácter es el tipo del archivo: contiene un guión (—) si es un archivo regular, o una d si es un directorio. Los nueve caracteres que siguen representan los permisos asociados con ese archivo. Aquí puede ver la distinción que se hace entre los diferentes usuarios para el mismo archivo: los primeros tres caracteres representan los derechos asociados con el dueño del archivo, los siguientes tres se aplican a todos los usuarios que pertenecen al grupo pero que no son el dueño, los últimos tres se aplican a los otros. Un guión (-) significa que el permiso no está activo. Luego viene el número de vínculos del archivo. A continuación viene el nombre del dueño del archivo y el nombre del grupo dueño. Finalmente, se muestra el tamaño del archivo (en bytes) y la fecha de su última modificación, seguido por el nombre del archivo o directorio propiamente dicho. Ahora observemos en detalle los permisos asociados con cada uno de estos archivos: antes que nada, debemos quitar el carácter que representa al tipo, y para el archivo shadow obtenemos los siguientes derechos rw-r-----. La interpretación de los mismos es la que sigue: Los primeros tres (rw-) son los derechos del usuario dueño del archivo, en este caso root. Por lo tanto, el usuario root, tiene el derecho de leer el archivo (r), de modificarlo (w) pero no de ejecutarlo (-). Los tres siguientes (r--) se aplican a todo usuario que no es root pero que es miembro del grupo shadow. Dicho usuario podrá leer el archivo (r), pero no podrá modificarlo ni ejecutarlo (--). Los tres restantes (---) se aplican a todo usuario que no es root ni es miembro del grupo shadow. Dicho usuario simplemente no tendrá derecho alguno sobre el archivo. Para el directorio w3m, los derechos son rwxr-xr-x, entonces: root, como dueño del directorio, puede listar los archivos que contiene (r), agregar o quitar archivos del mismo (w), y recorrerlo (x). Cada usuario que no es root pero es miembro del grupo root, podrá listar los archivos de ese directorio (r), pero no podrá quitar ni agregar archivos (—), y lo podrá recorrer (x). Cualquier otro usuario sólo podrá listar el contenido de este directorio (r--), y nada más. Incluso no podrá ingresar al directorio. Cambiar directorios El comando cd es exactamente el mismo que en DOS, con alguna funcionalidad extra. Hace justo lo que su acrónimo indica, cambiar el directorio de trabajo. Puede usar . para referirse al directorio corriente y .. para referirse al directorio padre del directorio corriente. Si ingresa cd solo, será llevado de vuelta a su directorio personal. Si ingresa cd - será llevado al último directorio en el cual estuvo. Y, finalmente, puede especificar el directorio destino al que nos queremos desplazar. Note que como usuario no privilegiado normalmente no puede ingresar a los directorios personales de otros usuarios (a menos que esos usuarios lo hayan autorizado explícitamente o esa sea la configuración predeterminada del sistema). A continuación se presentar algunos ejemplos: ~$ pwd /home/jperez ~$ cd /usr/share/doc/HOWTO ~$ pwd Manejo de Shell en Linux - 4 Laboratorio de Sistemas Operativos – EEST Nº 5 “Galileo Galilei” /usr/share/doc/HOWTO ~$ cd ../FAQ-Linux ~$ pwd /usr/share/doc/FAQ-Linux ~$ cd ~$ pwd /home/jperez El primer comando que aparece en el ejemplo anterior es pwd. Este comando nos devuelve la ruta completa al directorio en el cual nos hallamos posicionados. El uso del comando cd es bastante simple. Se puede indicar como parámetro el directorio de destino o ejecutarlo sin parámetros, en este caso nos devolverá a nuestro directorio personal (/home/jperez en nuestro ejemplo). Gestión de archivos y directorios Gestionar archivos significa copiar, mover y borrar archivos. Más adelante, veremos formas de cambiar los atributos de los mismos (dueño y permisos asociados). Creación de directorios y archivos vacíos mkdir (MaKe DlRectory) se usa para crear directorios. Su sintaxis es simple: mkdir [opciones] [directorio …] Sólo una opción es digna de interés: la opción -p. La misma hace dos cosas: Creará los directorios padre si es que aún no existían. Si no se especifica esta opción y los directorios padre no existen, mkdir simplemente fallará, quejándose que dichos directorios padre no existen. Por otro lado, si el directorio padre ya existe simplemente creará el nuevo directorio. Aquí tiene algunos ejemplos: ~$ mkdir pepe Crea un directorio denominado pepe en el directorio actual; ~$ mkdir -p imagenes/misc docs Crea un directorio misc en el directorio imagenes creando primero el ultimo si es que no existe (-p); también crea un directorio denominado docs en el directorio actual. Inicialmente, el comando touch no está orientado a la creación de archivos sino a la actualización de la hora de acceso y modificación de los archivos. Sin embargo, touch creará los archivos mencionados como archivos vacíos si es que no existían. La sintaxis es: touch [opciones] archivo [archivo …] Entonces, ejecutar el comando: ~$ touch archivo1 imagenes/archivo2 Creará un archivo vacío denominado archivo1 en el directorio corriente y un archivo vacío denominado archivo2 en el directorio imagenes, si dichos archivos no existían. Borrar archivos y directorios El comando rm (ReMove) reemplaza a los comandos del y deltree de DOS, y agrega más opciones. Su sintaxis es la siguiente: rm [opciones] [archivo|directorio ...] Las opciones incluyen: -r, o -R: borrar recursivamente. Esta opción es obligatoria para borrar un directorio, vacío o no. Sin embargo, también puede usar el comando rmdir para borrar directorios vacíos. -f: fuerza la supresión de los archivos o directorios, incluso si el usuario no tiene derecho de escritura sobre los archivos. 5- -- - Manejo de Shell en Linux Laboratorio de Sistemas Operativos – EEST Nº 5 “Galileo Galilei” Algunos ejemplos: ~$ rm imagenes/*.jpg archivo1 Borra todos los archivos cuyo nombre termina en .jpg en el directorio imagenes y borra el archivo archivo1 en el directorio actual. ~$ rm -Rf imagenes/misc/ archivo* Borra todo el directorio misc/ del directorio imagenes/ junto con todos los archivos del directorio actual cuyos nombres comiencen con archivo sin pedir confirmación alguna. Atención: U Atención: U Atención: U Atención: Un archivo borrado utilizando n archivo borrado utilizando n archivo borrado utilizando n archivo borrado utilizando rm se borra se borra se borra se borra irrevocablemente irrevocablemente irrevocablemente irrevocablemente. ¡No hay forma alguna de . ¡No hay forma alguna de . ¡No hay forma alguna de . ¡No hay forma alguna de recuperarlo! recuperarlo! recuperarlo! recuperarlo! Mover o renombrar archivos y directorios La sintaxis del comando mv (MoVe) es la siguiente: mv [opciones] [archivo|directorio …] Algunas opciones: -f: fuerza la operación, no hay advertencia alguna en caso de que la operación sobrescriba un archivo que ya existe. -i: lo contrario a –f, pide confirmación al usuario antes de sobre-escribir un archivo existente. Algunos ejemplos: ~$ mv -i /tmp/pics/*.png . Mover todos los archivos del directorio /tmp/pics/ cuyos nombres terminan en .png al directorio corriente (.), pidiendo confirmación antes de sobre-escribir cualquier archivo. ~$ mv pepe pupu Cambiar el nombre del archivo pepe por pupu. Si ya hubiera un directorio pupu, el efecto de este comando sería mover todo el directorio pepe (el directorio en sí mismo más todos los archivos y directorios que contenga, recursivamente) dentro del directorio pupu. ~$ mv —f archivo* imagenes/ tacho/ Mover, sin pedir confirmación, todos los archivos del directorio actual cuyos nombres comiencen con archivo junto con todo el directorio imagenes al directorio tacho. Copiar archivos y directorios cp (CoPy) reemplaza a los comandos copy, xcopy de DOS, y agrega más opciones. Su sintaxis es la siguiente: cp [opciones] [archivo|directorio …] cp tiene un montón de opciones. Estas son las más comunes: -R: copiar recursivamente; obligatoria para copiar un directorio, incluso si está vacío. -i: pedir confirmación antes de sobre-escribir cualquier archivo que pudiera sobre-escribirse. -f: lo opuesto de -i, reemplazar cualquier archivo existente sin pedir confirmación alguna. Algunos ejemplos: ~$ cp -i /tmp/imagenes/* imagenes/ Copia todos los archivos del directorio /tmp/imagenes al directorio imagenes/ ubicado en el directorio corriente. Si se va a sobre-escribir un archivo se pide confirmación. ~$ cp -R docs miscosas/ Copia recursivamente todo el directorio docs al directorio miscosas ubicados ambos en el directorio actual. ~$ cp pepe pupu Hace una copia del archivo pepe bajo el nombre pupu en el directorio actual. Manejo de Shell en Linux - 6 Laboratorio de Sistemas Operativos – EEST Nº 5 “Galileo Galilei” Manipulación de los atributos de archivos y directorios La serie de comandos que se presentan aquí se usan para cambiar el dueño o el grupo propietario de un archivo o sus permisos. Cambiar el dueño y el grupo propietario de uno o más archivos La sintaxis del comando chown (CHange OWNer) es la siguiente: chown [opciones] [archivo|directorio …] Las opciones incluyen: -R: recursivo; para cambiar el dueño de todos los archivos y subdirectorios en un directorio dado. -v: modo verboso; muestra todas las acciones efectuadas por chown; reporta cuales archivos cambiaron de dueño como resultado del comando y cuales no han cambiado. Algunos ejemplos: ~$ chown nobody shared/libro.tex Cambiar el dueño del archivo shared/libro.tex a nobody. chown -Rv reina:musica *.mid conciertos/ Atribuye todos los archivos en el directorio actual cuyos nombres terminan con .mid y todos los archivos y subdirectorios del directorio conciertos al usuario reina y al grupo musica, reportando los archivos y directorios afectados por el comando. El comando chgrp (CHange GRouP) le permite cambiar el grupo propietario de un archivo o un grupo de archivos; su sintaxis es muy similar a la del comando chown: chgrp [opciones] [archivo|directorio ...] Las opciones de este comando son las mismas que las de chown, y se usa de manera muy similar. Por lo tanto, el comando: ~$ chgrp disk /dev/hd* Le atribuye al grupo disk todos los archivos en el directorio /dev/ cuyos nombres comiencen con hd. Cambiar los permisos sobre los archivos y directorios El comando chmod (CHange MODe) tiene una sintaxis bien particular. La sintaxis general es: chmod [opciones] [archivo|directorio …] Pero lo que lo distingue son las diferentes formas que puede tomar el cambio de modo. Este se puede especificar de dos maneras: En octal; se utilizan tres números para especificar los permisos de los usuarios dueños, el grupo propietario y todos los “otros” usuarios respectivamente. Estos números deben estar contenidos en el rango 0-7. El número 4 se utiliza para permiso de lectura, 2 para permiso de escritura y 1 para permiso de ejecución. Si queremos representar un permiso combinado de lectura y escritura debemos utilizar el número 6 (sumando los permisos de lectura y escritura) y así sucesivamente con cualquier otra combinación. Por lo tanto, el permiso rwxr-xr-- se corresponde con el valor octal 754 ya que los permisos del dueño (los primeros tres caracteres “rwx”) representan un 7, los del grupo propietario (r-x) un 5 y los permisos de los otros (r--) un 4. Con expresiones; aquí los permisos se expresan con una secuencia de expresiones separadas por comas. Por lo tanto, una expresión toma la forma [categoría] <+|—|=>. La categoría puede ser una o más de: u (User, permisos para el dueño) g (Group, permisos para el grupo propietario) o (Others, permisos para los “otros”) Si no se especifica categoría alguna, los cambios se aplicarán para todas las categorías. Un “+” agrega un permiso, un “-“ lo niega y un “=” lo garantiza. 7- -- - Manejo de Shell en Linux Laboratorio de Sistemas Operativos – EEST Nº 5 “Galileo Galilei” Finalmente, el permiso es uno o más de: r (Read, lectura) w ( Write, escritura) x (eXecute, ejecución) Las opciones principales son bastante similares a las de chown o chgrp: -R: cambiar los permisos recursivamente. -v: modo “verboso”, muestra las acciones efectuadas para cada archivo. Ejemplos: ~$ chmod -R o-w /shared/docs Quitar recursivamente el permiso de escritura para los “otros” sobre todos los archivos y subdirectorios del directorio /shared/docs/. ~$ chmod -R og-w,o-x privado/ Quitar recursivamente el permiso de escritura para el grupo y para los otros sobre todo el directorio privado, y quitar el permiso de ejecución para los otros. ~$ chmod -v 644 varios/archivo* Cambia los permisos de todos los archivos del directorio varios cuyos nombres comiencen con archivo a rw-r--r-- (es decir, permiso de lectura para todos y permiso de escritura sólo para el dueño), y reporta sólo los archivos afectados por la operación. Lectura de archivos Mostrar el contenido de uno o más archivos en pantalla No hay mucho más que decir, este comando simplemente hace eso: mostrar el contenido de uno o más archivos en la salida estándar, normalmente la pantalla: ~$ cat /etc/fstab /dev/hda5 / ext3 defaults 1 1 /dev/hda6 /home ext3 defaults 1 2 /dev/hda7 swap swap defaults O O /dev/hda8 /usr ext3 defaults 1 2 none /proc proc defaults O O /dev/cdrom /mnt/cdrom auto user,noauto,nosuid,exec,nodev,ro O O En este primer ejemplo se muestra en pantalla el contenido de un archivo llamado fstab ubicado en el directorio /etc. ~$ cat conf.modules shells alias parport_lowlevel parport_pc pre—instail plip modprobe parport_pc ; echo 7 > /proc/parport/O/irq #pre—install pcmcia_core /etc/rc.d/init.d/pcmcia start #alias car—major-14 sound alias sound esssoloi keep /bin/zsh /bin/bash /bin/sh /bin/tcsh /bin/csh /bin/ash