Vous êtes sur la page 1sur 22

Manual de Referencia Rpida.

Curso de UNIX para Programadores.


El presente apunte sirve como soporte para el usuario acerca del curso de UNIX para programadores. Este apunte se divide en las siguientes secciones importantes : Pequea resea acerca del origen del Sistema Operativo UNIX. Encendido y apagado del Sistema Operativo UNIX. Organizacin y Estructura del sistema de archivos (File System). Ingreso y Egreso del sistema (Login - Logout). Creacin de Directorios, Usuarios, Grupos, Dispositivos e Impresoras. Seguridad y Permisos de Archivos y Directorios. Redireccionamiento y encadenamiento de Comandos. Lenguaje interpretado SHELL (propio de UNIX). Uso del editor de Textos VI y ED. Sintaxis y uso de una amplia cantidad de comandos propios de UNIX. Pequea resea acerca del sistema de comunicaciones en UNIX. Tcnicas bsicas de administracin del sistema UNIX. Tcnicas bsicas del mantenimiento de sistema UNIX.

Pequea resea acerca del origen del Sistema Operativo UNIX. El UNIX es un sistema operativo multiusuario y multitarea que trabaja en el modo de tiempo compartido (time-sharing). Esto significa que el sistema operativoatiende y ejecuta varios programas simultneamente de los distintos usuarios que estn trabajando en l, pero realmente solo atiende a uno solo por vez durante una pequea fraccin de tiempo (del orden de los milisegundos). El sistema operativo ejecuta un trozo de un programa, luego lo interrumpe, toma otro programa, continua su ejecucin, y as sucesivamente. De esta manera le da a cada usuario la impresin de que l solo esta utilizando la mquina. El UNIX fue originalmente desarrollado por los laboratorios Bell de la AT&T. Estos participaron alrededor del ao 1969 en un proyecto conjunto con la General Electric en la elaboracin de un sistema operativo multiusuario que pudiera aprovechar el hardware disponible y brindar unos servicios suficientemente interactivos a una gran cantidad de usuarios. Este proyecto se denomin Multics. Ms tarde, los laboratorios Bell consideraron que las metas propuestas no estaban en camino de ser alcanzadas y por lo tanto se retiraron del proyecto. En ese entonces, uno de los investigadores de los Laboratorios Bell, Ken Thompson, quien haba participado del proyecto Multics, dispona de una computadora PDP-7 e ide un sistema operativo

Curso de UNIX para Programadores.


multiusuario segn sus propias ideas que tuviera un manejo dinmico de la memoria. Llamo UNIX a este primer esbozo de sistema operativo, el cual fue puesto en marcha en 1970 en la PDP-7 y luego transcripto a una mquina un poco ms grande, una PDP-11. El UNIX estaba en sus orgenes escrito en lenguaje de mquina, es decir, estaba hecho mediante el assembler de la PDP-7. Cuando se plante el problema de transportar el UNIX de una mquina a otra se dieron cuenta que era necesario reescribirlo en su totalidad, puesto que al hacerlo en assembler lo hacan fuertemente dependiente del hardware. Entonces vieron la posibilidad de reescribirlo en algn lenguaje de alto nivel, de tal manera que fuera portable de una mquina a otra y que solamente tuviera algunas partes dependientes estrictamente del hardware y configuracin de la mquina. De esta manera, Ken Thompson junto a Dennis Ritchie y Brian Kernighan desarrollaron un nuevo lenguaje de programacin al cual denominaron C y escribieron el UNIX en este nuevo nivel, dejando lo mnimo necesario dependiente del hardware. As se haca ms sencillo su transporte de una mquina a otra, an entre mquinas con CPUs totalmente distintas. Inicialmente, el UNIX fue utilizado en los Laboratorios Bell solamente para uso interno en la preparaci de documentacin relacionada con sus patentes y de programas de aplicacin. No se comercializ, y se lo distribua entre aquellas universidades que lo solicitaban con propositos educacionales. Recien en 1977 sali a la venta comercialmente cuando ya era popular debido a su uso en las universidades. En este mismo ao fue portado por primera vez a una mquina distinta de las PDP, una Interdata 8/32. Los investigadores de vairas universidades hicieron sus propias contribuciones al desarrollo del sistema, entre quienes se destaca la Universidad de Berkeley. Juntando algunas de estas versiones y contribuciones entre 1977 y 1982, AT&T produjo el UNIX System III y en 1983 el actualmente conocido UNIX System V. Adems la AT&T licenci a varias empresas los fuentes del sistema operativo escritos en C , con los fines de transportarlos a distintas mquinas. Estos sistemas operativos, derivados del UNIX, tuvieron nombres tales como BSD, XENIX, ONIX, CROMIX, etc. Adems esto produjo la diversificacin del hardware que soporta un sistema UNIX o similar, y as actualmente se tienen versiones del UNIX para mquinas con un procesador tan chico como un Z80 hasta la mquina actualmente ms grande del mundo, la CRAY-2, donde coexiste co otros sistemas operativos. El resultado de esto es que adems de la popularizacin y la diversificacin, los usuarios pueden tomar ventajas de que los programas escritos en C para una mquina determinada son portables con mucha facilidad a otra mquina, y basta solamente compilarlos en la nueva mquina con el compilador correspondiente para que funcionen en la misma.

