lunes, 12 de diciembre de 2022

Unix



UNIX




UNIX


UNIX es el punto de partida para numerosos sistemas operativos. Es la parte que tienen en común el sistema original con las distintas distribuciones que se han ido lanzando basadas en Linux, por ejemplo. De esta manera, Linux es un SO basado en UNIX, y desde Linux se derivan numerosas distribuciones que seguramente te suenen (Ubuntu, Fedora, Mint, Debian…). Así pues, UNIX es el sistema operativo original del que se ha tomado una base para crear Linux (entre otros), y a partir de Linux se personalizan diferentes sistemas operativos para crear las distribuciones, que ya son versiones específicas que indagan en ciertos aspectos.

Por ello, UNIX es una base de código propietario, es decir, no libre, de la cual se extrae y utiliza parte de él para crear código libre. Las distintas distribuciones basadas en Linux (y, por lo tanto, en UNIX), se solidarizan con el usuario sin conocimientos en programación, ya que ofrecen interfaces visuales (GUI) para que el usuario medio pueda realizar todas o casi todas las instrucciones mediante interfaz y no mediante líneas de comandos.


sirve para dar vida a un ordenador. Es un sistema operativo, sin esto no es posible la interactuación entre usuario y máquina. Hoy en día, UNIX es utilizado en una gran cantidad de dispositivos, tanto directa como indirectamente (los que están basados en él), por lo que es un apoyo completamente esencial en la tecnología actual. Sistemas operativos como Linux y Android están basados en UNIX. Linux se utiliza en gran medida en entornos profesionales de servidores, programación y computación, mientras que Android se utiliza en la gran mayoría de smartphones en todo el mundo.

Además de lo ya comentado, UNIX sirvió en el pasado como ejemplo de cómo se deben hacer las cosas. El sistema operativo incorporó un orden jerárquico de archivos, la posibilidad de crear cuentas con distintos permisos, un sistema de archivos para almacenar y manejar toda la información, un conjunto de aplicaciones que desarrollan tareas específicas y, juntas, conforman el SO… Fue una herramienta clave para establecer qué debe ser un buen sistema operativo, y es por ello el éxito que tuvo.

UNIX sirve para tener una base sobre la que crear otros sistemas operativos con características similares pero personalizados. Si lo asemejamos al mundo de los smartphones, UNIX sería como el Android original y las capas de personalización de los fabricantes (MIUI de Xiaomi, ZenUI de ASUS, EMUI de Huawei…) serían las distribuciones creadas a partir de Linux y, por lo tanto, a partir de UNIX obviamente.

El uso de UNIX como SO implica el no tener una interfaz gráfica de usuario, todas las instrucciones se deben hacer por línea de comandos, por lo que es complicado atraer a nuevos usuarios en masa. Al igual que MS-DOS se ejecuta en comandos desde la CMD, UNIX viene a ser lo mismo en ese sentido.







El sistema de archivos UNIX


Directorio raiz (/)

Todos los archivos y directorios de un único directorio denominado directorio raiz, o root, el cual se representa por el simbolo /. En el caso de que en el sistema tengamos varios dispositivos físicos de almacenamiento secundario (normalmente discos), todos deben depender del directorio raiz y el usuario tratará cada uno de los discos como un subdirectorio que depende del directorio raiz (root)


  • Directorio de conexión (~)
Se trata de un directorio que el administrador del sistema crea o asigna cuando da de alta a un usuario. El propósito de este directorio es suministrar un punto en la jerarquía de directorios del sistema de archivos UNIX a partir del cual el usuario puede almacenar y estructurar sus propios archivos y directorios. Este directorio suele ser tomado como directorio de trabajo inicial cuando el usuario establece una sesión de trabajo. Se representa mediante el símbolo ~.
  • Directorio de trabajo (.)
El directorio de trabajo o act el directorio en el que nos encontramos operando en cada momento de la sesión. Se representa mediante un punto .

