MI COMPUTADOR ES TU COMPUTADOR
   
 
  CURSO UNIX

TU CURSO UNIX

 
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 :
 
     Pequeña reseña acerca del origen del Sistema Operativo UNIX.
     Encendido y apagado del Sistema Operativo UNIX.
     Organización y Estructura del sistema de archivos (File System).
     Ingreso y Egreso del sistema (Login - Logout).
     Creación 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.
     Pequeña reseña acerca del sistema de comunicaciones en UNIX.
     Técnicas básicas de administración del sistema UNIX.
     Técnicas básicas del mantenimiento de sistema UNIX.
 
 
 
 
Pequeña reseña 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 simultáneamente de los distintos usuarios que estén trabajando en él, pero realmente solo atiende a uno solo por vez durante una pequeña fracción de tiempo (del orden de los milisegundos). El sistema operativo ejecuta un trozo de un programa, luego lo interrumpe, toma otro programa, continua su ejecución, y así sucesivamente. De esta manera le da a cada usuario la impresión de que él solo esta utilizando la máquina.
El UNIX fue originalmente desarrollado por los laboratorios Bell de la AT&T. Estos participaron alrededor del año 1969 en un proyecto conjunto con la General Electric en la elaboración 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. Más 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 había participado del proyecto Multics, disponía de una computadora PDP-7 e ideó un sistema operativo multiusuario según sus propias ideas que tuviera un manejo dinámico 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 máquina un poco más grande, una PDP-11.
El UNIX estaba en sus orígenes escrito en lenguaje de máquina, es decir, estaba hecho mediante el assembler de la PDP-7.
Cuando se planteó el problema de transportar el UNIX de una máquina a otra se dieron cuenta que era necesario reescribirlo en su totalidad, puesto que al hacerlo en assembler lo hacían fuertemente dependiente del hardware. Entonces vieron la posibilidad de reescribirlo en algún lenguaje de alto nivel, de tal manera que fuera portable de una máquina a otra y que solamente tuviera algunas partes dependientes estrictamente del hardware y configuración de la máquina.
De esta manera, Ken Thompson junto a Dennis Ritchie y Brian Kernighan desarrollaron un nuevo lenguaje de programación al cual denominaron C y escribieron el UNIX en este nuevo nivel, dejando lo mínimo necesario dependiente del hardware. Así se hacía más sencillo su transporte de una máquina a otra, aún entre máquinas con CPUs totalmente distintas.
Inicialmente, el UNIX fue utilizado en los Laboratorios Bell solamente para uso interno en la preparació de documentación relacionada con sus patentes y de programas de aplicación. No se comercializó, y se lo distribuía 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 año fue portado por primera vez a una máquina 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. Además la AT&T licenció a varias empresas los fuentes del sistema operativo escritos en C , con los fines de transportarlos a distintas máquinas. Estos sistemas operativos, derivados del UNIX, tuvieron nombres tales como BSD, XENIX, ONIX, CROMIX, etc.
Además esto produjo la diversificación del hardware que soporta un sistema UNIX o similar, y así actualmente se tienen versiones del UNIX para máquinas con un procesador tan chico como un Z80 hasta la máquina actualmente más grande del mundo, la CRAY-2, donde coexiste co otros sistemas operativos.
El resultado de esto es que además de la popularización y la diversificación, los usuarios pueden tomar ventajas de que los programas escritos en C para una máquina determinada son portables con mucha facilidad a otra máquina, y basta solamente compilarlos en la nueva máquina con el compilador correspondiente para que funcionen en la misma.
 

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 (periféricos).
            - 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 periféricos conectados a la máquina y cargar otro programa de booteo inicial existente en el disco rígido, transfiriendole luego el control. Este último programa de booteo examina el disco rígido principal viendo que partición del mismo está activa y trata de cargar el programa de booteo de la partición. Luego comienza el proceso de inicialización. Durante el mismo reconoce los periféricos conectados al equipo (pantalla, memorias, discos rigidos, disketeras, etc.). Posteriormente según la versión 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 impresión (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 deberán 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 ejecución 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 ejecución y cerrar todos los archivos en uso antes de apagar físicamente 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 ser ejecutado desde el superusuario o el usuario del administrador del sistema o un usuario creado exclusivamente para apagar el sistema.
 

Organización 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 aplicación. En otras palabras, provee las rutinas y funciones que el usuario dispone a traves de un lenguaje de programación o a traves de los interpretes de comandos. El kernel cumple las funciones de la administración y supervisión 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 ejecución 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 están 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 intérprete 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 más que programas ya provistos con el UNIX que le permiten manejar archivos, copiarlos, crearlos, borrarlos, procesarlos, editarlos, etc. El shell también le permite al usuario controlar la ejecución de sus programas e inclusive conectar programas entre si.
Existen varios tipos de Shell dentro del UNIX y el más conocido de ellos es el denominado Bourne Shell, que toma el nombre de su diseñador, el cual será explicado en este mismo manual más adelante.
El Shell es el programa con el cual nos relacionamos cuando estamos trabajando en forma interactiva dentro del UNIX. En las capas periféricas 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 cálculo o un sistema de contabilidad realizados en cualquier otro lenguaje.
Es decir que el modelo de capas, la capa más interna (Kernel) provee los servicios y recursos para ser utilizados por las capas más externas. Las capas más externas son los altos niveles de trabajo mientras que las capas más internas son los niveles de trabajo de bajo nivel o más 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 aplicación resultan independientes del hardware y son portables entre distintas instalaciones de UNIX.
El UNIX mantiene los archivos en el disco organizados bajo una forma jerárquica 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 símbolo "/" 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 límite dado por la practicidad. Las hojas del árbol son archivos y las ramas o nudos son directorios.
Los siguientes directorios principales dependen del directorio raiz:
root     --+-- /bin         Comandos más comunes del UNIX.
               |
               |-- /dev         Dispositivos especiales.
               |
               |-- /etc           Programas adicionales y archivos de datos default.
               |
               |-- /usr           Rutinas de servicio del usuario.
               |
               |-- /lib           Librerías 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 también /u).
 