Curso de UNIX para Programadores.


Encendido y apagado del Sistema Operativo UNIX. Ya que UNIX es un sistema operativo multiusuario y multitarea, este posee una fase de encendido y otra para el apagado del sistema, esta ltima tarea es muy importante ya que permite mantener el sistema de archivos en buenas condiciones. Para poner en funcionamiento el equipo hay que proceder con los siguientes pasos: - Encender impresoras y terminales (perifricos). - Encender el monitor principal (consola). - Encender el equipo principal (CPU). Cuando se enciende el sistema existen varios pasos bien definidos; primero el sistema carga en memoria el programa de boot (face de boot) grabado en una memoria fija o memoria ROM del equipo que tiene como finalidad inicializr y reconocer los perifricos conectados a la mquina y cargar otro programa de booteo inicial existente en el disco rgido, transfiriendole luego el control. Este ltimo programa de booteo examina el disco rgido principal viendo que particin del mismo est activa y trata de cargar el programa de booteo de la particin. Luego comienza el proceso de inicializacin. Durante el mismo reconoce los perifricos conectados al equipo (pantalla, memorias, discos rigidos, disketeras, etc.). Posteriormente segn la versin de UNIX que se este utilizando solicita que se presione las teclas <CTRL>+<D> para ingresar a modo multiusuario o clave del superusuario para ingresar a modo mantenimiento; en versiones nuevas de UNIX directamente ingresa a modo multiusuario sin requerir que se presione tecla alguna. Luego son comenzados los sistemas de impresin (spoolers) y se van reconociendo todas las terminales conectadas al sistema. Una vez completadas todas las faces del encendido aparece la palabra LOGIN en cada una de las terminales y pantallas del sistema. A partir de ese momento el sistema esta disponible para su uso en su totalidad. En la face de apagado del sistema se debe tener en cuenta que todas las terminales debern estar en LOGIN para que el sistema pueda ser apagado. Si alguna terminal esta trabajando mientras se apaga el sistema, el mismo, avisa mediante un mensaje a la terminal que el sistema se va a cerrar, cancelando posteriormente todos los procesos en ejecucin y cerrando por ltimo todos los archivos. La face de apagado del sistema SIEMPRE DEBE REALIZARSE ANTES DE APAGAR FISICAMENTE EL EQUIPO, ya que se deben terminar todos los procesos actualmente en ejecucin y cerrar todos los archivos en uso antes de apagar fsicamente el equipo. De lo contrario el sistema de archivos pierde integridad y el contenido de varios archivos puede quedar incorrecto dificultandose posteriormente su uso. La face de apagado del sistema inicialmente comprueba si existe alguna terminal o pantalla dentro del sistema (declarado como usuario) realizando alguna tarea o proceso. De ser asi envia un mensaje a la terminal o la pantalla indicando que el sistema va a ser cerrado. Se puede indicar cantidad de tiempo en minutos para realizar el apagado del sistema. Sobre cada minuto de los indicados el sistema envia un mensaje indicando que se va a apagar. Cuando se llega al ultimo minuto directamente realiza la face de apagado del sistema. Posteriormente cancela todas las tareas o procesos actualmente en funcionamiento, luego cierra todos los archivos y por ltimo cancela la tarea llamada INIT que es la primera que fue ejecutada al momento del arranque del sistema. El apagado del sistema se realiza mediante el comando shutdown. Este comando solamente puede

Curso de UNIX para Programadores.


ser ejecutado desde el superusuario o el usuario del administrador del sistema o un usuario creado exclusivamente para apagar el sistema.

Curso de UNIX para Programadores.


Organizacin y Estructura del sistema de archivos (File System). Puede considerarse al sistema operativo UNIX en un modelo de capas donde cada capa interactua con la capa superior. El nucleo residente del sistema operativo se denomina KERNEL. Este est permanentemente residente en memoria mientras el sistema est activo y provee toda la interface entre el hardware y el usuario o sus programas de aplicacin. En otras palabras, provee las rutinas y funciones que el usuario dispone a traves de un lenguaje de programacin o a traves de los interpretes de comandos. El kernel cumple las funciones de la administracin y supervisin general de todo el sistema, es decir que administra los procesos de los usuarios, calculando sus propiedades, proporcionandoles la memoria requerida, asignandoles los tiempos de ejecucin y conmutando los recursos de la CPU de tarea en tarea. Utilizando los recursos del Kernel que son los servicios generales del sistema operativo en bajo nivel, tenemos otras partes que son no residentes, es decir que no necesariamente estn en memoria mientras el UNIX est activo. Entre estas partes podemos citar distintos comandos o programas del usuario como los comandos who, date, wc, grep, ed, vi, ld, comp, cpp, etc., y cabe destacar el interprete de comandos denominado shell (sh). Este ltimo intrprete de comandos es la interface interactiva con el usuario, que le permite ejecutar sus programas o ejecutar comandos del sistema que en definitiva no son ms que programas ya provistos con el UNIX que le permiten manejar archivos, copiarlos, crearlos, borrarlos, procesarlos, editarlos, etc. El shell tambin le permite al usuario controlar la ejecucin de sus programas e inclusive conectar programas entre si. Existen varios tipos de Shell dentro del UNIX y el ms conocido de ellos es el denominado Bourne Shell, que toma el nombre de su diseador, el cual ser explicado en este mismo manual ms adelante. El Shell es el programa con el cual nos relacionamos cuando estamos trabajando en forma interactiva dentro del UNIX. En las capas perifricas de la estructura podemos ubicar otros programas ya sean provistos con el UNIX (como el compilador C denominado cc) o escritos por el usuario mismo, como pueden ser programas de clculo o un sistema de contabilidad realizados en cualquier otro lenguaje. Es decir que el modelo de capas, la capa ms interna (Kernel) provee los servicios y recursos para ser utilizados por las capas ms externas. Las capas ms externas son los altos niveles de trabajo mientras que las capas ms internas son los niveles de trabajo de bajo nivel o ms cercanos al hardware. Puesto que toda la interface con el hardware se hace a traves del Kernel, los programas del sistema y los programas de aplicacin resultan independientes del hardware y son portables entre distintas instalaciones de UNIX. El UNIX mantiene los archivos en el disco organizados bajo una forma jerrquica denominada file-system o sistema de archivos. Podemos representar a esta estructura mediante un rbol cuya raiz es un directorio principal denominado root. El directorio raiz se simboliza con el smbolo "/" y es el punto de arranque de todo el sistema de archivos. Dentro del mismo encontraremos rachivos y otros directorios. Por ejemplo, tendremos los directorios bin, etc, usr, tmp, mnt y otros. Cada directorio puede contener a su vez otros directorios y archivos, y as podemos continuar la estructura abriendo directorios dentro de otros directorios tantos niveles como querramos. Obviamente, en la profundidad del rbol existe un lmite dado por la practicidad. Las hojas del rbol