Asociado al concepto de directorio de trabajo esta el concepto de directorio padre, que se representa mediante .. y que sirve para denotar al directorio del que depende el directorio de trabajo. La manera de conocer en todo momento el directorio de trabajo es a través de la orden pwd (print working directory). Su sintaxis es:

pwd

Ejemplo:
Apis:~$ pwd
/users/so/so00
En este ejemplo, el directorio "." y ".." serían respectivamente /users/so/so00, y /users/so.
  • Trayectorias o nombres de camino
Los archivos se identifican en la estructura de directorios por lo que se conoce como nombre de camino, trayectoria o path name. Fijándonos en la figura 2.1. distinguiremos las tres formas existentes para refenciar un archivo:
Camino absoluto o completo. Consistente en el conjunto de nodos por los que hemos de pasar, partiendo del directorio raíz, para llegar al archivo o directorio que queremos referenciar. Va precedido siempre por el caracter /. Identifica de modo único a un directorio o archivo dentro del sistema de archivos.
Ejemplo: /usr/bin/troff
Camino relativo. Tenemos dos formas de acceder a un archivo usando una trayectoria relativa, según tomemos en consideración el directorio de trabajo o el directorio de conexión:

1. Respecto del directorio de trabajo:

Suponiendo que nuestro directorio de trabajo es /usr, el camino para llegar al archivo /usr/bin/troff sería bin/troff.

NOTA: Para el camino relativo se pueden utilizar las cadenas "." y "..", permitiéndose entonces ascender en el árbol de directorios para referenciar archivos de modo relativo.

Por ejemplo, si el directorio de trabajo es el /usr/bin/troff y queremos referenciar el archivo /usr/local/bin , usando una trayectoria relativa, escribiríamos ../../local/bin.
2. Respecto del directorio de conexión.
Suponiendo que nuestro directorio de conexión actual es /users/ssp, la referencia al archivo o directorio anterior seria ~/../../usr/bin/troff
  • Nombre de archivo
El nombre de un archivo en UNIX puede tener hasta 255 caracteres y aunque no existe el concepto de extensión de un archivo es posible incluir el carácter . tantas veces como se desee, la única consideración a tener en cuenta en este sentido, es la referente a los nombres de archivo cuyo primer carácter es . a los que históricamente se denominan archivos ocultos, ya que por defecto no son mostrados por la orden ls. Una denominación más precisa para estos archivos sería la de archivos sin interés habitual, ya que se suelen utilizar para configurar aplicaciones y normalmente el usuario no tiene interés en verlos.

Es importante tener en cuenta que los intérpretes de órdenes de UNIX (denominados shell) consideran distintos los caracteres en mayúsculas de los caracteres en minúscula. Por lo tanto no son equivalentes los archivos: programa.c y Programa.c.

Ejemplos de nombres de archivos:

programa, programa.c, programa.c.primera_version, base_datos.1992

Expansión de nombre de archivo: caracteres comodín y especiales

Existen en UNIX un conjunto de caracteres cuya combinación permite que el intérprete de órdenes los sustituya por un grupo de símbolos. Estos caracteres se denominan caracteres comodín. De entre los existentes destacamos los siguientes:
* Representa cualquier conjunto de símbolos. Por ejemplo, sabiendo que la orden lp permite imprimir archivos:
Apis:~$ lp * # imprime todos los archivos del directorio de trabajo
Apis:~$ lp ab* # imprime los archivos que empiecen por ab
? Representa cualquier carácter.
Apis:~$ lp a?b # imprime los archivos cuyos nombres tengan tres caracteres, el primero sea una a y el último una b
[...] Representan un símbolo del conjunto.
Apis:~$ lp ab[123] # imprime (si existen) los archivos ab1, ab2 y ab3


[!...] Representa un símbolo NO contenido en el conjunto.