Contenido del directorio /dev.
 
dev     --+-- /console   Consola del sistema.
             |
             |-- /fd*           Diskettes (dispositivos tipo bloque).
             |
             |-- /hd*          Discos rígidos (dispositivos tipo bloque).
             |
             |-- /lp*           Impresoras en paralelo.
             |
             |-- /rfd*         Diskettes (dispositivos tipo caracter).
             |
             |-- /rhd*         Discos rígidos (dispositivos tipo caracter).
             |
             |-- /root          Filesystem raiz.
             |
             |-- /tty*          Líneas serie (terminales e impresoras serie).
             |
             |-- /u              Filesystem 'u'.
             |
             |-- /clock        Reloj del sistema.
             |
             |-- /null          Dispositivo nulo.
 
 
 
Contenido del directorio /etc
 
/etc     --+-- /rc*          Scripts para llevar al sistema a modo multiusuario.
             
             |-- /default     --+-- /boot       Default para booteo.
             |                        |
             |                        |-- /auths       Default p/creación de usuarios.
             |                        |
             |                        |-- /format     Default formateo diskette UNIX.
             |                        |
             |                        |-- /tar           Default para comando tar.
             |                        |
             |                        |-- /cleantmp Directorios temporarios a borrar.
             |                        |
             |                        |-- /login       Default para login.
             |                        |
             |                        |-- /lpd          Default para impresión.
             |                        |
             |                        |-- /msdos     Dispositivos para comandos DOS.
             |                        |
              |                        |-- /passwd   Default para configuración de passwords.
             |                        |
             |                        |-- /filesys     Tabla de filesystems a montar.
/etc     --|
             |
             |-- /init           Script final inicialización del Kernel.
             |
             |-- /inittab      Tabla utilizada por init.
             |
             |-- /profile      Script ambiental (.profile) default p/ creación de usuarios con Bourne Shell.
             |
             |-- /cshrc        Idem /profile para C-Shell (.cshrc).
             |
             |-- /groups      Información sobre los grupos.
             |
             |-- /passwd    Información sobre los usuarios.
             |
             |-- /gettydefs Usado por comando getty para fijar la línea serie (terminal).
             |
             |-- /termcap    Características de las terminales.
             |
             |-- /systemid Identificación del sistema.
             |
             |-- /mnttab     Tabla de dispositivos montados por comando mount.
             |
             |-- /conf/cf.d --+-- /configure   Cambio de parametros del Kernel.
             |                        |
             |                        |-- /link_unix             Re-linkea el Kernel.
             |                        |
             |                        |-- /init.base    Mantiene cambios efectuados en inittab.
             |                        |
             |                        |-- /mtune        Información sobre parametros del sistema.
             |                        |
             |                        |-- /stune          Seteo parametros del sistema.
             |                        |
             |                        |-- /mdevice    Descripción de los drivers.
 
 