Curso de UNIX para Programadores.


son archivos y las ramas o nudos son directorios. Los siguientes directorios principales dependen del directorio raiz: root --+-- /bin Comandos ms comunes del UNIX. | |-- /dev Dispositivos especiales. | |-- /etc Programas adicionales y archivos de datos default. | |-- /usr Rutinas de servicio del usuario. | |-- /lib Libreras de programas en C y otros programas. | |-- /mnt Reservado para montar otros filesystems. | |-- /tcb Archivos del sistem pertenecientes al TCB (seguridad del sistema). | |-- /tmp Archivos temporarios del sistema. | |-- /lost+found Archivos recuperados luego del FSCK (FileSystem Check). | |-- /usr1 Filesystem montado (no /mnt). El nombre es libremente elegible por el Administrador, en este cado es usr1 (puede ser tambin /u).

Contenido del directorio /dev. dev --+-- /console | |-- /fd* | |-- /hd* | |-- /lp* | |-- /rfd* | |-- /rhd* | |-- /root | |-- /tty* | |-- /u | |-- /clock | |-- /null Consola del sistema. Diskettes (dispositivos tipo bloque). Discos rgidos (dispositivos tipo bloque). Impresoras en paralelo. Diskettes (dispositivos tipo caracter). Discos rgidos (dispositivos tipo caracter). Filesystem raiz. Lneas serie (terminales e impresoras serie). Filesystem 'u'. Reloj del sistema. Dispositivo nulo.

Curso de UNIX para Programadores.


Contenido del directorio /etc /etc --+-- /rc* | |-- /default | | | | | | | | | | | | | | | | | | --| | |-- /init | |-- /inittab | |-- /profile | |-- /cshrc | |-- /groups | |-- /passwd | |-- /gettydefs | |-- /termcap | |-- /systemid | |-- /mnttab | |-- /conf/cf.d | | | | Scripts para llevar al sistema a modo multiusuario. --+-- /boot Default para booteo. | |-- /auths Default p/creacin de usuarios. | |-- /format Default formateo diskette UNIX. | |-- /tar Default para comando tar. | |-- /cleantmp Directorios temporarios a borrar. | |-- /login Default para login. | |-- /lpd Default para impresin. | |-- /msdos Dispositivos para comandos DOS. | |-- /passwd Default para configuracin de passwords. | |-- /filesys Tabla de filesystems a montar. Script final inicializacin del Kernel. Tabla utilizada por init. Script ambiental (.profile) default p/ creacin de usuarios con Bourne Shell. Idem /profile para C-Shell (.cshrc). Informacin sobre los grupos. Informacin sobre los usuarios. Usado por comando getty para fijar la lnea serie (terminal). Caractersticas de las terminales. Identificacin del sistema. Tabla de dispositivos montados por comando mount. --+-- /configure Cambio de parametros del Kernel. | |-- /link_unix Re-linkea el Kernel. | |-- /init.base Mantiene cambios efectuados en inittab.

/etc

Curso de UNIX para Programadores.


| | | | | | | |-- /mtune | |-- /stune | |-- /mdevice Informacin sobre parametros del sistema. Seteo parametros del sistema. Descripcin de los drivers.

