Tag Archives: *N?X

umask

Umask (user mask) es un número octal que UNIX utiliza para determinar qué permisos NO asignar automáticamente a los nuevos archivos y directorios creados. Umask sólo restringe permisos; no concede permisos adicionales más allá de lo especificado por defecto.

La mayoría de los sistemas UNIX especifican el valor octal 666 (rw-rw-rw-) para la creación de archivos y el valor octal 777 (rwxrwxrwx) para la creación de directorios. Luego, el kernel utiliza el valor de umask asignado al usuario como máscara para quitar permisos a los definidos por defecto. Todo proceso tiene su umask, heredado del proceso padre del cual desciende.

Los valores más comunes para umask son 022, 027 y 077.
Normalmente el valor de umask se define en /etc/profile

# Set the user's umask
umask 022

aunque es posible setearlo en algún archivo de sesión como ~/.bash_profile, e incluso manualmente para la sessión actual. En todos los casos se utiliza el comando umask que es una función interna de Bash, y de otros shells como ksh y csh. (Si umask fuera un programa separado del shell no podríamos cambiar el valor de umask del proceso shell actual).

Cálculo de permisos

Los permisos de creación se obtienen realizando un AND binario entre el permiso por defecto y el complemento unario (NOT binario) de umask:

Suponiendo que quisiéramos averiguar los permisos de creación de archivos y directorios para umask 027:

permisos archivos:    666 & ~027
permisos directorios: 777 & ~027

Recordemos que el complemento unario puede obtenerse fácilmente reemplazando ceros por unos y unos por ceros:

Complemento unario:
 027 = 000 010 111
~027 = 111 101 000

Luego de obtener el complemento unario se procede a realizar el AND binario:

Archivos:
 666 = 110 110 110
~027 = 111 101 000
------------------
 640 = 110 100 000  <-- (rw-r-----)
Directorios:
 777 = 111 111 111
~027 = 111 101 000
------------------
 750 = 111 101 000  <-- (rwxr-x---)

En bash

$ umask 027
$ mkdir foo
$ touch bar
$ ls -l
drwxr-x---  2 xleo xleo    48 2009-08-19 01:09 foo
-rw-r-----  1 xleo xleo     0 2009-08-19 01:10 bar

Referencias

Tags: ,

Linux y Virus

Tags: ,

Unix ya se usaba en Junio de 1972

…el número de instalaciones Unix ha alcanzado el número de 10, y esperamos que aumente…

Ken Thompson y Dennis Ritchie, Junio 1972

ken_dennis

Tags: ,

Learn 10 good UNIX usage habits

Ten good habits to adopt are:

  1. Make directory trees in a single swipe.
  2. Change the path; do not move the archive.
  3. Combine your commands with control operators.
  4. Quote variables with caution.
  5. Use escape sequences to manage long input.
  6. Group your commands together in a list.
  7. Usexargsoutside offind.
  8. Know whengrepshould do the counting — and when it should step aside.
  9. Match certain fields in output, not just lines.
  10. Stop pipingcat’s.

Tags:

Breve historia de UNIX

Los origenes del sistema UNIX se remontan al desarrollo de un proyecto iniciado en 1968. Este proyecto fue realizado por General Electric, AT&T, Bell y el Instituto Tecnológico de Massachusetts, quienes llevaron a cabo el desarrollo de un sistema operativo con nuevos conceptos como la multitarea, la gestión de archivos o la interacción con el usuario. El resultado de estas investigaciones se bautizó como MULTICS. El proyecto resultó ser demasiado ambicioso, por lo que no llegó a buen fin y terminó abandonándose.

Posteriormente la idea de este proyecto se vuelve a retomar de la mano de Ken Thompson y Dennis Ritchie quienes lideraron un grupo de programadores, entre ellos a Rudd Canaday, en los laboratorios Bell, para desarrollar tanto el sistema de ficheros como el sistema operativo multitarea en sí. A lo anterior, agregaron un intérprete de órdenes (o intérprete de comandos) y un pequeño conjunto de programas. El proyecto fue bautizado UNICS, como acrónimo Uniplexed Information and Computing System, pues sólo prestaba servicios a dos usuarios (de acuerdo a Andrew Tanenbaum, era sólo a un usuario). La autoría de esta sigla se le atribuye a Brian Kernighan, ya que era un hack de MULTICS. Dada la popularidad que tuvo un juego de palabras que consideraba a UNICS un sistema MULTICS castrado (pues eunuchs, en inglés, es un homófono de UNICS), se cambió el nombre a UNIX, dando origen al legado que llega hasta nuestros días.