/etc/conf/cf.d: Directorio de configuración del Kernel.
/etc/default:    Información 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 elección de passwords.
             |                        |
             |                        |-- /grafinfo Información sobre terminales gráficas.
             |                        |
             |                        |-- /keyboard            Información sobre teclados.
             |                        |
             |                        |-- /terminfo/terminfo.src     Características 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    Información pedidos de impresión.
             |                        |
             |-- /adm          --+-- /hwconfig          Información del hardware instalado.
             |                        |
             |                        |-- /messages            Mensajes de error enviados a consola.
             |                        |
             |-- /pub          --+-- /ascii                   Tabla ASCII.
             |                        |
             |                        |-- /greek                  Letras Griegas.
 
Hay que señalar que siempre estamos posicionados en algún directorio de la estructura, al cual denominaresmos el directorio corriente.
 
 
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 exploración 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 descripción 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 también se simboliza con el punto (.). Así en el último ejemplo podemos especificar el mismo archivo con ./carlos/arc1.
El "." es un símbolo especial que indica el directorio corriente pero también hay otro símbolo 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 ningún conflicto o ambigüedad, puesto que los pathnames son diferentes. Esto establece la regla que impide la duplicación 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 números, mayúsculas y minúsculas y signos como . - + _ quedando exceptuados expresamente algunos signos como "/", "", "?","*", y otros. Cabe destacar que UNIX diferencia las letras minúsculas de las mayúsculas, de tal manera que no será los mismo el archivo arc1 que el archivo ARC1.

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 operación 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 también las noticias del día 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 línea el cual nos indica que el shell está listo para recibir algún 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 más 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 deberán 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 línea 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 línea. La línea 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 línea de comando es simpre el nombre del programa o comando a ejecutar. Las posteriores palabras que le siguen serán entonces los argumentos o parametros pasados a ese programa para su ejecución.
Es costumbre en los comandos de UNIX, que las opciones o parametros que están destinados a modificar la forma actual de funcionamiento del programa, sean indicadas con un signo "-" seguido por uno o más 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. También debemos advertir que la mayúscula y la minúscula tienen distinto significado para el UNIX.

Creación 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 según proyecto, tipo de archivo, antigüedad, 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 sería 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 creación y remosión de usuarios. Para la creación de usuarios tenemos el usuario sysadm que accede a un menú interactivo. Buscando desde el menú principal la última opción denominada users aparece un sub-menú que en su primer punto permite la creación de nuevos usuarios. Ingresando en esta opción 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.
     número de usuario, (si no va a ser el default): normalmente el UNIX va asignando una secuencia correlativa de números de usuarios para la identificación de cada usuario que se v creando. Generalmente el administrador de sistemas irá siguiendo esa secuencia asignada automáticamente.
     grupo al que pertenece el usuario: los usuarios en UNIX están organizados en grupos, y en el momento de su creación el usuario puede afiliarse a uno existente o crear automáticamente 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 intérpretes de comandos. Normalmente se elije la opción 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 creación 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 remoción 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 creación de grupos se realiza de igual manera que cuando se crea un nuevo usuario con la diferencia que se debe indicar que la creación es de grupos y no de usuarios. Solamente se deben indicar algunos campos y se realiza la creación del nuevo grupo.