/etc/conf/cf.d: Directorio de configuracin del Kernel. /etc/default: Informacin por defecto paa algunos comandos. Contenido de directorio /usr. /usr --+-- /bin Comandos del UNIX. | |-- /include Archivos *.c del compilador C. | |-- /lib ----------+-- /goodpw Archivos de texto y programas para la eleccin de passwords. | | | |-- /grafinfo Informacin sobre terminales grficas. | | | |-- /keyboard Informacin sobre teclados. | | | |-- /terminfo/terminfo.src Caractersticas de terminales. | | | |-- /mkuser/homepaths Directorios casa de los usuarios. | | | |-- /sysadmin/schedule Tabla de backups programados. | | |-- /spool --+-- /mail Mensajes recibidos por mail. | | | |-- /uucppublic Archivos recibidos por uucp. | | | |-- /lp/model Interfaces para impresoras. | | | |-- /lp/log/requests Informacin pedidos de impresin. | | |-- /adm --+-- /hwconfig Informacin del hardware instalado. | | | |-- /messages Mensajes de error enviados a consola. | | |-- /pub --+-- /ascii Tabla ASCII. | | | |-- /greek Letras Griegas. Hay que sealar que siempre estamos posicionados en algn directorio de la estructura, al cual denominaresmos el directorio corriente.

Curso de UNIX para Programadores.


Pathnames y nombres de archivos. Se denomina pathname a la cadena de nombres de directorios que deben ser recorridos a lo largo de la estructura para llegar hasta un archivo determinado. Cada nombre de directorio se separa con una barra. Ejemplo: /usr/carlos/arc1. Dicho pathname puede ser absoluto o relativo. El pathname absoluto es aquel que comienza con una barra indicando que se inicia la exploracin desde el directorio raiz, y es el que corresponde al ejemplo dado. El pathname relativo en cambio, parte de la idea de que uno siempre esta trabajando en un directorio determinado, el directorio corriente, y la descripcin de la cadena de directorios comienza por el. As por ejemplo, en el ejemplo anterior, si nuestro directorio corriente es el /usr/carlos podemos acceder al archivo arc1 simplemente indicando su nombre sin nada que lo preceda. El directorio corriente tambin se simboliza con el punto (.). As en el ltimo ejemplo podemos especificar el mismo archivo con ./carlos/arc1. El "." es un smbolo especial que indica el directorio corriente pero tambin hay otro smbolo especial que es el "..", el cual indica el directorio padre o inmediato anterior de aquel en el cual estamos posicionados. As si nos encontramos en el directorio /usr/ruben, y queremos acceder al archivo que se encuentra en /usr/carlos/arc1, podemos indicarlo como ../carlos/arc1. Al indicar .. estamos dando un pathname que arranca desde el directorio padre o inmediato anterior del corriente, es decir desde el directorio /usr. Hay que hacer notar que en el directorio /usr/ruben puede existir otro archivo cno el nombre arc1 sin que origine ningn conflicto o ambigedad, puesto que los pathnames son diferentes. Esto establece la regla que impide la duplicacin de los nombres de archivo y es que no pueden existir en el sistema dos archivos con el mismo pathname. Los nombres de los archivos en UNIX pueden tener hasta 14 caracteres de longitud. Pueden incluirse letras y nmeros, maysculas y minsculas y signos como . - + _ quedando exceptuados expresamente algunos signos como "/", "\", "?","*", y otros. Cabe destacar que UNIX diferencia las letras minsculas de las maysculas, de tal manera que no ser los mismo el archivo arc1 que el archivo ARC1.

Curso de UNIX para Programadores.


Ingreso y Egreso del sistema (Login - Logout). El procedimiento de login es aquel que posibilita al usuario identificarse ante el sistema proporcionando su nombre de login y su palabra de pase o clave. Si el usuario est declarado sin palabra clave dentro del sistema, el mismo solicitar igualmente la clave pero esta sera la tecla <ENTER>. El UNIX exhibir el siguiente mensaje en una terminal habilitada para trabajar: Unix386!login: Ante esta pregunta, el usuario debe responder con su nombre de login o nombre de usuario reconocido por el sistema, terminandolo con un <ENTER>. Posteriormente solicita la clave o password dando el siguiente mensaje : Password: Aqu el usuario tiene que escribir su palabra clave notando que el sistema nunca la muestra por pantalla. Esto es a los fines de evitar que alguien que est mirando la operacin averigue la clave del usuario. Si la palabra clave se ha dado correctamente, aparecer un mensaje de reconocimiento del sistema y en el cual pueden figurar tambin las noticias del da que el administrador del sistema quiera informar a los usuarios. Luego de esto, nos va a aparecer lo que se denomina prompt del interprete de comandos o shell. Este prompt es un signo "$" al comienzo de la lnea el cual nos indica que el shell est listo para recibir algn comando. Aqu podemos indicar el nombre de un programa o un comando interno del shell a ejecutar. Cuando queremos terminar nuestro trabajo, debemos hacer el procedimiento contrario denominado procedimiento de logout. Con el sacamos a la terminal de login y cerramos nuestro trabajo. Para hacerlo, simplemente tenemos que presionar las teclas <CTRL>+<D>, o la palabra exit y <ENTER>, ante lo cual aparecer nuevamente elpedido de login por parte del UNIX. Cuando terminamos de trabajar es conveniente hacer el procedimiento de logout, puesto que de lo contrario cualquier persona puede sentarse y trabajar en la misma terminal siendo reconocido por el sistema como nosotros, como nuestro login.