Apis:~$ lp [!ab]* # imprime todos los archivos cuyo nombre NO comienza por ni por a ni por b
Aparte de los caracteres comodín, existen otros caracteres cuyo significado es especial para la shellEntre estos destacamos:
< , > , | , &
cuyo significado se explicará en prácticas posteriores.
De modo general para todos los caracteres especiales y comodín, se habilitan distintas maneras para forzar a que la shell los interprete literalmente como los caracteres que son. Los modos de escapar los caracteres especiales y comodín son los siguientes:
  • Utilizando el carácter \ se pueden escapar caracteres individualmente.
  • Cuando se quiere escapar cadenas completas se recurre a encerrarlos entre comillas '.

  •  

     
     
     

    Apis:~$ lp `test?&' #imprime el archivo con nombre test?&
    Apis:~$ lp \*a #imprime el archivo de nombre *a
     

    Niveles de acceso a la información

    Todo usuario tiene la posibilidad de crear, modificar y borrar archivos. Cada archivo tiene tres modos de acceso diferentes:
    • Acceso para lectura "r". Se permite acceder para consultar el contenido del archivo sin modificarlo.
    • Acceso para escritura "w". Se permite modificar el contenido del archivo.
    • Acceso para ejecución "x". El archivo puede ser ejecutado (por ejemplo un programa compilado).
    En los sistemas multiusuario se hace necesario controlar el acceso a la información asegurando su privacidad. Como ya se ha visto anteriormente, cada usuario del sistema tiene un número identificador (UID) único dentro del sistema y también pertenece a un grupo de usuarios identificado unívocamente dentro del sistema por un número (GID). A estos números se les asocia unos nombres lógicos que se denominan login en el caso del UID y nombre de grupo en el caso del GID. Por lo tanto, una manera de identificar la información perteneciente a un usuario (el caso que nos ocupa son sus archivos), es que cada archivo lleve asociado el identificador de usuario propietario de la información y la del grupo a que este usuario pertenece.

    De la combinación de los tres modos de acceso explicados anteriormente rwx y los atributos propietario de un archivo y grupo al que pertenece dicho propietario, surgen los denominados niveles de acceso a la información. Estos son tres:

    • Nivel de usuario. Son los modos de acceso a la información permitidos para el propietario del archivo.

    •  
    • Nivel de grupo. Modos de acceso a la información permitidos para cualquier usuario que pertenezca al mismo grupo que el del propietario del archivo.

    •  
    • Nivel de otros. Modos de acceso a la información permitidos para los usuarios del sistema que ni son el propietario del archivo ni pertenecen a su mismo grupo.

    Listado de archivos

    La orden ls se utiliza para visualizar el contenido de un directorio. Su sintaxis es la siguiente:
    ls [parámetros] [path_name]
    Si no indicamos path_name, se presentará el contenido del directorio de trabajo actual. Ejemplo:
    Apis:~$ cd /bin
    Apis:~$ ls c*
    c89      cd      chown   colcrt    cp       csplit
    cal      cdoc    chsh    colrm     cpio     ct
    calendar cdsuf   cksum   comm      cpp      ctod
    capsar   chfn    clear   command   crashdc  cu
    cat      chgrp   cmp     compress  crontab  cut
    cc       chmod   col     cord      csh
    Según los parámetros utilizados en la orden (campo parámetros en la sintáxis), obtendremos distintos tipos de información acerca de los archivos. Especialmente relevantes son los siguientes:
    -a permite visualizar los archivos ocultos (aquellos que empiezan por .).

    -F introduce el carácter / tras los nombres de los subdirectorios listados y un * tras los archivos ejecutables.

    -l lista los archivos en formato largo, incluyendo información adicional completa acerca de cada uno de ellos.

    No hay comentarios:

    Publicar un comentario

    Imagenes Ubuntu 22.04 y enlace

     Demostración ubuntu 22.04 Ubuntu 22.04 en un ordenador HP Interfaz Ubuntu 22.04  https://releases.ubuntu.com/22.04/