Para la remoción de grupos se debe ingresar como para remover un usuario pero se debe indicar que se quiere remover un grupo, solicitará el número de grupo a remover.
Un dispositivo es un archivo especial que generalmente se encuentra dentro del directorio /dev. Estos archivos contienen la información necesaria para poder manejar el periférico 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 conexión con el periférico caracter a caracter; los segundos realizan la conexión con el periférico 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 intalación del UNIX. También dentro del directorio /dev existen los dispositivos que manejan las terminales y las impresoras.
Para la creación de algún nuevo dispositivo se debe ingresar al usuario sysadm y utilizar la opción de puertos (ports). Esta opción abre un sub-menu que permite la creación de los nuevos dispositivos. Solamente se debe completar los campos requeridos.
También mediante esta opción se pueden remover los dispositivos requeridos. Se debe tener especial cuidado de no remover un dispositivo en uso.
Para la creación de nuevas impresoras se debe ingresar al usuario sysadm. Una vez dentro de este menú se debe seleccionar la opción printers. Esta opción abre un sub-menu donde se pueden crear, modificar o remover las clases de impresoras, formularios, dispositivos, etc.. Ingresando a la opción 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 impresión.

Seguridad y Permisos de Archivos y Directorios.
 
Se puede decir queun archivo es una colección de información; no obstante el sistema UNIX mantiene una variedad de información adicional que lo describe. La misma incluyen privilegios de acceso, el tipo de archivo, la fecha de la última modificación, el tamaño del archivo y la localización 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 deberíamos usar el comando :
            $ cd /usr/com1/mbox
porque /usr/com1/mbox no es un directorio sino un archivo común 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 jerárquica del file-system, y los archivos comunes son archivos que el usuario usa para almacenar información. A los usuarios les está permitido leer información de un directorio, pero no pueden grabar un archivo de directorio.
En UNIX hay tres operaciones que pueden ser ejecutadas sobre un archivo: lectura, grabación y ejecución (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 máquina que están almacenadas en ese archivo, o leer un procedimiento shell en el cual dentro del mismo están 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 información 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 están contenidos en ese directorio.
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 estén dentro del mismo no puedan ser modificados; el privilegio de escritura está controlado por el propio archivo.
El permiso de ejecución 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 ejecución (de busqueda), para los directorios usr, bin y source. Denegar un permiso de búsqueda en un directorio es una real protección 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 ejecución.
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 común, por ejemplo, típicos usuarios son usuarios de un departamento, o personas trabajando en conjunto en un proyecto, etc.). El esquema de protección de acceso a archivos depende del tipo de acceso que es requerido (lectura, escritura, ejecución) 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 dueño de un archivo está habilitado para controlar los permisos de este archivo, usando el comando chmod, que veremos posteriormente; así también tiene la posibilidad de modificar el grupo a ese archivo o al mismo propietario.
            -rw-r--r--         1          com1   other    2322    Jun 12 12:00   arch1
            | | | | | | | | | |
            | | | | | | | r--        Permisos pertenecientes a otros.
            | | | |r--              Permisos pertenecientes a grupos.
            |rw-                 Permisos pertenecientes al usuario.
            -                      Tipo de archivo (cuando aparece un "-" hace referencia a un archivo común)
 
Si en algún 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
Descripción:    El valor de un número de tres dígitos. Los tres dígitos representan los permisos de usuarios, grupos y otros respectivamente. El valor de un dígito define que permiso es dado y es mostrado en la siguiente tabla:
            Dígito             Permisos
               0                   Lectura y escritura (también de ejecución para directorio).
               1                   Lectura y escritura.
               2                   Lectura (también ejecución para el caso de directorios).
               3                   Permiso de lectura.
               4                   Escritura (también de ejecución para directorios).
               5                   Escritura.
               6                   Ejecución para el caso de directorios.
               7                   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)
Descripción:    El comando chmod cambia los permisos de acceso de un archivo o directorio especificado. El modo puede ser una expresión compuesta de letras y/o operandos (llamado modo simbólico) o un número (llamado modo absoluto).
El comando chmod usando modo simbólico tiene la forma:
 
                        chmod [quien]+-=[permiso...] nombre-archivo(s)
en "quien" puede utilizarse tanto una o cualquier combinación 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 ningún
                        permiso es asignado, los permisos existentes son desasignados.
 