Comandos: parametros y argumentos. Un comando no es ms que un programa provisto por el UNIX que tiene coo finalidad servir al usuario de una herramienta para el manejo de archivos, para el procesamiento de los mismos o para el control de sus programas y procedimientos. Una de las propiedades del shell es que permite al operador ingresar el nombre del programa, tipeandolo desde la terminal, seguido opcionalmente de una serie de parametros y/o argumentos. Los parametros pueden especificar opciones que debern ser reconocidas dentro del programa y que pueden modificar el modo de funcionamiento del mismo. Los argumentos pueden significar los nombres de los archivos donde deber operar el programa pedido. El shell interpreta como lnea de comando al conjunto de caracteres tipeados por el operador desde el prompt dado por el shell hasta el <ENTER> que da el operador como fin de lnea. La lnea de comando es dividida por el shell en palabras, interpretando como sepraciones entre palabras a los espacios en blanco y los tabuladores. La primer palabra tipeada en una lnea de comando es simpre el nombre del programa o comando a ejecutar. Las posteriores palabras que le siguen sern entonces los argumentos o parametros pasados a ese programa para su ejecucin.

Curso de UNIX para Programadores.


Es costumbre en los comandos de UNIX, que las opciones o parametros que estn destinados a modificar la forma actual de funcionamiento del programa, sean indicadas con un signo "-" seguido por uno o ms caracteres, y luego se pasan los argumentos correspondientes al programa pedido. Cabe destacar que no todos los programas llevan parametros y argumentos, algunos no llevan nada, otros llevan parametros, otros llevan argumentos solamente y otros llevan ambos. Tambin debemos advertir que la mayscula y la minscula tienen distinto significado para el UNIX.

Curso de UNIX para Programadores.


Creacin de Directorios, Usuarios, Grupos, Dispositivos e Impresoras. Hasta ahora hemos visto que en l estructura de archivos existen distintos directorios del UNIX, cuya finalidad hemos dscripto someramente. Cada usuario puede construir nuevos directorios para organizar convenientemente sus archivos segn proyecto, tipo de archivo, antigedad, etc.. Para crear un directorio, disponesmos del comando mkdir, cuya sintaxis es la siguiente: mkdir directorio directorio representa el pathname absoluto o relativo del directorio a construir. As, para construir el directorio bin dentrl del directorio casa del usuario carlos, hariamos: $ mkdir /usr/carlos/bin Si estamos posicionados en el directorio /usr/carlos lo hecho sera equivalente, al siguiente comando: $ mkdir bin El significado de esta ltima forma es que el mkdir construir el directorio bin dentro del directorio corriente, cualquiera que sea. Para crear n directorio, es necesario que el mismo no exista previamente. Cuando queremos remover un directorio, disponemos del comando rmdir, cuya sintaxis es la siguiente: rmdir directorio directorio es el pathname absoluto o relativo del directorio a remover. Para remover un directorio se deben reunir las siguientes tres condiciones: 1- Que el mismo exista y que tengamos permiso para removerlo (ser luego descripto). 2- Que el directorio a remover est vacio. 3- Que nadie est posicionado en dicho directorio.

Una de las funciones del administrador de sistemas es la creacin y remosin de usuarios. Para la creacin de usuarios tenemos el usuario sysadm que accede a un men interactivo. Buscando desde el men principal la ltima opcin denominada users aparece un sub-men que en su primer punto permite la creacin de nuevos usuarios. Ingresando en esta opcin se deben completar los siguientes campos: comentario: es un comentario descriptivo de nombre completo, departamento, etc., hasta veinte caracteres. nombre de login: aqu el administrador de sistema debe colocar el nombre del login del nuevo usuario. nmero de usuario, (si no va a ser el default): normalmente el UNIX va asignando una secuencia correlativa de nmeros de usuarios para la identificacin de cada usuario que se v creando. Generalmente el administrador de sistemas ir siguiendo esa secuencia asignada

Curso de UNIX para Programadores.


automticamente. grupo al que pertenece el usuario: los usuarios en UNIX estn organizados en grupos, y en el momento de su creacin el usuario puede afiliarse a uno existente o crear automticamente un nuevo grupo. crea directorio casa: pregunta por si o por no si deseamos crear un directorio casa del usuario, cuando se crea el directorio casa se debe indicar cual es el pathname de dicho directorio. tipo de shell: da a elegir sobre distintos tipos de intrpretes de comandos. Normalmente se elije la opcin que muestra en pantalla /bin/sh que es el Bourne Shell o sea el shell standar.