El código de UNIX estaba inicialmente escrito en lenguaje ensamblador, pero en 1973, Dennis Ritchie llevó a cabo un proyecto para reescribir el código de UNIX en lenguaje C. UNIX se convirtió así en el primer sistema operativo escrito en lenguaje de alto nivel. Con este nuevo enfoque fue posible portar al sistema operativo a otras máquinas sin muchos cambios, solamente efectuando una nueva compilación en la máquina de destino. Gracias a esto la popularidad de UNIX creció y permitió asentar la “filosofía UNIX”.

Inicialmente UNIX fue considerado como un proyecto de investigación, hasta el punto de distribuirse de forma gratuita en algunas universidades, pero después la demanda del producto hizo que los laboratorios Bell iniciaran su distribución oficial.

Las dos variantes fundamentales: Sistema V y BSD

La Universidad de California en Berkeley comenzó sus desarrollos en el campo UNIX, añadiendo nuevas características y haciendo modificaciones. Así, en 1975 Ken Thompson promovió el desarrollo y sacó a la luz su propia versión de UNIX, conocida como BSD. Desde entonces BSD pasó a convertirse en la gran competidora de los laboratorios Bell. En esta versión contribuyeron Bill Joy y Chuck Haley, sus contribuciones son numerosas pero entre ellas destacan un compilador de Pascal, el editor vi, el editor ex y el Shell C.

Más tarde, a principios de los 80, se produjo el lanzamiento de Sistema III, la primera versión comercial del sistema operativo UNIX. En 1983 AT&T introdujo el UNIX Sistema V versión 1.

EN 1983 Berkeley lanza una poderosa versión UNIX conocida como BSD versión 4.2 Entre sus características principales se encuentran la gestión de archivos muy sofisticada así como la posibilidad de trabajo en redes basadas en los protocolos TCP/IP ( los mismos que hoy en día se utilizan en internet ). Esta versión de UNIX la adoptaron varios fabricantes, entre ellos Sun Microsystems, lo que dió lugar al conocido sitema SunOS.

En aquellos momentos las diferencias entre versiones de UNIX eran muy grandes, lo que provocaba verdaderos quebraderos dde cabezas para los programadores.

Familias de UNIX

AT&T: la familia que tuvo su origen en el UNIX de AT&T. Considerada la familia UNIX “pura” y original. Sus sistemas operativos más significativos son UNIX System III y UNIX System V.

BSD: familia originada por el licenciamiento de UNIX a Berkely. BSD incorpora propiedad intelectual no originaria de AT&T, la primera implementación de los protocolos TCP/IP que dieron origen a Internet.

Solaris: de Sun Microsystems. Uno de los sistemas operativos Unix más difundido en el entorno empresarial y conocido por su gran estabilidad. Originalmente se llamó SunOS, pero posteriormente, debido a la presentación de UNIX Sistema V se desarrolló una nueva versión a la que se le llamó Solaris. Existen versiones de Solaris para Power PC, Intel y Sparc. Parte del código fuente de Solaris se ha liberado con licencia de fuentes abiertas (OpenSolaris).

AIX: de IBM. El UNIX “propietario” de IBM ha cumplido 20 años de vida en el 2006 y continúa en pleno desarrollo, con una perceptible herencia del mainframe en campos como la virtualización o la RAS de los servidores, heredada de sus “hermanos mayores”.

HP-UX: de Hewlett-Packard. Este sistema operativo también nació ligado a las computadoras departamentales de este fabricante. También es un sistema operativo estable que continua en desarrollo.

A/UX: Implementación de UNIX de Apple

IRIX: Versión de UNIX desarrollada por Silicon Graphics para sus estaciones basada en UNIX Sistema V version 4.

Xenix: familia derivada de la adquisición de los derechos originales de AT&T primero por parte de Microsoft y de esta los vendió a SCO.

SCO UNIX: Es la versión de Santa Cruz Operation (SCO), versión de UNIX Sistema V diseñada para plataformas Intel.

GNU/Linux: En 1983, Richard Stallman anunció el Proyecto GNU, un ambicioso esfuerzo para crear un sistema similar a Unix, que pudiese ser distribuido libremente. El software desarrollado por este proyecto -por ejemplo, GNU Emacs y GCC – también han sido parte fundamental de otros sistemas UNIX. En 1991, cuando Linus Torvalds empezó a proponer el kernel Linux y a reunir colaboradores, las herramientas GNU eran la elección perfecta. Al combinarse ambos elementos, conformaron la base del sistema operativo (basado en POSIX) que hoy conocemos como GNU/Linux o simplemente Linux. Las distribuciones basadas en el kernel, el software GNU y otros agregados entre las que podemos mencionar a Red Hat Linux y Debian GNU/Linux se han hecho populares tanto entre los aficionados a la computación como en el mundo empresarial. Obsérvese que GNU/Linux tiene un origen independiente, por lo que se considera un ‘clónico’ de UNIX y no un UNIX en el sentido histórico.

Arbol de familia de sistemas UNIX

Arbol de familia de sistemas UNIX

Unix History

http://www.levenez.com/unix/

Tags: ,