Los permisos pueden ser cualquier combinación de las siguientes letras:
            x          de ejecución (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 número octal construído de la siguiente forma:
el permiso de lectura vale un 4, el permiso de escritura vale un 2 y el permiso de ejecución vale un 1. Sumando mediante esta denominación se obtiene un 0 como sin permiso y 7 con todos los permisos, o sea que :
            0          000      ---
            1          001      --x
            2          010      -w-
            3          011      -wx
            4          100      r--
            5          101      r-x
            6          110      rw-
            7          111      rwx
 
Es decir que si queremos que archi1 tenga permisos de lectura y grabación solamente para usuario y dejar sin permisos para los demás debemos colocar:
            $ chmod 600 archi1
El siguiente comando da a todos los usuarios permiso de ejecución para archi11 (modo simbólico):
            $ chmod a+x archi1
El siguiente comando desasigna los permisos de lectura y grabación 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
 

Comando chown
Sintaxis:          chown propietario archivo(s)
Descripción:    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)
Descripción:    El comando chgrp modifica el grupo de cada archivo. El grupo puede ser un número 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.
 

Redireccionamiento y encadenamiento de Comandos.
 
Cuando un comando comienza su ejecución, este normalmente espera que tres archivos estén ya abiertos: un standard input SI, un standard output SO y un diagnostic output (también llamado standard error SE). Un número llamado file descriptor está asociado con cada uno de estos archivos. Por convención 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 están inicialmente conectados a la terminal (0 al teclado, 1 y 2 a la pantalla de la terminal).
Como decíamos la standard input y la standard output están nuevamente asociadas a la terminal; sin embargo puesto que la standard input y la standard output están 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 características más importantes de sistema UNIX.
Supongamos que deseamos tener la salida del comando ps:
            $ ps
el programa process status escribirá esta información 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 información sobre la pantalla, pero debido a la notación especial ">posteridad", el shell conectó la SO a un archivo común llamado "posteridad". No veremos la salida del comando sobre la pantalla. El símbolo mayor ">" es un caracter especial del shell, que especifica que la SO de un comando debe ser dirigida a un archivo indicada por la próxima palabra en el comando.
Si el archivo ya existe, se destruye el contenido previo. Podemos verificar el resultado simplemente tipeando:
            $ cat posteridad
La utilidad más 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 más 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 algún mensaje de error, o algún tipo de diagnóstico dado por algún comando no salga sobre la SO, sino que sea redireccionado a un archivo, como es el caso de alguna compilación, debemos hacerlo de la siguiente forma:
            $ cc archi1 2>archi2
estamos asignando el file descriptor número 2 a un archivo.
La SI también 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, también lo podemos hacer de la forma:
            $ sh <comandos
el cual ejecutará los comandos que están dentro de este archivo. Un ejemplo más 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 combinación de ambas dentro de una línea 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 redirección de Entrada/Salida. La redirección de una salida graba la salida de un programam en un archivo, y la dirección de entrada causa que un archivo contenga la información 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 están en mi directorio (/usr/com1). Quizás el método más obvio es contar el número de líneas que aparecen cuando yo ejecuto el comando l ; pero también existe el comando wc, para lo cual una primer técnica podría ser la siguiente:
            $ l /usr/com1 >temparchi
            $ wc -l temparchi
            $ rm temparchi
 
Utilizando el método de pipe el cual se conecta a traves de la barra vertical "|", la línea de comando resulta más práctica:
            $ l /usr/com1 | wc -l
Ejemplos:
            $ who | lpr
imprime los usuarios que están actualmente logeados.
            $ who | grep juan | pr
muestra por pantalla y paginado, una lista de los usuarios cuyo nombre de login es "juan".

UN CLICK DE TU MANO
 
Nombre de usuario:
Contraseña:
CONOCE +
 
CONOCE MAS DE TU PC?
DIVIERTATE !!!!!!!
 
DIVIERTATE APRENDIENDO MAS SOBRE TU COMPUTADOR
TODO LOS TRUCOS PARA XP
 
CONOCE TODOS LOS TRUCOS DE WINDOWS XP, VISTA
WINDOWS 7 Y MUCHO MAS....... CONTACTENOS A TRAVES DE LOS CORREOS QUE APARESEN EN PANTALLA.
CONSTRUYA TU PROPIO PC
 
AQUI ESTA TODAS LAS HERRAMIENTAS NECESARIAS PARA QUE ARMES TU PC Y LO PUEDAS DISFRUTAR AL
MAXIMO
 
Este sitio web fue creado de forma gratuita con PaginaWebGratis.es. ¿Quieres también tu sitio web propio?
Registrarse gratis