Una vez completados estos datos se debe presionar la tecla <F3> para comenzar con la creacin de dicho usuario. Cuando es necesario remover un usuario, porque haya dejado de trabajar efectivamente, el administrador de sistemas dispone de otro punto de men que permite la remocin de usuarios. Para poder remover a un usuario, deben cumplirse las siguientes condiciones: 1- El directorio casa del usuario debe estar vacio (controlar archivos ocultos). 2- No debe tener correspondencia pendiente almacenada en su casilla de correo. La creacin de grupos se realiza de igual manera que cuando se crea un nuevo usuario con la diferencia que se debe indicar que la creacin es de grupos y no de usuarios. Solamente se deben indicar algunos campos y se realiza la creacin del nuevo grupo. Para la remocin de grupos se debe ingresar como para remover un usuario pero se debe indicar que se quiere remover un grupo, solicitar el nmero de grupo a remover. Un dispositivo es un archivo especial que generalmente se encuentra dentro del directorio /dev. Estos archivos contienen la informacin necesaria para poder manejar el perifrico al que estan conectados. Estos archivos se dividen en dos grandes categorias: los de tipo caracter o los de tipo bloque. Los primeros realizan la conexin con el perifrico caracter a caracter; los segundos realizan la conexin con el perifrico mediante bloques de caracteres. Normalmente los dispositivos tipo caracter son los que manejan diskettes. Los de tipo bloque son los que manejan discos rigidos. Dentro del directorio /dev existen una gran variedad de dispositivos que son instalados al momento de intalacin del UNIX. Tambin dentro del directorio /dev existen los dispositivos que manejan las terminales y las impresoras. Para la creacin de algn nuevo dispositivo se debe ingresar al usuario sysadm y utilizar la opcin de puertos (ports). Esta opcin abre un sub-menu que permite la creacin de los nuevos dispositivos. Solamente se debe completar los campos requeridos. Tambin mediante esta opcin se pueden remover los dispositivos requeridos. Se debe tener especial cuidado de no remover un dispositivo en uso. Para la creacin de nuevas impresoras se debe ingresar al usuario sysadm. Una vez dentro de este men se debe seleccionar la opcin printers. Esta opcin abre un sub-menu donde se pueden crear, modificar o remover las clases de impresoras, formularios, dispositivos, etc.. Ingresando a la opcin impresoras se puede crear una nueva impresora. Solamente se debe completar los campos requeridos. De igual manera se puede remover una impresora, solamente se debe tener en cuenta que no debe tener listado alguno pendiente de impresin.

Curso de UNIX para Programadores.


Seguridad y Permisos de Archivos y Directorios. Se puede decir queun archivo es una coleccin de informacin; no obstante el sistema UNIX mantiene una variedad de informacin adicional que lo describe. La misma incluyen privilegios de acceso, el tipo de archivo, la fecha de la ltima modificacin, el tamao del archivo y la localizacin del mismo sobre el disco. Las implicancias del tipo de archivo y privilegios tiene consecuencia a traves de todo el sistema UNIX. Muchas operaciones asumen un archivo de un tipo a otro. Por ejemplo no deberamos usar el comando : $ cd /usr/com1/mbox porque /usr/com1/mbox no es un directorio sino un archivo comn conteniendo una correspondencia. Seguidamente el comando: $ cat /usr/com1 producir cualquier cosa sobre la pantalla porque /usr/com1/ es un directorio y no un archivo de texto. Cada vez que nosotros accedemos a un archivo, el sistema chequea nuestros derechos o permisos de acceso. Los privilegios normalmente son colocados para que estemos completamente libres en nuestro directorio casa y nuestros vecinos tengan limitado el acceso. Algunos de los mensajes del UNIX simplemente tratan de decirnos que no estamos habilitados para acceder a ciertos archivos, debido a las protecciones que proporciona el sistema. Primero de todo el sistema recuerda de que tipo es cada archivo. Los archivos son de varios tipos: directorio, archivos comunes o archivos especiales, ya sean estos ltimos de tipo block o de tipo caracter. Recordemos que los directorios son archivos que el sistema manipula para mantener la estructura jerrquica del file-system, y los archivos comunes son archivos que el usuario usa para almacenar informacin. A los usuarios les est permitido leer informacin de un directorio, pero no pueden grabar un archivo de directorio. En UNIX hay tres operaciones que pueden ser ejecutadas sobre un archivo: lectura, grabacin y ejecucin (reading, writing y executing). Leer un archivo significa que el contenido del mismo esta disponible. Grabar un archivo significa que el contenido de un archivo puede llegar a ser modificado o borrado. Ejecutar un archivo puede significar o bien almacenar un archivo en memoria principal y ejecutar las instrucciones de mquina que estn almacenadas en ese archivo, o leer un procedimiento shell en el cual dentro del mismo estn ditintos comandos que se puedan ejecutar. Cuando se trata de directorios, los modos de acceso son ligeramente distintos.Permiso de lectura para un directorio significa que diversos comandos les est permitido leer informacin en el directorio. Por ejemplo en el caso del comandos l , el programa lee el directorio para descrubrir su contenido; si el mismo tiene permiso de lectura, es imposible descubrir que arhcivos estn contenidos en ese directorio.

Curso de UNIX para Programadores.


Es posible operar en directorios donde tienen denegados el permiso de lectura, solo que se necesita conocer el nombre del archivo que est dentro de ese directorio. Los privilegios de escritura para un directorio, significa que le est permitido crear o borrar archivos en este directorio. El denegar un permiso de escritura para cierto directorio, no significa que los archivos que estn dentro del mismo no puedan ser modificados; el privilegio de escritura est controlado por el propio archivo. El permiso de ejecucin para un directorio, significa que el sistema, buscar el directorio e el curso de un pathname completo para un archivo. Cuando especificamos un pathanme en lugar de un nombre de archivo simple, cada uno de esos directorios en el pathname es buscado por el nombre del p roximo directorio en la secuencia. Si a nuestro sistema le pedimos: $ cat /usr/bin/source/carta entonces debemos tener permiso de ejecucin (de busqueda), para los directorios usr, bin y source. Denegar un permiso de bsqueda en un directorio es una real proteccin en contra de las personas que pretenden acceder a los mismos. No podemos cambiarnos de directorio, a traves del comando cd, a directorios donde tienen denegados permisos de ejecucin. Cada archivo del sistea es propiedad de un usuario, y cada archivo est siempre asociado con un grupo en particular (en el sistema un grupo es un conjunto de usuarios que tienen algo en comn, por ejemplo, tpicos usuarios son usuarios de un departamento, o personas trabajando en conjunto en un proyecto, etc.). El esquema de proteccin de acceso a archivos depende del tipo de acceso que es requerido (lectura, escritura, ejecucin) y quien hace los accesos. Hay un conjunto de privilegios para el propietario del archivos, otro para miembros de un mismo grupo y un tercero para otros (que no pertenecen al grupo). Estos privilegios se pueden visualizar cuando exhibimos el comando l . El propietario o dueo de un archivo est habilitado para controlar los permisos de este archivo, usando el comando chmod, que veremos posteriormente; as tambin tiene la posibilidad de modificar el grupo a ese archivo o al mismo propietario. -rw-r--r-|||||||||| | | | | | | | r-| | | |r-|rw1 com1 other 2322 Jun 12 12:00 arch1

Permisos pertenecientes a otros. Permisos pertenecientes a grupos. Permisos pertenecientes al usuario. Tipo de archivo (cuando aparece un "-" hace referencia a un archivo comn)

Si en algn momento de nuestro trabajo decidimos modificar los privilegios para los archivos que vamos a generar invocamos al comando umask . Si queremos modificar los privilegios sobre archivos o directorios ya generados, usamos el comando chmod.

Comando umask Sintaxis: umask valor

Curso de UNIX para Programadores.


Descripcin: El valor de un nmero de tres dgitos. Los tres dgitos representan los permisos de usuarios, grupos y otros respectivamente. El valor de un dgito define que permiso es dado y es mostrado en la siguiente tabla: Dgito 0 1 2 3 4 5 6 7 Permisos Lectura y escritura (tambin de ejecucin para directorio). Lectura y escritura. Lectura (tambin ejecucin para el caso de directorios). Permiso de lectura. Escritura (tambin de ejecucin para directorios). Escritura. Ejecucin para el caso de directorios. Sin permisos.

Con esto podemos deducir los permisos que tenemos por default, siendo que para el caso de archivo los permisos son: -rw-r--r-- .........archi1 en el caso del directorio: drwxr-xr-x ........dir1 con esto vemos que el valor utilizado para el umask es 022.

Comando chmod Sintaxis: chmod modo archivo(s) chmod [quien]+-=[permiso...] nombre-archivo(s) Descripcin: El comando chmod cambia los permisos de acceso de un archivo o directorio especificado. El modo puede ser una expresin compuesta de letras y/o operandos (llamado modo simblico) o un nmero (llamado modo absoluto). El comando chmod usando modo simblico tiene la forma: chmod [quien]+-=[permiso...] nombre-archivo(s) en "quien" puede utilizarse tanto una o cualquier combinacin de las siguientes letras: a (all), es decir todos, donde todos es tanto usuario, como grupo, como otros. u (user) indica usuario. g (group) indica grupo. o (other) indica otros. Los operadores con: + asigna el permiso. desasigna el permiso. = asigna los permisos indicados y borra todos los otros permisos (si existen). Si ningn

Curso de UNIX para Programadores.


permiso es asignado, los permisos existentes son desasignados. Los permisos pueden ser cualquier combinacin de las siguientes letras: x de ejecucin (eXecute). r de lectura (Read). w de escritura (Write). El comando chmod usando modo absoluto tiene la forma: chmod modo archivo(s) donde "modo" es un nmero octal construdo de la siguiente forma: el permiso de lectura vale un 4, el permiso de escritura vale un 2 y el permiso de ejecucin vale un 1. Sumando mediante esta denominacin se obtiene un 0 como sin permiso y 7 con todos los permisos, o sea que : 0 000 --1 001 --x 2 010 -w3 011 -wx 4 100 r-5 101 r-x 6 110 rw7 111 rwx Es decir que si queremos que archi1 tenga permisos de lectura y grabacin solamente para usuario y dejar sin permisos para los dems debemos colocar: $ chmod 600 archi1 El siguiente comando da a todos los usuarios permiso de ejecucin para archi11 (modo simblico): $ chmod a+x archi1 El siguiente comando desasigna los permisos de lectura y grabacin para el grupo y otros: $ chmod go-rw archi1 El siguiente comando da todos los permisos a todos los usuarios (modo absoluto): $ chmod 777 archi1

Curso de UNIX para Programadores.


Comando chown Sintaxis: chown propietario archivo(s)

Descripcin: El comando chown cambia el propietario asociado con uno o varios archivos. Ej. Si nos logeamos como com1: $ pwd /usr/com1 $l -rw-r- - r - - 1 com1 group . . . . . . . archi1 -rw-rw-rw- 1 com1 group . . . . . . . archi2 $ chown com2 archi* Con esto hemos cambiado el propietario de los archivos y lo hemos llevado a que ahora cada propietario sea com2. $l -rw-r- - r - - 1 com2 group . . . . . . . archi1 -rw-rw-rw- 1 com2 group . . . . . . . archi2 Si guisieramos ahora volver al punto de partida, es decir que los archivos sean de com1: $ chown com2 archi* ... un mensaje de error nos indicara el sistema, porque ahora el propietario de los archivos es com2...

Comando chgrp Sintaxis: chgrp grupo archivo(s)

Descripcin: El comando chgrp modifica el grupo de cada archivo. El grupo puede ser un nmero decimal (correspondiente al identificador de grupo), o bien el nombre de un grupo encontrado en el archivo /etc/group. Ej. $ chgrp gp * Modificamos todos los grupos de los archivos dentro de mi directorio al grupo gp.

Curso de UNIX para Programadores.


Redireccionamiento y encadenamiento de Comandos. Cuando un comando comienza su ejecucin, este normalmente espera que tres archivos estn ya abiertos: un standard input SI, un standard output SO y un diagnostic output (tambin llamado standard error SE). Un nmero llamado file descriptor est asociado con cada uno de estos archivos. Por convencin el file descriptor 0 esta asociado con la SI, el file descriptor 1 esta asociado con la SO y el file descriptor 2 esta asociado con la SE. Todos estos archivos estn inicialmente conectados a la terminal (0 al teclado, 1 y 2 a la pantalla de la terminal). Como decamos la standard input y la standard output estn nuevamente asociadas a la terminal; sin embargo puesto que la standard input y la standard output estn establecidos por el shell, es posible que sean reasignadas por este. La habilidad del shell de reasignar la SI y la SE es una de las caractersticas ms importantes de sistema UNIX. Supongamos que deseamos tener la salida del comando ps: $ ps el programa process status escribir esta informacin sobre la SO, es decir sobre nuestra pantalla. Sin embargo si entramos el comando: $ ps >posteridad el resultado ser ligeramente diferente porque la SO est redireccionada. El programa process status intent escribir la informacin sobre la pantalla, pero debido a la notacin especial ">posteridad", el shell conect la SO a un archivo comn llamado "posteridad". No veremos la salida del comando sobre la pantalla. El smbolo mayor ">" es un caracter especial del shell, que especifica que la SO de un comando debe ser dirigida a un archivo indicada por la prxima palabra en el comando. Si el archivo ya existe, se destruye el contenido previo. Podemos verificar el resultado simplemente tipeando: $ cat posteridad La utilidad ms visible del comando cat, es precisamente concatenar: $ cat archi1 archi2>archi3 Ocasionalmente si deseamos dirigir la salida a un archivo, pero queremos que la misma sea adicionada al final del archivo, lo hacemos con el doble redireccionamiento ">>". $ cat archi1 >> archi2 si el archivo archi2 existe, el mismo ahora tendr el contenido de archi1 ms el contenido de archi2; si el archivo archi2 no llegara a existir, luego de este comando quedan los dos archivos archi1 y archi2 con el mismo contenido. Si quisieramos que algn mensaje de error, o algn tipo de diagnstico dado por algn comando no

Curso de UNIX para Programadores.


salga sobre la SO, sino que sea redireccionado a un archivo, como es el caso de alguna compilacin, debemos hacerlo de la siguiente forma: $ cc archi1 2>archi2 estamos asignando el file descriptor nmero 2 a un archivo. La SI tambin puede ser redireccionada. Para ello utilizamos el signo menor "<". Puesto que la SI puede ser redireccionada, es posible que el shell adquiera los comandos desde un archivo ordinario. Por ejemplo: si generamos con un editor el archivo "comandos" y dentro de l colocamos: $ cat >comandos ps date l Luego para invocarlo desde el shell, tambin lo podemos hacer de la forma: $ sh <comandos el cual ejecutar los comandos que estn dentro de este archivo. Un ejemplo ms claro lo tenemos con el comando write: $ write tty01 <mensaje con lo cual no necesitamos incorporar el mensaje a enviar desde el teclado, sino que directamente tomar como SI el contenido que est en el archivo "mensaje". Es posible la combinacin de ambas dentro de una lnea de comandos. Ejemplo: $ sh <comandos > resultado con lo cual tendremos de los tres programas (ps, date, l); el mismo ser grabado sobre el archivo resultado. Si queremos crear un archivo nuevo llamado newfile tendremos que digitar lo siguiente: $ > newfile Una estructura tipo pipe conecta la SO de un programa a la SI de otro programa. Un pipe es diferente de una redireccin de Entrada/Salida. La redireccin de una salida graba la salida de un programam en un archivo, y la direccin de entrada causa que un archivo contenga la informacin de entrada a un programa; mientras que un pipe directamente conecta la salida de un programa con la entrada de otro programa. Supongamos que quisieramos saber cuantos archivo estn en mi directorio (/usr/com1). Quizs el mtodo ms obvio es contar el nmero de lneas que aparecen cuando yo ejecuto el comando l ; pero tambin existe el comando wc, para lo cual una primer tcnica podra ser la siguiente: $ l /usr/com1 >temparchi $ wc -l temparchi $ rm temparchi Utilizando el mtodo de pipe el cual se conecta a traves de la barra vertical "|", la lnea de comando resulta ms prctica:

Curso de UNIX para Programadores.


$ l /usr/com1 | wc -l Ejemplos: $ who | lpr imprime los usuarios que estn actualmente logeados. $ who | grep juan | pr muestra por pantalla y paginado, una lista de los usuarios cuyo nombre de login es "juan".

Esta pgina ha sido Bajada desde http://members.es.tripod.de/tutorial/index.html

Vous aimerez peut-être aussi